#include <graphics.h>
#include<conio.h>
#include<stdio.h>
#include<time.h>//随机数函数的头文件
#define kuan 1000//宽
#define chang 600//长 在这里定义的是窗口的大小
#define g 0.2//重力加速度
float x = 100;
float y = 500;//小球的坐标
int fenshu = 0;//分数
int JX( int Y ,int L)//障碍物生成
{
static int Jx1 = 600;//矩形的坐标
static int Jx2 = 640;
fillrectangle(Jx1, 0, Jx2,Y);
fillrectangle(Jx1, Y+L, Jx2, kuan);//上下两个矩形
Jx1 -= 2;
Jx2 -= 2;//从右向左移动
if (Jx2 <= 0)//当一轮移动完毕,返回12,并且再生成一轮障碍物
{
Jx1 = 600;
Jx2 = 640;
return 12;
}
if (((x + 20 > Jx1) && y + 20 < Y && (x - 20) < Jx2) || ((x + 20 > Jx1) && y + 20 > Y + L && (x - 20) < Jx2))
{
y = 500;//碰到了障碍物就归回原位
fenshu = 0;//分数也得归零
}
}
int main()
{
initgraph(chang, kuan);//首先生成窗口
float Dy = 0;//位移差
char aa = 0;
int Y1 = 100;//缺口的顶
int L= 300;//缺口的高度
while (1)
{
settextstyle(35,0, _T("黑体"));
TCHAR s[5];
_stprintf_s(s, _T("%d"), fenshu); // 高版本 VC 推荐使用 _stprintf_s 函数
outtextxy(x-8, y-18, s);//这一段就是把字生成在球上
Sleep(10);
Dy += g;//位移量的计算
y += Dy;//坐标的计算
//这一段基于高中物理公式
if (_kbhit())//当按键按下的时候才会进入,这样就不会被卡住
{
aa = _getch();
if (aa == ' ')
Dy -= 7;//位移量向上增加也就是-7
}
if ((y >= kuan - 20) || (y <= 20))//如果碰到底边或者顶部
{
y = 500;//也是死了
Dy = 0;
fenshu = 0;
}
cleardevice();//清屏
fillcircle(x, y, 20);//定义一个小球
if (JX(Y1, L) == 12)//如果一关过了
{
L = 150 + rand() % 150;
Y1 = rand() % (1000 - L);//那么就可以利用随机函数生成下一个关口
fenshu+=1;
}
}
}
总是一味地上网课,看见C语言都恶心,于是干脆干些不务正业的事让自己开心开心。
本游戏基于EasyX制作,参考了B站上面的视频,当然也并没有全部参考,毕竟参考了就写不出这样正宗的 屎山代码
程序写的确实不好,没有办法,确实是没有天赋,还是在缓慢的学习中。