资源下载地址:https://download.csdn.net/download/sheziqiong/85628397

一、游戏介绍

​ 《元素战争》是一款基于 win32 框架的电脑游戏。作为一款即时战略性游戏,玩家需要充分利用手中的八卦排兵布阵,赢得游戏以获得更多的八卦,来扩大自己的元素部队。

​ 游戏暂时共设计两关,玩家通过排兵布阵选择出战的元素和数量,游戏开始后自动与电脑方元素进行对战。游戏融合了中国古代道家阴阳五行的思想,金、木、水、火、土五大元素之间相生相克,同一元素对不同的元素攻击效果各不相同。如何选择合适的出战元素并将它们放置在合适的位置,既是游戏的一大挑战,也是游戏的趣味性所在。

​ 游戏背景:古书《尚书·洪范》记载:“五行:一曰水,二曰火,三曰木,四曰金,五曰土。水曰润下(滋润),火曰炎上(燃烧),木曰曲直(弯曲,舒张),金曰从革(成分致密,善分割),土爰稼穑(意指播种收获)。润下作咸,炎上作苦,曲直作酸,从革作辛,稼穑作甘。”古人认为,金、木、水、火、土五种元素,是构成宇宙万物及各种自然现象变化的基础。五行相生相克,若它们之间发生战争,谁又会更胜一筹?

二、游戏设计

  • 玩家在开始界面可点击“游戏背景”了解设计背景;点击“玩法介绍”了解游戏大概流程;点击“关卡选择”,选择想要进入的关卡。建议按顺序由易到难体验游戏。

  • 进入“角色选择”页面。玩家需根据元素属性介绍和关卡中电脑方的元素配置选择己方参战元素和数量。玩家只有一定数量的八卦,不同元素所需要的八卦数量不同,建议合理分配。玩家只可以在对战擂台上放置元素。

  • 开始游戏。电脑方元素全部死亡即为胜利,将得到下一关八卦数量增加的奖励。在此之前,若己方元素全部死亡,则为失败,下一关游戏八卦数量减少。

  • 卦数量降至 0,则游戏结束。玩家需要返回开始界面,重新开始新一轮游戏。若玩家在两个关卡都取得胜利,则游戏通关,数据将被初始化,玩家亦需要返回开始界面重新开始新一轮游戏。

2.1 界面设计

图 1:开始界面,包括关卡选择、玩法介绍、游戏背景

图 2:人物选择界面

玩家可通过点击元素名称查看元素简介

图 3:打斗画面

图 4:玩家两关均胜利,开启自由对战模式

图 5:自由对战模式,玩家需设定双方上场人数,然后各自排兵布阵

2.2 交互设计

​ 玩家主要通过鼠标左键点击按钮跳转界面。

​ 特别地,在角色选择界面,玩家需点击人物(元素)名称查看人物特性,之后再次点击人物名称确认选择该人物,然后点击擂台上某位置放置元素。而在自由对战模式下,玩家需先点击“人物数量”下的数字增加双方人物上场数量,点击八卦确认后,再开始排兵布阵。

​ 玩家除了通过点击游戏界面右上角的暂停键进入暂停界面,还可以通过按 ESC 键进入暂停界面。

2.3 流程设计

图 6:玩家角度的游戏流程图(可放大查看)

三、游戏实现

  • 写出 win32 程序框架,包括前向声明、数据初始化、主消息循环、设置窗口大小等;
  • 加载图像资源,添加按钮和按钮事件,添加鼠标和键盘点击事件,添加计时器事件;
  • 添加游戏所需要的各种函数,如碰撞检测,胜负判定,死亡人物动画播放,添加按钮,添加主角,单位行为函数等;
  • 初始化游戏场景;
  • 添加绘制函数,绘制图像。

3.1 代码流程

图 7:游戏程序的主要模块及其功能、游戏的运行流程、模块之间调用关系

3.2 核心模块

碰撞检测

两个角色相碰则交换其速度(根据动量守恒定律)。角色碰到屏幕边界则坐标值回移。

算法:两层遍历所有人物,若两个人物 X 坐标和 Y 坐标相减的绝对值小于人物图片大小,则速度交换。

单位行为函数

每种单位行为不同,追随的目标和攻击的效果不同。单位行为函数实现了我的构想。

算法:遍历所有人物,找到角色的目标人物,若目标人物状态为存活,则将其放入一个 vector 中。选择 vector[0]为追随目标。计算角色与追随目标之间的距离,判断是否在角色攻击范围内,选择角色状态。若是行走状态,则根据上一秒的速度和最大速度判断是做加速运动还是匀速运动,改变人物速度;若是攻击状态,则根据元素特性对 vector 中的目标展开攻击(减慢速度、降低生命值或降低目标攻击力)。最后画面运行到下一帧,清空目标 vector。(因为下一消息中人物可能死亡,不需要再将其放入 vector 中)

人物选择与自由对战模式

实现玩家在阅读人物简介后选择人物排兵布阵打败电脑方的效果。也可以自由选择双方出战元素,比较不同元素的特性。

算法:人物选择:进入人物选择场景后,若玩家点击元素名称,则显示人物介绍,再次点击则开启选择模式(choose 被置为 true),若放置元素位置在擂台上(根据鼠标坐标判断),则在鼠标位置生成一个结构体,播放人物动画,同时将 choose 置为 false。

自由对战模式:点击人物数量,若数量小于 10,则数量 +1,否则不予增加。点击右方按钮确认,将玩家一选择(bool choose1)置为 true。重复人物选择过程。再次点击右方按钮确认,将玩家二选择(bool choose2)置为 true,玩家一选择置为 false,开始玩家二选择。两个玩家布置完毕,点击开始游戏按钮开始战斗。

参考资料

  • https://www.csdn.net/
  • https://github.com/QianMo/Direct3D-Win32-Book-Src-Code
  • https://blog.csdn.net/luoyikun/article/details/42191863
  • https://588ku.com
  • http://www.biyezuopin.vip

资源下载地址:https://download.csdn.net/download/sheziqiong/85628397

基于C++的《元素战争》基于win32框架的电脑游戏设计相关推荐

  1. 《基于Unity的2D多人乱斗闯关游戏设计与开发》--小组博客综述

    文章目录 项目名称 项目背景 项目简介 项目架构 项目特色 大致功能需求 游戏模式/内容 项目技术选型 项目分工 项目具体计划 此次项目实训不完全按照项目计划书进行,因为游戏范围太广,可能随时调整游戏 ...

  2. 基于 python 的德云消消乐益智小游戏设计论文+源码

    计科在读分享自己做过的课题设计作业 有意可私信了解 目录 第一章 引言 II 1.1 课题背景 1 1.2 目的和意义 1 1.3 国内外的发展现状 1 1.4 开发环境 1 第二章系统开发平台的阐述 ...

  3. 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八3、FPS——武器系统1)

    目录 一.前言 二.前期知识 三.武器系统的实现 枪械类 换弹Reload 添加开枪动画 子弹 具体枪械 制作装弹效果的动画 一.前言 武器系统的开发(枪械类.换弹操作.添加开枪动画.子弹.具体枪械. ...

  4. 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(九——pun)

    目录 一.pun介绍 二.Appid配置 三.一些必须的代码 连接: 匹配 游戏 创建和加入游戏 回调函数 发消息 Photon视觉同步组件 观察Transform 观察MonoBehaviour 远 ...

  5. 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(十1、FPS多人化——IK)

    目录 一.前言 二.前期知识 配置 三.使用IK控制武器 四.使用IK控制角色Aim 五.使用Photon同步IK约束 一.前言 需要制作枪口的同步,即枪口朝向的同步和枪械的绑定,这里使用IK 二.前 ...

  6. 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(小地图工作前期知识:摄像机)

    目录 一.前言 二.透视(Perspective) 三.正交(Orthographic) 四.实际操作 五.遇到的问题 一.前言 使用相机制作小地图时,发现Unity的Camera的投影(Projec ...

  7. 项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(小地图修改完善)

    目录 一.前言 二.小地图的制作 1.小地图制作 2.小地图美化 三.小地图展示主角移动和主角方向 四.小地图放大.缩小 五.大小地图 六.大地图显示主角移动和主角方向 一.前言 由于游戏设计,场景较 ...

  8. 基于Unity开发的牧师与魔鬼动作分离版游戏设计

    1 作业要求 牧师与魔鬼 动作分离版 设计一个裁判类,当游戏达到结束条件时,通知场景控制器游戏结束 2 实现细节 在原来代码的基础上,修改如下: 将UserGUI的sign成员变量和Controlle ...

  9. 基于Android的迷你桌球游戏设计与实现

    目录 摘要11 关键词11 绪论11 1 游戏开发概述22 1.1 背景22 1.2 课题来源33 1.3 国内外研究现状33 1.4 Android应用程序构成44 1.4.1 应用程序55 1.4 ...

最新文章

  1. Redis 越来越慢?常见延迟问题定位与分析
  2. android 2.0 软件,Apeaksoft Android Toolkit
  3. 良性代码,恶意利用:浅谈 Return-Oriented 攻击
  4. hive 提交不到yarn_在Linux将MapReduce程序提交给YARN执行
  5. Flink从入门到精通100篇(十一)-Java SPI 机制在 Flink SQL 中的应用
  6. Arrays(Chapter 6 of JavaScript: The Good Parts)
  7. HADOOP2.5.0_64安装日志
  8. vscode安装python插件失败_vscode插件安装失败的解决方案
  9. servlet容器_SpringBoot是否内置了Servlet容器?
  10. java多级目录文件是否存在_Java文件夹操作,判断多级路径是否存在,不存在就创建(包括windows和linux下的路径字符分析)...
  11. 【笔试/面试】—— linux 拾遗(一)
  12. 添加native和java系统服务
  13. 仿苹果手机_安卓变苹果,苹果控制中心也能用上了
  14. Libevent 源码文件结构分析
  15. Oracle 12C 最新补丁下载与安装操作指北
  16. 第五人格为什么服务器维护中,《第五人格》提前停服原因和不删档测试说明
  17. 华为云k8s环境部署应用
  18. 安卓中的布局优化之clude、merge、ViewStub
  19. URL锚点HTML定位技术机制、应用与问题
  20. UE4元数据关键字的应用与含义(一)

热门文章

  1. 大学物理 狭义相对论 思维导图总结
  2. 广东省计算机二级ps操作题题库,广东省计算机二级考试ps选择题.doc
  3. 基于HTML家乡旅游主题项目的设计与实现——少林寺(5页)HTML+CSSS
  4. 哈·曼丁的故事(二)
  5. Android 中英文切换的实现。
  6. 微信公众号自定义菜单跳转到历史消息页面
  7. local function definitions are illegal
  8. 哪种耳机适合跑步用、跑步运动耳机推荐
  9. 优雅编程之这样使用枚举和注解,你就“正常”了(二十九)
  10. 四羧基锌酞菁(ZnC4Pc),Zn-taPc 酞菁类化合物,齐岳生物供应酞菁材料