基于Easyx图形库的C语言游戏开发

目录

项目地址(已关闭) wlonestar/simple-lol

游戏演示视频已上传B站 BV1Cy4y127Th

设计思路

本游戏在老师提供的代码框架下,通过调用easyx图形库、Windows API 以及查阅资料获得的能替代easyx的函数实现相应效果。

设计思路如下:

  1. 实现人物行走

  2. 随机生成小怪,从画面外朝向人物移动

  3. 增加攻击、闪现及技能触发效果

  4. 增加第二种模式

  5. 添加游戏界面,提升玩家体验度。

功能描述

游戏核心就是玩家通过键盘控制人物移动、释放技能,杀死尽可能多的小怪或者躲避尽可能多的火球,打破原来的纪录。分部分介绍如下:

定义游戏配置数据、初始函数

此部分宏定义了不需要修改的常量、全局变量、鼠标和图片对象;因为游戏设计重新开始,所以全局变量需要重新初始化

导入去除png图片透明部分的函数、精确到微秒的延时类

此部分内容能够提升游戏体验感,非常重要。

游戏加载动画类

由于easyx图形库的缺陷,再加上我们的图片素材很多,我们只好通过增加加载动画来解决游戏一开始会黑屏加载不出来的问题。

定义开始界面对象

通过鼠标点击打开相应的界面或者对应的游戏画面,为了给玩家更好的体验,增加了鼠标移动到相应的按键范围内按键反色,鼠标左键按下去会播放触发音效。

定义游戏结束界面对象

实现方式同开始界面,玩家控制的人物死亡后,进入游戏结束界面,显示相应的得分情况,增加了返回菜单,通过点击后重新进入主函数让玩家能持续完下去。

定义游戏暂停界面对象

为防止玩家因为临时有事不能完,提供暂停选项,让玩家处理完手头紧急的事后还能继续游戏。

定义人物和子弹对象

这是本游戏的核心,整个游戏都是围绕着英雄展开的。

动态行走:

通过4个方向、每个方向15张图片的连续放出得到人物的

动态行走的效果;调用Windows API 实现连按键盘键连续行走效果。

释放技能:

射击:按下对应的按键后从人物所在位置释放一个与人物头朝下相同的子弹,匀速移动相应距离,如果击中小怪,小怪和子弹消失,否则子弹超过射程也消失;闪现:触发闪现技能后,向触发时头朝向位置移动对应距离,在原来位置放一张效果图,实现释放技能效果。

显示技能冷却时间条:

射击设置了1秒的冷却时间,闪现设置了10秒的冷却时间,触发技能后时间条归零,从零开始逐渐增加,为红色,时间条满了后,变绿色,表示可用。

定义敌人对象

先让小怪在画面外生成,再实时计算人物与小怪的横纵坐标之差,利用三角函数的关系让小怪朝向人物移动。由于随机函数生成的是每次固定的随机序列,通过加入srand(time(NULL)),让程序获取系统时间,得到随机数种子,使每次生成的小怪位置都不同。游戏中共有三种小怪,但并没有使用对象数组,因为小怪的8个方向以及每种小怪的大小都有很大区别,在与人物的接触判定时要分开处理,这也是比较繁琐的地方。

定义火球对象:

与敌人对象类似,不同的是,在画面外生成后不再改变方向,而且火球的移动速度也比小怪快,给游戏增加了挑战性。

下载方式

必需的环境配置

  1. vs2019 https://visualstudio.microsoft.com/zh-hans/vs/

    点击链接选择 Community 2019

    下载完在开始菜单找到 Visual Studio Installer

    vs2

    打开 vs installer,选择使用C++的桌面开发

    vs3

    等待安装完毕,时间比较长

  2. easyx 图形库 https://easyx.cn/

    下载完双击打开安装程序

    vs2019 安装好了会有 EasyX 文档 和 Visual C++ 2019 两个选项,点击即可安装

运行方法

克隆仓库后,找到 Debug 目录下的 exe 可执行文件,双击即可运行


comments powered by Disqus