目录
技术
EasyX:
文件流:
随机生成:
核心功能
移动:
扣血机制:
获胜机制:
关卡设计:
游戏开始菜单设计:
游戏内暂停菜单设计:
技能设计(可选):
复活设计(可选):
数据设计:
迷宫设计:
游戏初始化设计:
胜利判断:
失败判断:
怪物移动算法:
玩家移动算法:
难度设计:
扣血算法:
触碰宝石设计:
提示设计:
设置设计:
这个项目是我和朋友们一起开发的,在此声明一下。
我发现CSDN没有很完整的吃豆人游戏开发流程讲解,所以在此我将完整记录每日开发进度,希望给学完C语言的朋友们一些练习的项目。
计划使用EasyX制作游戏界面和安放各种元素贴图
计划使用文件流做出排行榜功能
目前考虑使用随机生成技术用来制作大地图以及怪物的行动轨迹
被键盘输入而控制的玩家移动
根据随机生成的怪物移动
当玩家与怪物产生触碰时,玩家减少生命值
玩家拾取到足够数量的宝石碎片
玩家到达出口点
地图较小建议手动设计地图,地图较大建议随机生成
获胜所需的宝石较多建议铺满全局,较少建议随机生成
当玩家达到获胜条件下进入出口时,将会进入下一关(建议设计成手动而非自动)
开始新游戏、继续游戏、游戏设置(音量调节、难度选择、操作键位)、排行榜、退出游戏(是否退出)
继续游戏、游戏设置、重新开始、保存游戏、回到主菜单
玩家技能躲避防御为主
怪物技能追击为主
玩家死亡后并不会结束游戏
玩家在规定复活次数下获胜也算作胜利(有多次复活建议扣分)
玩家死亡后会继承上次死亡时所拥有的所有宝石(当复活次数只有1次时也可折半)
Int labyrinth[ROW][COL];
不同的数值代表不同的元素(需在后期同意决定)
void initgame();
srand(time(NULL));
固定玩家的生成点
固定或者随机怪物的生成点(建议一开始距离玩家较远)
随机宝石的生成点
固定出口点位
可与失败组成一个函数
Int is_win(传入坐标,已获得的宝石数,复活次数*生命值)
如果前两条达成,后一条没达成,返回1(胜利)
当玩家拥有足够多的宝石数量且位于出口点则获胜
或者玩家拥有超级多的宝石数量(比如全部)也可获胜
或者位于出口点就可获胜,得分由宝石数量决定
同上,仅仅达成最后一条,返回-1(失败)
若都不是,返回0(游戏尚未结束)
当玩家无复活次数且此时玩家的生命值归于0则失败
void monsterMove(传入地图指针,传入怪物当前坐标)
根据随机处理对怪物坐标进行+1或-1处理
对怪物的移动进行随机处理,对随机数进行模4处理,0,1,2,3代表不同方向
预计方向倘若没有墙体,则进行移动,否则返回上一步重新设置随机数
需要设置帧率,以避免怪物移动过快
void playerMove(地图指针,当前坐标)
根据conic.h和_kbhit()和_getch()判断输入的按键
玩家通过键盘输入wasd或者WASD或者上左下右键判断移动方向
可通过结构体指针修改玩家结构体和怪物结构体
可选择降低玩家基础属性(比如生命值)
可选择增加怪物基础属性(比如数量,移动速度,技能)
可选择提高游戏获胜条件
当玩家的坐标p.x和p.y等于怪物的坐标m.x和m.y
或者像素点p.x位于怪物的左右边界内,p.y位于怪物的上下边界内
当玩家所处点位与怪物重合时,玩家生命值减少
或者判断玩家的上下左右四个像素点位于怪物矩形内部,则扣血
当玩家的坐标labyrinth[p.x,p.y]==宝石属性时,得分增加,修改宝石属性
当玩家触碰宝石时,将宝石的属性修改成空地的属性,然后得分增加
当怪物触碰宝石时,使用EasyX先画宝石后画怪物来覆盖掉宝石
分别建立打印函数或者输出IMAGE img图片
获胜条件达成提示
受伤提示
残血提示(屏幕周围泛红光)
胜利提示
失败提示
多媒体接口头文件:mmsystem.h
加载静态库:#pragma comment(lib,”winmm.lib”)
播放音乐:mciSendString(open,”....”);
FILE fp=fopen(“.....”,‘w’)
音量调节
难度选择
操作键位
排行榜
保存游戏