c语言的小游戏

本文介绍了一个使用C语言实现的简易弹球游戏程序。通过键盘控制板子左右移动,使小球反弹并保持游戏进行。文章提供了完整的源代码,并介绍了关键函数如移动板子和小球的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include
<conio.h>
#include
<time.h>
#include
"consoleout.h"
#pragma comment(lib,"consoleout.lib")
//板的当前位置
int g_nBarX = 4;
int g_nBarY = 20;
//球的当前位置
int g_nBallX = g_nBarX + 4;
int g_nBallY = g_nBarY - 2;
//速度(g_nBallVx,g_nBallVy)
int g_nBallVx = 1;
int g_nBallVy = -1;

//功能:移动溜板
void BarMove(char cC)
{
    
static int nOldX = g_nBarX;
    
static int nOldY = g_nBarY;
    
if(cC == 'a'||cC == 'A')
    
{
        g_nBarX 
= nOldX - 5;
    }

    
else if(cC == 'd'||cC == 'D')
    
{
        g_nBarX
= nOldX + 5;
    }

    
//防止出右边界
    if(g_nBarX > 58)
    
{
        g_nBarX 
= 58;
    }

    
//防止出左边界
    if(g_nBarX < 2)
    
{
        g_nBarX 
= 2;
    }

    CreateSmWindow(
"",nOldX,nOldY,10,3,0,0);
    CreateSmWindow(
"",g_nBarX,g_nBarY,10,3,14,0);
    nOldX 
= g_nBarX;
}

//功能:绘制小球的弹动
void BallMove()
{
    
static int nOldX = g_nBallX;
    
static int nOldY = g_nBallY;
    
if(g_nBallX == 2||g_nBallX == 76)
    
{
        g_nBallVx 
= -g_nBallVx;
    }

    
if(g_nBallY == 1||g_nBallY== 26)
    
{
        g_nBallVy 
= -g_nBallVy;
    }

    g_nBallX 
= nOldX + g_nBallVx;
    g_nBallY 
= nOldY + g_nBallVy;
    MoveCursorTo(nOldX,nOldY);
    printf(
" ");
    MoveCursorTo(g_nBallX,g_nBallY);
    printf(
"");
    nOldX 
= g_nBallX;
    nOldY 
= g_nBallY;
    MoveCursorTo(
0,29);
    printf(
"球:位置:(%d,%d)",g_nBallX,g_nBallY);
    sleep(
100);
}


//功能:判断球与板的位置,如果碰到就反弹球
//返回值:改变运行方向
void Pop()
{
    
//判断小球落在板上
    if(g_nBarX < g_nBallX && g_nBallX < g_nBarX + 20 && g_nBallY > g_nBarY - 2)
    
{
        g_nBallVy 
= -g_nBallVy;
    }

    
while(g_nBallY>20)
    
{
    
     printf(
"球掉了 ");
     
break;
    }

}

void MainLoop()
{
    
int i;
    
while(1)
    
{
        
if(_kbhit() == 1)
        
{
            
char c = _getch();
            
if(c ==27)
            
{
                printf(
"Game Over! ");
                 
break;
            }

            BarMove(c);
        }

        
else if(g_nBallY==20)
        
{    
            MoveCursorTo(
18,9);
            printf(
"Game Over! ");
            MoveCursorTo(
18,10);
            printf(
"请输入0和1选择");
            scanf(
"%d",&i);
            
if(i!=1)
            
{
              
break;
           
            }

            
else
            

                BallMove();
                  Pop();
                sleep(
5);
                
if(g_nBallY==20)
                
{
                 BallMove();
                    Pop();
                 sleep(
5);
                }

                
                
            }

            
          
        }


        BallMove();
        Pop();
        sleep(
5);}

    
}

void main()
{
    CreateSmWindow(
"",0,0,40,28,14,0);
    MainLoop();
}

 

该程序实现了  一个 小球的 简单碰撞  

 

运行时,需要两个库函数

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值