是男人就下一百层 C语言 Easyx 实现 游戏

是男人就下一百层 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项目


如果对你有帮助的话,打赏一下吧!

在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值