是男人就下一百层 C语言实现
本人水平非常有限,该项目中还存在比较多的bug与不足,希望大家积极交流并反馈,感谢!
一.实现功能
- 左右方向键控制移动
- Easyx 图形化实现
- 血量,分数显示
- 速度随分数增长递增
- 重力加速度实现
二.现有缺陷
- 排行榜头像固定,仅供娱乐,美观。
- 游戏模式单一。
- 游戏音效存在延时现象
三.部分界面展示
四.部分代码展示
// 与键盘输入无关的位置更新
void updateWithoutInput()
{
//板子上升运动
for (index = 0; index < 11; index++)
{
brick[index].y -= vybrick;
}
// 人物竖直方向运动
for (index = 0; index < 11; index++)
{
// 在板上
if ((man.y <= brick[index].y - yman + vyman ) && (man.y >= brick[index].y - yman - vyman) && (man.x > brick[index].x - xman + 6) && (man.x < brick[index].x + xbrick - xman / 2))
{
if (brick[index].type == 1 || (brick[index].type == 2 && brick[index].flag == 0))
{
man.y -= vybrick;
man.flag = 1;
if (brick[index].flag == 1)
msType = 1;
brick[index].flag = 0;
}
else if (brick[index].type == 2 && brick[index].flag == 1)
{
man.hp -= 40;
man.y -= vybrick;
man.flag = 1;
msType = 2;
brick[index].flag = 0;
}
else if (brick[index].type == 3)
{
man.y -= jump;
man.flag = 0;
msType = 3;
brick[index].flag = 0;
}
else if (brick[index].type == 4)
{
if (man.x > 25 && man.x < 425 - xman)
{
man.x -= fx;
}
man.y -= vybrick;
man.flag = 1;
if (brick[index].flag == 1)
msType = 4;
brick[index].flag = 0;
}
else if (brick[index].type == 5)
{
if (man.x > 25 && man.x < 425 - xman)
{
man.x += fx;
}
man.y -= vybrick;
man.flag = 1;
if (brick[index].flag == 1)
msType = 4;
brick[index].flag = 0;
}
else if (brick[index].type == 6 && brick[index].flag == 1)
{
man.y -= vybrick;
if (brick[index].flag == 1 && brick[index].breakTime == 0)
msType = 5;
man.flag = 1;
brick[index].breakTime++;
if (brick[index].breakTime == 10)
{
brick[index].flag = 0;
brick[index].breakTime = 0;
}
}
vyman = 4;
break;
}
// 不在板上
man.flag = 0;
}
// 重力加速度实现
if (man.flag == 0)
{
man.y += vyman;
vyman += 0.1;
}
};
// 与键盘输入有关的位置更新
void updateWithInput()
{
// 判断用户输入
if (GetAsyncKeyState(VK_LEFT) & 0x8000)
{
if (man.x > 25)
man.x -= vxman;
man.walk = 1;
}
else if (GetAsyncKeyState(VK_RIGHT) & 0x8000)
{
if (man.x < 425 - xman)
man.x += vxman;
man.walk = 2;
}
else
{
man.walk = 0;
}
};
五.完整代码
GitHub项目地址:点我进入GitHub项目
。
。