C语言游戏开发之弹跳的小球(普通)

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<conio.h> 
int high,width;
int ball_x,ball_y;
int ball_vx,ball_vy;
int left,right,ridus;
int position_x,position_y;
int ball_number,score;
int block_x,block_y;
void gotoxy(int x,int y)
{
 HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
 COORD pos;
 pos.X=x;
 pos.Y=y;
 SetConsoleCursorPosition(handle,pos);
}
void startup()
{
 high=25;
 width=40;
 ball_x=0;
 ball_y=width/2;
 ball_vx=1;
 ball_vy=1;
 position_x=high;
 position_y=width/2;
 ridus=10;
 left=position_y-ridus;
 right=position_y+ridus;
 ball_number=0;
 score=0;
 block_x=0;
 block_y=width/2+1;
}
void show()
{
 gotoxy(0,0);
 int i,j;
 for (i=0;i<=high+1;i++)
 {
  for (j=0;j<=width;j++)
  if (i==ball_x && j==ball_y) printf("O");
  else if (i==high+1) printf("-");
  else if (j==width) printf(" |");
  else if (i==high && j>=left && j<=right) printf("*");
  else if (i==block_x && j==block_y) printf("B");
  else printf(" ");
  printf("\n");
 }
 printf("反弹到的小球数目是%d\n",ball_number);
 printf("你的的分数是%d\n",score);
}
void updatewithoutinput()
{
 if (ball_x==high-1)
 {
  if (ball_y<=right && ball_y>=left) 
  {
   ball_number+=1;
   printf("\a");
   }
   else 
   {
    system("pause");
    exit(0);
  }
 }
 if (ball_y==block_y && ball_x==block_x)
 {
  score++;
  block_y=rand()%width;
 }
 ball_x+=ball_vx;
 ball_y+=ball_vy;
 if (ball_x==0 || ball_x==high-1) ball_vx=-ball_vx;
 if (ball_y==0 || ball_y==width-1) ball_vy=-ball_vy;
 Sleep(50);
}
void updatewithinput()
{
    char c;
 if (kbhit())
 {
  c=getch();
  if (c=='A' || c=='a')
  {
   position_y--;
   left=position_y-ridus;
   right=position_y+ridus;
  }
  else if (c=='D'||c=='d')
  {
   position_y++;
   left=position_y-ridus;
   right=position_y+ridus;
  }
 }
}
void HideCursor()
{
 CONSOLE_CURSOR_INFO cursor_info={1,0};
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
int main()
{
 HideCursor();
 startup();
 while (1)
 {
  show();
  updatewithoutinput();
  updatewithinput();
 }
 return 0;
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值