c语言的小游戏

#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();
}

 

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

 

运行时,需要两个库函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值