小球和方块的碰撞判断和方块的随机速度、随机高度。
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
int main()
{
int width, height; // 游戏画面大小
width = 600; // 宽
height = 400; // 高
initgraph(width,height); // 重建一个画布
float ball_x,ball_y,radius; // 圆心坐标 半径
float ball_vy,gravity; //y方向速度,重力加速度
radius = 20;
ball_x = width/4; // 小球x 坐标
ball_y = height-radius; // 小球y坐标
ball_vy = 0; // 初始y方向速度为0
gravity = 0.6; // 重力加速度
float rect_left_x,rect_top_y,rect_width,rect_height;
float rect_vx;
rect_height = 100;
rect_width = 20;
rect_left_x = width*3/4;
rect_top_y = height - rect_height;
rect_vx = -3;
while (1)
{
if(kbhit()) // 当按键时
{
char input = getch(); //获得字符
if (input==' ') //当按下空格键时
{
ball_vy = -16; // 给小球一个向上的加速度
}
}
ball_vy = ball_vy + gravity; // 根据重力速度更新小球y方向速度
ball_y = ball_y + ball_vy; // 根据小球y方向速度更新其y坐标
if (ball_y>=height-radius) // 如果小球落到地面上
{
ball_y = 0; // 速度为0
ball_y = height-radius; // 规范其y坐标,避免落到地面上
}
rect_left_x = rect_left_x + rect_vx; // 方块往左运动
if (rect_left_x<=0) // 如果方块跑到最左边
{
rect_left_x=width; // 在最右边重新出现
rect_height = rand() % int (height/4)+height/4; // 设置方块随机高度
rect_vx = rand()/float(RAND_MAX)*4-7; // 设置方块随机速度
}
if ((rect_left_x<=ball_x+radius)
&&(rect_left_x+rect_width>=ball_x-radius)
&& (height-rect_height<=ball_y+radius))
{
Sleep(100);
}
/* (rect_left_x<=ball_x+radius) // 方块最左边和小球最右边接触
(rect_left_x+rect_width>=ball_x-radius) // 方块最右边和小球最左边接触
(height-rect_height<=ball_y+radius) // 方块最上边边和小球最下边接触 */
cleardevice(); // 清空画面
fillrectangle(rect_left_x,height - rect_height,rect_left_x+rect_width,height); // 绘制方块
fillcircle(ball_x,ball_y,radius); // 绘制小球
Sleep(10); // 暂停10毫秒
}
_getch(); // 等待按键
closegraph(); // 关闭窗口
return 0;
}
联系客服