DDG/wx

不定期诈尸

弹幕躲避游戏

游戏说明

1.操作

上下左右移动/选择 shift慢速模式 x清屏 esc退出界面(除了主界面)

2.计分

每帧(1/60秒)计分 原有 + 1 + pluspoint

3.奖励

当达到第六级别后可以奖励一次清屏机会(原有3次

4.关卡结束

关卡结束后有约0.6秒的休息时间

5.慢速模式

速度减少约一半,并显示判定点

6.垂直同步

屏幕刷新与逻辑刷新同步,打开可以减少cpu负担

7.关卡

目前共有五关

8.文件

含有文件 gdat 玩家数据与设置 ; main.cpp 主程序 ;  define.h 定义函数 ; type.h 定义数据与数据结构 ; Title.jpg 标题背景 

9.pluspoint

为黄色的点,获得后可以增加1点pluspoint随关卡等级增加,出现率增加,进入下一关后淸0

更新说明

2020-6-7

  1. 修复了无法编译通过的问题
  2. 添加了一关
  3. 使用option.ini保存说明,并且可以根据其中的path属性设置成绩信息的保存与读取位置

2020-6-14

  1. 修复了排行榜与回放列表的显示bug
  2. 修复了回放功能的部分bug
  3. 根据村长意见,合并了option.ini 与 player.mdat

2020-6-25

  1. 修改了游戏的得分规则
  2. 添加了第六关
  3. 替换了原有的第五关

2020-12-13

  1. 使用了新的帧数控制方法,使帧数控制在62.5帧/s(16ms/帧)
  2. 计划重新编写回放功能

部分功能的实现思路

1.碰撞判定

将每一个像素视为一个bool形的单元,true为不能接触 false为可以接触两种 再检查玩家判定点所在区域是否有不可接触的单元

2.回放功能

记录下每一个逻辑帧角色的位置,在保存,并保证每次游戏下落的弹幕位置不变

3.排行榜

利用二进制方式读取文件,读取记录排名的数据结构,再按分类进行归纳,利用stringstream生成格式化的文本再输出

4.游戏控制

分开画面更新与逻辑更新部分,记录每次逻辑判定的时间间隔,若小于16ms则不执行,若大于16ms,循环运行逻辑部分,并将小于16ms的时间间隔计入到下一次(6-25及之前版本)

在12-13版本中使用了新的帧数控制方法

ps.因为我只有周末能上QQ,可能不能及时回复,若有问题可以直接在评论区写出,不必加QQ,也能方便他人学习

关于12-13日更新的新的帧数控制

引言

我现在已经高三了,学业比较繁重,太久没有写程序了,实在忍不住,在二阶考的时候突然想到了一个新的帧数控制方法,一回家就马上应用到这个游戏里了(虽然后果就是这次考试考砸了....)

由于时间的问题以及这个方法仍存在问题便先不另开了,如有建议欢迎指出

正文

在之前的帧数控制中我采用的是记录时间间隔的方法,然而由于程序处理时间的不稳定,导致画面更新实际上并不是稳定的16ms/帧,而是会不断波动

在绘图所用时间短时,两种方法其实并无区别,但在卡顿时则旧方法岁帧率高但将会有明显卡顿感,但新的方法则依然流畅且保持在稳定的帧率

原因是旧的方法为了使用到所有的时间跟充分,在绘图部分结束后立刻进入逻辑部分进行逻辑部分的补帧,提高了时间的利用效率但一个画面更新后跟的逻辑补帧次数不稳定,使画面不连贯

新方法则有严格的帧数管理,画面部分结束后必须Sleep至一帧结束

(测试方法:于绘图部分前添加Sleep(20); 旧方法帧率于43帧/s左右波动,有明显卡顿  新方法保持在31.25帧/s)

新方法的思路程序:

	bool gameloop = true;
	int lastframe = -1;
	int currentframe = 0;
	
	init(); // 初始化
	
	long starttime = clock();
	
	while(gameloop)
	{
		
		for(lastframe;lastframe<currentframe;lastframe++)
		{
			logic(); // 逻辑部分
		}

		image(); // 绘制部分

		currentframe = (clock()-starttime)/gaptime+1;
		if(currentframe * gaptime + starttime>clock())Sleep(currentframe * gaptime + starttime - clock());
		
	}
	
	EndBatchDraw();

待改进的不足:

  1. 无法实现小数的时间间隔

时间仓促可能讲的的不是很好,十分抱歉,如有任何建议欢迎指出

已知BUG

当在设置界面中先打开全屏模式再在关上,其他窗口会受到影响,变得与游戏窗口一样大

回放功能具有大量bug! 计划重写

可能还存在其他bug,若出现请联系邮箱799052200@qq.com,十分感谢,开学后可能不能及时回复

效果图

下载

1.1.1 稳定版本(2020-6-14):下载完整的游戏源码及图片资源

1.2 测试版本(2020-6-25):下载

1.3 测试版本(2020-12-13):下载

分享到