#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;
}
C语言游戏开发之弹跳的小球(普通)
最新推荐文章于 2023-03-06 20:22:25 发布