本文为大家分享了C语言反弹球游戏的具体代码,供大家参考,具体内容如下
这是利用函数写的C语言小游戏,用来检验自己的学习成果
反弹球的实现主要有几个子函数组成
问题也在于如何实现小球的下落,以及碰撞得分等情况
#include
#include
#include
//定义全局变量
int high,width; //游戏边界
int ball_x,ball_y; //小球位置
int ball_vx,ball_vy; //小球速度
int position_x,position_y; //挡板中心坐标
int radius; //挡板半径
int left,right; //键盘左右边界
int ball_number; //反弹小球次数
int block_x,block_y; //方块的位置
int score; //消掉方块的个数
void HideCursor() //隐藏光标
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void gotoxy(int x,int y) //光标移动到(x,y)位置,清屏函数
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle,pos);
}
void startup() //数据初始化
{
high=18; //定义边界
width=26;
ball_x=0; //小球坐标
ball_y=width/2;
ball_vx=1; //小球速度方向
ball_vy=1;
position_x=high-1; //挡板中心坐标
position_y=width/2;
radius=5; //挡板半径
left=position_y-radius; //键盘边界
right=position_y+radius;
block_x=0; //方块位置
block_y=width/2-4;
ball_number=0; //反弹小球个数
score=0; //消掉小球个数
HideCursor();
}
void show() //显示界面
{
gotoxy(0,0);
int i,j;
for(i=0;i<=high;i++)
{
for(j=0;j<=width;j++)
{
if((i==ball_x) && (j==ball_y)) //输出小球
printf("0");
else if((i==block_x)&& (j==block_y)) //输出滑块 //输出下边界
printf("@");
else if(i==high) //输出下边界
printf("-");
else if(j==width) //输出右边界
printf("|");
else if((i==high-1)&&(j>left)&&(j
printf("*");
else printf(" ");
}
printf("\n");
}
printf("反弹小球次数:%d\n",ball_number);
printf("消掉小球个数:%d\n",score);
}
void updateWithoutInpute() //与用户输入无关的更新
{
if(ball_x==position_x-1) //小球撞到挡板
{
if((ball_y>=left)&&(ball_y<=right))
{
ball_number++;
//printf("\a");
}
else
{
printf("游戏失败\n");
system("pause");
exit(0);
}
}
ball_x = ball_x + ball_vx; //小球向速度方向移动
ball_y = ball_y + ball_vy;
if((ball_x==0) || (ball_x==high-2)) //小球撞到上下边界
ball_vx=-ball_vx;
if((ball_y==0) || (ball_y==width-1)) //小球撞到左右边界
ball_vy=-ball_vy;
if((block_x==ball_x) && (block_y==ball_y)) //小球撞到滑块
{
block_y=rand()%width-1;
score++;
}
Sleep(120);
}
void updateWithInpute() //与用户输入有关的更新
{
char input;
if(kbhit())
{
input=getch();
if((input=='a')&&(left>=0))
{
position_y--;
left=position_y-radius; //键盘边界
right=position_y+radius;
}
if((input=='d')&&(right
{
position_y++;
left=position_y-radius; //键盘边界
right=position_y+radius;
}
}
}
int main()
{
system("color 2f"); //改变控制台颜色
startup();
while(1)
{
show(); //显示界面
updateWithoutInpute(); //与用户输入无关的更新
updateWithInpute(); //与用户输入有关的更新
}
}
小编之前也收藏了一段代码:C语言实现小球反弹,分享给大家
#include
#include
#include
void ball()//1.画出小球
{
printf("\t\t\t◎");
}
int main()
{
int h=20;//球的高度初始化为20
int i,j;//i是用来确定球的起点与终点,j是确定球的位置
int der=1;//判断等于1时球下落,为0时球上升
while(h>0)//高度大于0时,球都在动(当高度为0时停止)
{
if(der==1)
{
for(i=20-h;i<20;i++)//确定起点和终点 下落过程
{
system("cls");
for(j=0;j<=i;j++)//确定球的位置
{
printf("\n");
}
ball();
Sleep(50);
}
der=0;
}
else
{
h=h*8/9;//强起来高度是原来的9分之8
for(i=20;i>=20-h;i--)//确定起点和终点 上升过程
{
system("cls");
for(j=0;j<=i;j++)//确定球的位置
{
printf("\n");
}
ball();
Sleep(50);
}
der=1;
}
}
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。