//接小球游戏
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <windows.h>//包含system("cls")函数与_getch()
#include <conio.h>//包含_kbhit()
#include <time.h>//包含时间函数
//全局变量
int high, width;//游戏画面尺寸
int ball_x, ball_y;//小球坐标
int ball_vx, ball_vy;//小球速度
int ban_x, ban_y;//板中心坐标
int radius;//挡板半径
int left,right;//挡板左右边界
int ball_number;//记录小球与板子碰撞的次数
int f;//控制游戏是否结束
void show();//显示函数
void noinput();//无关用户操作的计算
void input();//有关用户操作的计算
void open();//初始化操作
int main()
{
open();
while (f==0)
{
input();
noinput();
show();
}
printf("游戏结束");
}
void show()//显示函数
{
system("cls");
int i, j;
for (i = 0; i <= high+1; i++)
{
for (j = 0; j <=width; j++)
{
if ((i == ball_x) && (j == ball_y))
printf("0");//显示小球
else if (i == high + 1)
printf("-");//显示下边界
else if (j == width)
printf("|");//显示右边界
else if ((i == high) && (j >= left) && (j <= right))
printf("*");//显示挡板
else
printf(" ");
}
printf("\n");
}
printf("反弹小球数为%d", ball_number);
}
void noinput()//无关用户输入处理函数
{
//根据速度小球位移
ball_x = ball_x + ball_vx;
ball_y = ball_y + ball_vy;
//实时更新板子位置
left = ban_y - radius;
right = ban_y + radius;
//碰边界反弹,改变速度方向
if (ball_x == high)//游戏结束条件以及碰撞板子分数记录以及方向改变
{
if (ball_y >= left && ball_y <= right)
{
ball_number++;
ball_vx = -ball_vx;
}else
f = 1;
}
if (ball_x == 0)//碰到墙上小球方向改变
ball_vx = -ball_vx;
if ((ball_y== width-1) || (ball_y == 0))
ball_vy = -ball_vy;
if(ball_number<10)//控制小球速度
Sleep(100);
if(ball_number<=20)
Sleep(50);
if(ball_number <=30)
Sleep(30);
}
void input()//有关用户输入处理函数
{
char input1;
while (_kbhit())//判断是否有输入
{
input1 = _getch();
if ((input1 == 'd'|| input1 == 'D')&&(right<width-1))
{
ban_y++;
}
if ((input1 == 'a' || input1 == 'A')&&(left>0))
{
ban_y--;
}
}
}
void open()//初始化函数
{
high = 20;
width = 30;
ball_x = 1;
ball_y = width / 2;
ball_vx = 1;
ball_vy = 1;
ban_x = high;
ban_y = width / 2;
radius = 5;
left = ban_y - radius;
right = ban_y + radius;
ball_number = 0;
f = 0;
}
小球弹跳游戏
最新推荐文章于 2024-11-09 10:41:03 发布
本文介绍了使用C++编写的简单反弹小球游戏,涉及球体移动、边界碰撞检测、挡板控制和用户键盘输入。程序通过`ball_x`和`ball_y`跟踪小球位置,`ball_vx`和`ball_vy`控制速度,实现了游戏的基本规则。
摘要由CSDN通过智能技术生成