C++课程设计报告【飞机大战】
- 格式:doc
- 大小:632.22 KB
- 文档页数:48
飞机大战 c课程设计一、课程目标知识目标:1. 学生能理解并掌握编程语言中的基础语法和结构,如变量、循环、条件语句等;2. 学生能运用所学的编程知识,设计并实现一个简单的“飞机大战”游戏;3. 学生能了解游戏设计的基本流程和原理,包括游戏规则、角色设计、界面布局等。
技能目标:1. 学生能运用编程软件,独立编写代码,实现游戏功能;2. 学生能在团队协作中发挥自己的专长,与他人共同完成游戏设计;3. 学生能通过分析问题、解决问题的过程,培养逻辑思维和编程实践能力。
情感态度价值观目标:1. 学生能对编程产生兴趣,树立学习信息技术的自信心;2. 学生能在游戏设计过程中,体会团队合作的重要性,培养团队精神和沟通能力;3. 学生能认识到编程在现实生活中的应用,增强创新意识,提高对科技发展的关注。
分析课程性质、学生特点和教学要求:本课程为信息技术学科,针对五年级学生设计。
此阶段学生具有一定的逻辑思维能力和动手实践能力,对新鲜事物充满好奇。
课程以“飞机大战”为主题,结合编程知识,旨在激发学生的学习兴趣,培养其编程技能和团队协作能力。
在教学过程中,注重引导学生主动探究、实践,鼓励创新,以提高学生的信息技术素养。
通过本课程的学习,使学生能够在实践中掌握编程知识,培养良好的情感态度价值观。
二、教学内容1. 编程基础:变量、数据类型、运算符;条件语句(if-else);循环语句(for、while);函数定义与调用。
教学安排:2课时。
2. 游戏设计原理:游戏规则、角色设计、界面布局;游戏循环、事件处理。
教学安排:1课时。
3. 编程实践:- 设计飞机角色:使用绘图软件设计飞机外观,导入编程环境。
- 编写飞机移动代码:实现飞机上下左右移动功能。
- 编写敌机生成与移动代码:实现敌机自动生成并向下移动功能。
- 编写子弹发射与敌机销毁代码:实现子弹发射及击中敌机效果。
- 游戏结束判定:判断飞机与敌机相撞,游戏结束。
教学安排:4课时。
飞机大战课设报告飞机大战是一款经典的游戏,也是计算机科学中常见的课设项目之一。
在这个项目中,我们需要设计一个能够实现基本飞机大战功能的程序,包括游戏场景,敌人飞机,玩家飞机以及子弹等元素。
在本文中,我们将介绍飞机大战的实现原理以及我们的设计思路。
一、游戏场景的实现游戏场景是飞机大战中最基本的元素之一。
我们需要在程序中创建一个游戏窗口,用于展示游戏场景。
在窗口中,我们需要绘制背景图像,以及玩家飞机和敌人飞机等元素。
为了实现更加真实的游戏体验,我们还可以添加背景音乐和音效。
二、敌人飞机的实现在飞机大战中,敌人飞机是玩家需要消灭的目标。
我们需要在程序中创建敌人飞机,并控制其在游戏场景中的运动轨迹。
为了增加游戏难度,我们可以让敌人飞机在不同的高度和速度上运动,同时还可以添加不同种类的敌人飞机,例如飞行速度更快或者攻击力更强的飞机。
三、玩家飞机的实现玩家飞机是游戏中最重要的元素之一。
我们需要在程序中创建玩家飞机,并控制其在游戏场景中的运动轨迹。
为了让玩家更好地操作飞机,我们还可以添加键盘控制功能,例如向上或向下移动、向左或向右转向等。
四、子弹的实现子弹是玩家攻击敌人飞机的主要武器。
我们需要在程序中创建子弹,并控制其在游戏场景中的运动轨迹。
为了增加游戏体验,我们还可以添加不同种类的子弹,例如攻击力更强或者射程更远的子弹。
五、游戏逻辑的实现游戏逻辑是飞机大战中最重要的部分之一。
我们需要实现游戏的开始和结束逻辑,例如游戏开始前的介绍页面和游戏结束后的排名页面。
同时,在游戏过程中,我们还需要实现敌人飞机的生成和移动、玩家飞机的控制和移动、子弹的生成和移动以及碰撞检测等功能。
六、总结在本文中,我们介绍了飞机大战的实现原理以及我们的设计思路。
通过以上的步骤,我们可以实现一个基本的飞机大战游戏,并在程序中添加更多的功能和元素,以实现更加完整的游戏体验。
飞机大战不仅仅是一款游戏,更是一个综合性的课设项目,可以让我们更好地掌握计算机科学中的相关知识。
飞机大战游戏课程设计报告一、课程目标知识目标:1. 学生能理解并掌握编程语言的基本语法和结构,如变量、循环、条件语句等。
2. 学生能运用所学的编程知识,设计和开发一个简单的“飞机大战”游戏。
3. 学生能理解游戏设计中的数学原理,如坐标系统、碰撞检测等。
技能目标:1. 学生能够运用编程工具(如Scratch或Python等)进行游戏设计和开发,提高编程实践能力。
2. 学生通过团队协作,培养沟通与协作能力,学会共同解决问题。
3. 学生能够运用创新思维,设计和优化游戏功能,提高游戏的可玩性和趣味性。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,激发学习动力。
2. 学生在游戏设计和开发过程中,培养自信心和成就感,增强自主学习能力。
3. 学生通过游戏设计,体会团队合作的重要性,学会尊重他人,培养良好的团队精神。
课程性质:本课程为信息技术学科,以实践为主,注重培养学生的动手能力和创新思维。
学生特点:五年级学生,对新鲜事物充满好奇心,具备一定的逻辑思维能力,喜欢动手操作。
教学要求:教师应引导学生通过自主学习、合作探究的方式,完成游戏设计和开发任务,关注学生的学习过程,及时给予反馈和指导,提高学生的综合素质。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容本课程教学内容依据课程目标进行选择和组织,主要包括以下几部分:1. 编程基础知识:- 变量的定义和使用- 常用的数据类型- 程序流程控制(条件语句、循环语句)- 函数的定义和调用2. 游戏设计原理:- 游戏的基本元素(玩家、敌人、子弹等)- 坐标系统与运动控制- 碰撞检测与游戏逻辑3. 编程工具与操作:- Scratch或Python编程环境的使用- 图形和角色的绘制与导入- 事件处理与声音效果的应用4. 项目实践:- 设计并开发“飞机大战”游戏- 团队合作与分工- 游戏测试与优化教学内容安排和进度:第一课时:介绍编程基础知识和游戏设计原理,让学生了解课程目标和要求。
飞机大战c语言课课程设计一、教学目标本课程旨在通过学习飞机大战C语言编程,让学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和编程规范。
–理解数据类型、变量、常量的概念及使用。
–学会使用条件语句、循环语句进行程序控制。
–熟悉函数的定义和调用。
–掌握常用的数据结构(如数组、链表、栈、队列等)。
–了解常用的算法和编程思想(如递归、分治、贪心等)。
2.技能目标:–能够运用C语言编写简单的程序,解决实际问题。
–具备良好的编程习惯,能够阅读和理解他人的代码。
–能够使用调试工具对程序进行调试和优化。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情。
–培养学生勇于探索、创新的精神。
–培养学生团队合作、沟通协调的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基本语法和编程规范。
2.数据类型、变量、常量的概念及使用。
3.条件语句、循环语句的用法。
4.函数的定义和调用。
5.数组、链表、栈、队列等数据结构的使用。
6.常用的算法和编程思想。
7.实战项目:飞机大战游戏开发。
三、教学方法为了提高教学效果,我们将采用以下几种教学方法:1.讲授法:通过讲解C语言的基本语法、数据结构、算法和编程思想,使学生掌握相关知识。
2.案例分析法:通过分析实际案例,使学生更好地理解知识点,提高编程能力。
3.实验法:让学生动手实践,编写程序,培养学生的实际操作能力。
4.小组讨论法:鼓励学生分组讨论,培养团队合作精神和沟通协调能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)或《C Primer Plus》。
2.参考书::《C语言编程思想》、《数据结构与算法分析》。
3.多媒体资料:教学PPT、视频教程、在线编程练习题。
4.实验设备:计算机、网络环境、编程调试工具(如VS Code、GCC等)。
c++课设报告飞机大战飞机大战是一款经典的游戏,可以作为C++课设的一个很好的主题。
在这份报告中,我将从多个角度来回答你关于飞机大战的问题。
首先,我们可以从游戏的基本要求和功能开始。
飞机大战游戏通常包括以下几个方面的功能,游戏界面设计、玩家飞机的控制、敌机的生成与控制、子弹的发射与碰撞检测、得分系统和游戏难度的逐渐增加等。
你可以详细描述每个功能的实现方法,并给出相应的代码示例。
其次,你可以从算法和数据结构的角度来讨论飞机大战的实现。
例如,你可以介绍如何使用数组或链表来存储和管理敌机、子弹等游戏元素,如何使用递归或循环实现游戏的主循环,以及如何使用碰撞检测算法来判断游戏元素之间的碰撞等。
这些算法和数据结构的选择将直接影响游戏的性能和可玩性。
此外,你还可以从图形界面设计的角度来讨论飞机大战的实现。
C++中可以使用图形库(如SFML、OpenGL等)来创建游戏窗口、绘制游戏元素和处理用户输入等。
你可以介绍如何使用这些图形库来实现游戏的界面,并给出相应的代码示例。
另外,你可以考虑添加一些额外的功能来增加游戏的趣味性和挑战性。
例如,你可以添加道具系统,让玩家可以获得各种增益效果;你还可以设计多个关卡,每个关卡的敌机种类和难度都不同;你还可以设计BOSS战,让玩家在游戏的最后面对更强大的敌人等。
这些额外的功能可以提升游戏的可玩性,使得玩家更加投入其中。
最后,你可以总结整个课设的过程和心得体会。
你可以讨论在实现飞机大战游戏的过程中遇到的问题和解决方法,以及你对C++编程和游戏开发的理解和体会。
同时,你还可以对未来可能的改进和扩展提出建议。
在这份报告中,我从游戏功能、算法和数据结构、图形界面设计、额外功能和总结等多个角度回答了你关于飞机大战的问题。
希望这些回答能够帮助你完成一份全面完整的C++课设报告。
c 飞机大战课程设计一、课程目标知识目标:1. 学生能够理解飞机大战游戏背景,掌握相关的历史知识。
2. 学生能够描述飞机大战游戏中的基本物理原理,如重力、惯性等。
3. 学生能够解释飞机大战游戏中的编程逻辑,如角色移动、碰撞检测等。
技能目标:1. 学生能够运用所学的编程知识,设计并实现一个简单的飞机大战游戏。
2. 学生能够运用创新思维,对飞机大战游戏进行改进和优化。
3. 学生能够通过合作与交流,解决在游戏设计过程中遇到的问题。
情感态度价值观目标:1. 学生培养对科学技术的热爱和兴趣,激发探索未知世界的欲望。
2. 学生培养团队协作意识,学会尊重和倾听他人的意见。
3. 学生培养勇于面对挑战的精神,不断提高自己的动手能力和解决问题的能力。
课程性质:本课程为信息技术学科拓展课程,旨在让学生在实践操作中学习编程知识,提高创新能力。
学生特点:五年级学生对新鲜事物充满好奇,具备一定的信息技术基础,喜欢动手实践和团队合作。
教学要求:教师应注重理论与实践相结合,引导学生主动探索,关注学生的个体差异,提高学生的综合素质。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 介绍飞机大战游戏背景及历史,让学生了解游戏与科技发展的关系。
相关教材章节:第一章,信息技术与生活。
2. 讲解飞机大战游戏中所涉及的物理原理,如重力、惯性、运动轨迹等。
相关教材章节:第二章,计算机与物理。
3. 基本编程知识学习,包括变量、循环、条件语句等,为飞机大战游戏编程打下基础。
相关教材章节:第三章,编程基础。
4. 设计飞机大战游戏框架,学习角色移动、碰撞检测等编程逻辑。
相关教材章节:第四章,游戏设计与制作。
5. 实践操作:分组进行飞机大战游戏设计,学生自主探究,教师指导解答疑问。
相关教材章节:第五章,实践与探究。
6. 游戏优化与改进,培养学生的创新思维和解决问题的能力。
相关教材章节:第六章,创新与拓展。
教学内容安排和进度:第一课时:介绍飞机大战游戏背景及历史,激发学生兴趣。
c预言飞机大战课程设计报告一、课程目标知识目标:1. 学生能理解c语言编程的基本概念,如变量、数据类型、控制结构等;2. 学生能掌握c语言中数组的使用,理解其在游戏开发中的应用;3. 学生能了解飞机大战游戏的基本逻辑和编程实现。
技能目标:1. 学生能运用c语言编写简单的飞机大战游戏程序;2. 学生能通过调试和修改代码,优化游戏性能;3. 学生能运用所学知识,发挥创意,设计和开发具有个人特色的飞机大战游戏。
情感态度价值观目标:1. 学生培养对编程的兴趣和热情,提高信息素养;2. 学生通过团队协作,培养沟通能力和合作精神;3. 学生在游戏开发过程中,体验科技创新的乐趣,增强自信心。
课程性质:本课程为实践性较强的学科,结合c语言编程和游戏开发,旨在培养学生的编程兴趣和实际操作能力。
学生特点:六年级学生对新鲜事物充满好奇,具备一定的逻辑思维能力,但编程基础薄弱,需要从基础开始逐步引导。
教学要求:教师应注重理论与实践相结合,关注学生个体差异,引导他们通过实践掌握编程技能,并在此过程中培养情感态度价值观。
课程目标分解为具体学习成果,以便于教学设计和评估。
二、教学内容1. c语言基础知识回顾:变量、数据类型、运算符、控制结构(条件语句、循环语句);2. 数组的使用:一维数组、二维数组,数组在游戏中的应用;3. 飞机大战游戏设计:游戏框架搭建、角色设定、控制逻辑、碰撞检测;4. 编程实践:编写飞机大战游戏程序,包括角色移动、射击、敌机生成、得分统计等;5. 游戏优化与调试:分析程序性能,优化代码,调试游戏,提升游戏体验;6. 创意发挥:鼓励学生发挥个人创意,设计和开发独特的飞机大战游戏。
教学内容安排与进度:第一课时:回顾c语言基础知识,讲解数组的使用;第二课时:介绍飞机大战游戏设计,搭建游戏框架;第三课时:编写游戏角色控制逻辑,实现角色移动和射击;第四课时:实现敌机生成和碰撞检测,完成得分统计;第五课时:游戏优化与调试,分享创意发挥成果。
c语言飞机大战实践报告C语言飞机大战实践报告引言:飞机大战是一款经典的游戏,它让玩家扮演一架战斗机,在天空中与敌人进行激烈的战斗。
本报告将详细介绍我们实践过程中所采取的步骤和方法,以及所遇到的挑战和解决方案。
第一部分:项目准备在开始编写代码之前,我们首先进行了项目准备工作。
我们使用C语言作为开发语言,并使用了一个基本的图形库来实现游戏画面的显示。
我们选择了一个简单的控制台窗口来作为游戏的界面,这样我们可以利用图形库提供的函数来绘制游戏场景和玩家的飞机。
第二部分:项目架构在开始编写代码之前,我们进行了项目架构的设计。
我们将游戏分为几个模块,每个模块负责不同的功能。
首先是游戏引擎模块,它负责处理游戏的主流程,包括初始化游戏界面、接收用户输入、更新游戏状态和绘制游戏画面。
然后是游戏逻辑模块,它负责实现游戏的逻辑规则,比如玩家和敌人的移动、碰撞检测和计分等。
最后是图形绘制模块,它负责将游戏逻辑模块的数据转换成图形数据,并在界面上进行绘制。
第三部分:编写代码在完成项目架构设计后,我们开始编写代码。
首先是游戏引擎模块的实现,我们使用了一个循环来不断更新游戏状态和绘制游戏画面。
然后是游戏逻辑模块的实现,我们使用了一些基本的算法来处理玩家和敌人的移动和碰撞检测。
最后是图形绘制模块的实现,我们使用了图形库提供的函数来实现游戏画面的绘制。
第四部分:调试和优化在完成代码编写后,我们进行了调试和优化工作。
我们通过测试不同的输入和场景来验证代码的正确性,并修复了一些错误和bug。
此外,我们还尝试优化代码的性能,使游戏的运行更加流畅和稳定。
第五部分:心得体会通过这次实践,我们学到了很多关于C语言和游戏开发的知识。
我们了解到C语言是一种非常强大和灵活的编程语言,可以用来实现各种不同的应用程序。
同时,我们也体会到了游戏开发的复杂性和挑战性,需要综合运用各种不同的技术和算法来实现一个完整的游戏。
结论:通过这次实践,我们成功地完成了一款简单的C语言飞机大战游戏。
飞机大战c语言程序设计报告飞机大战是一款经典的射击类游戏,玩家通过控制飞机的移动和射击来击败敌人。
在本次C语言程序设计报告中,我将介绍飞机大战游戏的设计思路、主要功能和实现方法。
首先,我们需要设计游戏的界面。
使用C语言的图形库,我们可以创建一个窗口来展示游戏。
窗口中央是玩家操控的飞机,周围是敌人飞机和其他的游戏元素。
我们可以使用ASCII字符来绘制游戏界面,使用光标移动和颜色控制函数来实现动态效果。
接下来,我们需要实现玩家飞机的控制。
通过监听键盘输入,我们可以控制飞机的移动。
当按下方向键时,可以让飞机上下左右移动。
同时,我们还需要实现飞机的射击功能。
当用户按下空格键时,飞机会发射子弹,击中敌人飞机会得分。
在游戏中,我们还需要实现敌人飞机的出现和移动。
为了增加游戏的难度,可以设置多个敌人飞机,它们会从屏幕的上方或者右方进入游戏界面,并以一定的速度进行移动。
当敌人飞机飞出屏幕或者被玩家击中时,会消失并重新生成新的敌人飞机。
除了敌人飞机,我们还可以在游戏中添加其他的游戏元素,如道具箱、障碍物等。
玩家可以通过接触道具箱获得奖励,如增加射速、伤害等。
而障碍物可以增加游戏的挑战性,玩家需要躲避障碍物的同时击败敌人飞机。
最后,我们还可以为游戏增加音效和背景音乐,增强游戏的趣味性和可玩性。
通过调用C语言的音频库,我们可以实现在游戏中播放声音。
总结起来,飞机大战是一款非常经典和有趣的游戏。
通过本次C语言程序设计,我们可以深入了解游戏的设计思路和实现方法。
希望本次报告能够对大家了解飞机大战及其相应的C语言程序设计有所帮助。
C++程序设计A2课程设计报告课程名称C++程序设计A2课题名称飞机大战专业计算机科学与技术班级1820544 ___学号********* _____姓名王锐____ _指导教师韩燕丽__2019年6 月15 日(一)、课程设计题目:飞机大战(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:(1)要求利用面向对象的方法以及C++的编程思路来完成系统的设计。
(2)在系统的设计中,要求运用面向对象的机制(继承及多态性),来实现系统功能,并且要建立清晰的类层次结构。
(3)在系统设计中要分析和定义各个类,每个类中要有各自的数据成员和成员数。
(4)主函数中提供菜单选项,并给出足够的选择信息以及提示信息。
(5)程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。
对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入。
3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
(三)、设计方法和基本原理:功能要求:设计一个基于控制台的简洁流畅的飞机大战游戏。
问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;目录1.系统需求分析 (1)2.总体设计 (2)3.详细设计及实现 (5)4.系统调试 (5)5.结论 ............................................................................................... 错误!未定义书签。
6.心得体会 ....................................................................................... 错误!未定义书签。
7.参考书目 (45)1.系统需求分析1.1系统设计的目的与意义:飞机大战游戏作为 PC 中一款桌面游戏,界面简洁流畅、游戏方式简单玩起来容易上手。
面向休闲游戏的玩家,例如:家庭、办公人员等,使用人群广泛。
1.2 系统功能需求:1)通过键盘,方向键 WASD 键可控制战机的位置,空格键发射子弹,2)界面中敌机出现的位置是随机的。
3)对于随机产生的敌机及子弹,若超出界面,则释放该对象。
4)战机、敌机、子弹都有生命值,敌机和玩家碰撞、敌机和玩家的子弹碰撞、敌机的子弹和玩家碰撞、敌机的子弹和玩家的子弹碰撞均需考虑。
敌机的生命值为0,则删除敌机或BOSS,战机生命值为0,游戏结束。
5)战机子弹:战机有两种子弹可自由选择。
6)结束功能:游戏中按下2会结束游戏,再次按下 Y/N 可继续或者退出游戏。
2.总体设计2.1 系统功能分析:系统通过调用类函数来实现游戏的运行,通过面向对象类的继承、多态等思想在使程序简洁的同时保证游戏的正常运行。
2.2系统功能模块划分与设计:系统定义了Bullet()、Plane()两个基类,通过继承得到Bullet_1()、Bullet_2()、Bullet_3()、Bullet_3()、Bullet()_4、Player()等类。
Map 类用于地图的绘制,Bullet 类用于子弹的实现,Plane 类是飞机的实现,在通过 Plane 类的继承,编写敌机和战机类。
2.3 系统功能模块图:2.4 类的设计(1)Bullet类(抽象类)的设计:(2)Plane类的设计:(3)Map类的设计:(4)Manager类的设计:3.详细设计及实现3.1 Public_using及stdafx的实现// Public_Using.h#pragma once// 组成飞机和子弹的节点struct Note{int m_x;int m_y;Note(int x, int y):m_x(x), m_y(y){}};// 枚举类型(自己定义)enum Type{KONG,HEAD_F,LEFT_F,RIGHT_F,XUNL_F,OBSTACLE,BULLET,SMALL,BOSS,MIND,B_U_HEAD,SHENTI,B_HEAD,B_LEFT,B_RIGHT ,BOOS,PLAYER,A,B,C,D,E,F,G,H,I,J,K,BULLET_4_HEAK,BULLET_4_SHENTI};// stdafx.h// stdafx.h : 标准系统包含文件的包含文件,// 或是经常使用但不常更改的// 特定于项目的包含文件//#pragma once#include"targetver.h"#include<stdio.h>#include<tchar.h>#include<Windows.h>#include<iostream>#include<conio.h>#include<vector>#include<list>#include<ctime>using namespace std;// TODO: 在此处引用程序需要的其他头文件3.2 地图类的实现// Map.h#pragma once#include"Public_Using.h"class Map{public:Map(int x=25, int y=30);~Map(void);void draw();void change_map(int x, int y ,Type t); //地图的改变char** map; //地图二维指针int m_row; //行int m_clo; //列};// Map.cpp#include"stdafx.h"#include"Map.h"#include"Public_Using.h"Map::Map(int x, int y):m_row(x),m_clo(y){map=new char*[m_row];for(int i = 0; i < m_row; i ++){map[i] = new char[m_clo];memset(map[i], KONG, m_clo);}}Map::~Map(){for(int i = 0; i < m_row; i++ )delete[] map[i];delete[] map;map = NULL;}void Map::draw(){for (int i = 0; i < m_row; i++){for (int j = 0; j < m_clo; j++){if(map[i][j] == KONG)cout<<"";else if(map[i][j] == HEAD_F)cout<<"▲";else if(map[i][j] == LEFT_F)cout<<"◢";else if(map[i][j] == RIGHT_F)cout<<"◣";else if(map[i][j] == BULLET)cout<<"●";else if(map[i][j] == MIND)cout<<"⑩";else if(map[i][j] == SMALL)cout<<"▼";else if(map[i][j] == PLAYER)cout<<"★";else if(map[i][j] == B_U_HEAD)cout<<"∨";else if(map[i][j] == SHENTI)cout<<"∏";else if(map[i][j] == B_HEAD)cout<<"▼";else if(map[i][j] == B_LEFT)cout<<"◥";else if(map[i][j] == B_RIGHT)cout<<"◤";else if(map[i][j] == B)cout<<"⑨;else if(map[i][j] == C)cout<<"⑧;else if(map[i][j] == D)cout<<"⑦";else if(map[i][j] == E)cout<<"⑥";else if(map[i][j] == F)cout<<"⑤";else if(map[i][j] == G)cout<<"⑤";else if(map[i][j] == H)cout<<"③";else if(map[i][j] == I)cout<<"②";else if(map[i][j] == J)cout<<"①";else if(map[i][j] == BULLET_4_HEAK)cout<<"∨";else if(map[i][j] == BULLET_4_SHENTI)cout<<"⊕";}cout<<endl;}}void Map::change_map(int x, int y ,Type t){map[x][y] = t;}3.3 子弹类的实现1)// Bullet.h#pragma once#include"Public_Using.h"class Map;class Bullet{public:Bullet(int atk=0,int m_hp_b=0,bool isOut=false,bool isDead=false); //构造函数~Bullet(void); //析构函数virtual void draw_on_map(Map* m)=0; //在地图上绘制virtual void clearMe(Map* m)=0; //清空自己的轨迹virtual void init(int x,int y)=0; //初始化自己virtual void upDate(Map* m)=0; //位置更新virtual void overstep(Map* m)=0; //越界判定Note* noo; //节点的指针vector<Note*>* m_bull; //存放自己包含的节点的容器(这里是指针)bool isOut; //是否越界bool isDead; //是否死亡int atk; //攻击力int m_hp_b; //血量};// Bullet.cpp#include"stdafx.h"#include"Bullet.h"#include"Map.h"Bullet::Bullet(int atk, int m_hp_b, bool isOut, boolisDead):atk(atk),isOut(isOut),isDead(isDead),m_hp_b(m_hp_b){// 开空间m_bull = new vector<Note*>();}Bullet::~Bullet(){// 释放内存delete m_bull;m_bull = NULL;}2)// Bullet_1.h#pragma once#include"Bullet.h"class Bullet_1:public Bullet{public:Bullet_1(int x, int y, int atk = 1, int m_hp_b = 1);~Bullet_1();virtual void draw_on_map(Map* m);virtual void clearMe(Map* m);virtual void init(int x, int y);virtual void upDate(Map* m);virtual void overstep(Map* m);};// Bullet_1.cpp#include"stdafx.h"#include"Bullet_1.h"#include"Map.h"Bullet_1::Bullet_1(int x, int y, int atk, int m_hp_b):Bullet(atk, m_hp_b) {init(x, y);}Bullet_1::~Bullet_1(){// 释放内存delete noo;noo = NULL;}void Bullet_1::draw_on_map(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i); // 循环返回容器元素的位置m->change_map(n->m_x, n->m_y, BULLET);}}void Bullet_1::clearMe(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);m->change_map(n->m_x, n->m_y, KONG);}}void Bullet_1::init(int x, int y){noo = new Note(x, y);m_bull->push_back(noo);}void Bullet_1::upDate(Map* m){// 清空自己的轨迹clearMe(m);// 自己更新for(int i = 0; i < m_bull->size(); i ++)m_bull->at(i)->m_x--;// 判断是否越界overstep(m);}void Bullet_1::overstep(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);if(n->m_x < 0 || n->m_y < 0 || n->m_x > m->m_row - 1 || n->m_y > m->m_clo - 1) isOut = true;}}3)// Bullet_2.h#pragma once#include"Bullet.h"class Bullet_2:public Bullet{public:Bullet_2(int x, int y, int atk = 1);~Bullet_2();virtual void draw_on_map(Map* m);virtual void clearMe(Map* m);virtual void init(int x, int y);virtual void upDate(Map* m);virtual void overstep(Map* m);};// Bullet_2.cpp#include"stdafx.h"#include"Bullet_2.h"#include"Map.h"#include"Public_Using.h"Bullet_2::Bullet_2(int x, int y, int atk):Bullet(atk){init(x, y);}Bullet_2::~Bullet_2(){// 释放内存delete noo;noo = NULL;}void Bullet_2::draw_on_map(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i); // 循环返回容器元素的位置m->change_map(n->m_x, n->m_y, BULLET);}}void Bullet_2::clearMe(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);m->change_map(n->m_x, n->m_y, KONG);}}void Bullet_2::init(int x, int y){// 内存泄漏noo = new Note(x, y - 1);m_bull->push_back(noo);noo = new Note(x, y + 1);m_bull->push_back(noo);}void Bullet_2::upDate(Map* m){clearMe(m);for(int i = 0; i < m_bull->size(); i ++)m_bull->at(i)->m_x--;overstep(m);}void Bullet_2::overstep(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);if(n->m_x < 0 || n->m_y < 0 || n->m_x > m->m_row - 1 || n->m_y > m->m_clo - 1) isOut = true;}}4)// Bullet_3.h#pragma once#include"Bullet.h"class Bullet_3:public Bullet{public:Bullet_3(int x, int y, int atk = 1);~Bullet_3();virtual void draw_on_map(Map* m);virtual void clearMe(Map* m);virtual void init(int x, int y);virtual void upDate(Map* m);virtual void overstep(Map* m);};// Bullet_3.cpp#include"stdafx.h"#include"Bullet_3.h"#include"Map.h"#include"Public_Using.h"Bullet_3::Bullet_3(int x, int y, int atk):Bullet(atk){init(x, y);}Bullet_3::~Bullet_3(){// 释放内存delete noo;noo = NULL;}void Bullet_3::draw_on_map(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);m->change_map(n->m_x, n->m_y, BULLET);}}void Bullet_3::clearMe(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);m->change_map(n->m_x, n->m_y, KONG);}}void Bullet_3::init(int x, int y){noo = new Note(x - 1, y - 1);m_bull->push_back(noo);noo = new Note(x - 1, y + 1);m_bull->push_back(noo);noo = new Note(x - 1, y - 1);m_bull->push_back(noo);noo = new Note(x - 1, y + 1);m_bull->push_back(noo);noo = new Note(x + 1, y - 1);m_bull->push_back(noo);noo = new Note(x + 1, y + 1);m_bull->push_back(noo);}void Bullet_3::upDate(Map* m){clearMe(m);for(int i = 0; i < m_bull->size(); i ++){if(i == 0)m_bull->at(i)->m_x--;if(i == 1)m_bull->at(i)->m_x--;if(i == 2){m_bull->at(i)->m_x--;m_bull->at(i)->m_y--;}if(i == 3){m_bull->at(i)->m_x--;m_bull->at(i)->m_y++;}if(i == 4){m_bull->at(i)->m_x--;m_bull->at(i)->m_y--;}if(i == 5){m_bull->at(i)->m_x--;m_bull->at(i)->m_y++;}}overstep(m);}void Bullet_3::overstep(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);if(n->m_x < 0 || n->m_y < 0 || n->m_x > m->m_row - 1 || n->m_y > m->m_clo - 1) isOut = true;}}5)// Bullet_4.h#pragma once#include"Bullet.h"class Bullet_4:public Bullet{public:Bullet_4(int x, int y, int atk = 3, int m_hp_b = 5);~Bullet_4();virtual void draw_on_map(Map* m);virtual void clearMe(Map* m);virtual void init(int x, int y);virtual void upDate(Map* m);virtual void overstep(Map* m);};// Bullet_4.cpp#include"stdafx.h"#include"Bullet_4.h"#include"Map.h"#include"Public_Using.h"Bullet_4::Bullet_4(int x, int y, int atk, int m_hp_b):Bullet(atk, m_hp_b){init(x, y);}Bullet_4::~Bullet_4(){// 释放内存delete noo;noo = NULL;}void Bullet_4::draw_on_map(Map* m){m->change_map(m_bull->at(0)->m_x, m_bull->at(0)->m_y, BULLET_4_SHENTI);m->change_map(m_bull->at(1)->m_x, m_bull->at(1)->m_y, BULLET_4_HEAK);m->change_map(m_bull->at(2)->m_x, m_bull->at(2)->m_y, B_LEFT);m->change_map(m_bull->at(3)->m_x, m_bull->at(3)->m_y, B_RIGHT);}void Bullet_4::clearMe(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);m->change_map(n->m_x, n->m_y, KONG);}}void Bullet_4::init(int x, int y){noo = new Note(x + 1, y);m_bull->push_back(noo);noo = new Note(x + 2, y);m_bull->push_back(noo);noo = new Note(x + 1, y - 1);m_bull->push_back(noo);noo = new Note(x + 1, y + 1);m_bull->push_back(noo);}void Bullet_4::upDate(Map* m){clearMe(m);for(int i = 0; i < m_bull->size(); i ++)m_bull->at(i)->m_x++;overstep(m);}void Bullet_4::overstep(Map* m){for(int i = 0; i < m_bull->size(); i ++){Note* n = m_bull->at(i);if(n->m_x < 0 || n->m_y < 0 || n->m_x > m->m_row - 1 || n->m_y > m->m_clo - 1) isOut = true;}}3.4 飞机类及玩家类的实现1)// Plane.h#pragma onceclass Map;#include"Public_Using.h"class Plane{public:Plane(int m_h = 0, int _atk = 0, bool isD = false, bool isO = false);~Plane();virtual void init() = 0; // 纯虚函数virtual void draw_on_map(Map* m) = 0;virtual void clear(Map* m) = 0;virtual void up_date(Map* m) = 0;virtual void is_game_over(); // 判断玩家是否死亡char direction; // 飞机的方向Note* noo; // 节点指针vector<Note*>* m_data; // 存储飞机包含的节点的容器(指针)int m_hp; // 血量int atk; // 攻击力bool isDead; // 死亡判定bool isOut; // 越界判定};// Plane.cpp#include"stdafx.h"#include"Plane.h"#include"Public_Using.h"#include"Map.h"Plane::Plane(int m_h,int _atk,bool isD,bool isOut):m_hp(m_h),isDead(isD),atk(_atk),isOut(isOut){m_data=new vector<Note*>();}Plane::~Plane(void){delete m_data;m_data=NULL;}void Plane::is_game_over(){if (m_hp<=0){m_hp=0;isDead=true;}}2)// Player.h#pragma once#include"Plane.h"class Bullet;class Bullet_1;class Map;class Player:public Plane{public:Player(int hp = 5, int count = 0, int bullettype = 1, int atk = 1);~Player();virtual void init();virtual void draw_on_map(Map* m);virtual void up_date(Map* m);virtual void clear(Map* m);void init_bullet_1(); // 子弹1void init_bullet_2(); // 子弹2void init_bullet_3(); // 子弹3(有问题)bool overstep(int x, int y, Map* m);void up(Map* m); // 上void dowm(Map* m); // 下void left(Map* m); // 左void right(Map* m); // 右int count; // 玩家的分数int bullettype; // 子弹类型vector<Bullet*>* m_bullet; // 存放玩家子弹的容器(指针)};// Player.cpp#include"stdafx.h"#include"Player.h"#include"Bullet.h"#include"Bullet_1.h"#include"Bullet_2.h"#include"Bullet_3.h"#include"Map.h"Player::Player(int hp, int count, int bullettype, int atk):Plane(hp, atk), count(count), bullettype(bullettype){init();m_bullet = new vector<Bullet*>();}Player::~Player(){delete m_bullet;m_bullet = NULL;delete noo;noo = NULL;}void Player::init(){noo = new Note(24, 15);m_data->push_back(noo);noo = new Note(24, 14);m_data->push_back(noo);noo = new Note(24, 16);m_data->push_back(noo);noo = new Note(23, 15);m_data->push_back(noo);}void Player::draw_on_map(Map* m){// 绘制自己m->map[m_data->at(0)->m_x][m_data->at(0)->m_y] = PLAYER;m->map[m_data->at(1)->m_x][m_data->at(1)->m_y] = LEFT_F;m->map[m_data->at(2)->m_x][m_data->at(2)->m_y] = RIGHT_F;m->map[m_data->at(3)->m_x][m_data->at(3)->m_y] = HEAD_F;// 玩家子弹的绘制for(int i = 0; i < m_bullet->size(); i ++)if(!m_bullet->at(i)->isOut){for(int i = 0; i < m_bullet->size(); i ++)m_bullet->at(i)->draw_on_map(m);}}void Player::up_date(Map* m){clear(m);if(_kbhit()) // 检测按键direction = _getch();elsedirection = -100;switch(direction){case'w':up(m);break;case'a':left(m);break;case's':dowm(m);break;case'd':right(m);break;case' ':if(bullettype == 1)init_bullet_1();else if(bullettype == 2)init_bullet_2();else if(bullettype == 3)init_bullet_3();break;case'p':system("pause");break;case'3':bullettype = 1; // 切换子弹break;case'4':bullettype = 2;break;case'5':bullettype = 3;break;case'2':this->isDead = true;break;default:break;}for(int i = 0; i < m_bullet->size(); i ++)m_bullet->at(i)->upDate(m);for(int i = 0; i < m_bullet->size();){if(m_bullet->at(i)->isOut == true || m_bullet->at(i)->isDead == true){// 用一个新的指针指向越界或者已经打到敌人身上需要删除的子弹Bullet* b = m_bullet->at(i);vector<Bullet*>::iterator vit = m_bullet->begin(); // 定义一个迭代器m_bullet->erase(vit + i);// 释放已经被删除的子弹delete b;}elsei++;}}void Player::clear(Map* m){// 清除飞机for(int i = 0; i < m_data->size(); i ++){Note* n = m_data->at(i);m->change_map(n->m_x, n->m_y, KONG);}// 清除子弹for(int i = 0; i < m_bullet->size(); i ++){Bullet* b = m_bullet->at(i);for(int j = 0; j < b->m_bull->size(); j ++){int x = b->m_bull->at(j)->m_x;int y = b->m_bull->at(j)->m_y;m->change_map(x, y, KONG);}}}void Player::init_bullet_1(){int x = m_data->at(3)->m_x;int y = m_data->at(3)->m_y;Bullet* b = new Bullet_1(x - 1, y);m_bullet->push_back(b);}void Player::init_bullet_2(){int x = m_data->at(3)->m_x;int y = m_data->at(3)->m_y;Bullet* b = new Bullet_2(x - 1, y);m_bullet->push_back(b);}void Player::init_bullet_3(){int x = m_data->at(3)->m_x;int y = m_data->at(3)->m_y;Bullet* b = new Bullet_3(x - 1, y);m_bullet->push_back(b);}bool Player::overstep(int offx, int offy, Map* m){int x, y;for(int i = 0; i < m_data->size(); i ++){x = m_data->at(i)->m_x + offx;y = m_data->at(i)->m_y + offy;if(x < 0 || y < 0 || x > m->m_row - 1 || y > m->m_clo - 1) return true;}return false;}void Player::up(Map* m){if(overstep(-1, 0, m))return ;for(int i = 0; i < m_data->size(); i ++)m_data->at(i)->m_x--;}void Player::dowm(Map* m){if(overstep(1, 0, m))return ;for(int i = 0; i < m_data->size(); i ++)m_data->at(i)->m_x++;}void Player::left(Map* m){if(overstep(0, -1, m))return ;for(int i = 0; i < m_data->size(); i ++)m_data->at(i)->m_y--;}void Player::right(Map* m){if(overstep(0, 1, m))return ;for(int i = 0; i < m_data->size(); i ++)m_data->at(i)->m_y++;}3)// Enemy.h#pragma once#include"Plane.h"#include"Public_Using.h"class Bullet;class Player;class Enemy:public Plane{public:Enemy(int m_h = 0, int atk = 0);~Enemy();virtual void init() = 0;virtual void draw_on_map(Map* m)=0;virtual void clear(Map* m)=0;virtual void up_date(Map* m)=0;virtual void collision(Player* p); // 碰撞判断void gameagain(Player* p); // 重新开始游戏·vector<Bullet*>* m_bullet; // 存放子弹的容器(指针类型)};// Enemy.cpp#include"stdafx.h"#include"Enemy.h"#include"Map.h"#include"Player.h"#include"Bullet.h"#include"Bullet_1.h"Enemy::Enemy(int m_h, int atk):Plane(m_h, atk){m_bullet = new vector<Bullet*>();}Enemy::~Enemy(){}void Enemy::collision(Player* p){// 敌机和玩家碰撞for(int i = 0; i < m_data->size(); i ++){Note* enemy = m_data->at(i);for(int j = 0; j < p->m_data->size(); j ++){Note* n = p->m_data->at(j);if(enemy->m_x == n->m_x && enemy->m_y == n->m_y){// 判断BOSSif(this->m_data->size() > 2){this->m_hp -= p->atk;if(this->m_hp <= 0)this->isDead = true;}// 判断小兵if(this->m_data->size() == 1)this->isDead = true;p->m_hp -= this->atk;if(p->m_hp <= 0){// 玩家死亡游戏结束p->m_hp = 0;p->isDead = true;}}}}// 敌机和玩家的子弹碰撞for(int i = 0; i < m_data->size(); i ++){Note* enemy = m_data->at(i);for(int j = 0; j < p->m_bullet->size(); j ++){Bullet* b = p->m_bullet->at(j);for(int k = 0; k < b->m_bull->size(); k ++){Note* n = b->m_bull->at(k);if(enemy->m_x == n->m_x && enemy->m_y == n->m_y){// 敌机减去玩家子弹的攻击力this->m_hp -= b->atk;// 子弹消失b->isDead = true;if(this->m_hp <= 0){// 敌机死亡this->isDead = true;// 玩家加分if(this->m_data->size() > 2)p->count += 50;if(this->m_data->size() == 1)p->count += 10;}}}}}// 敌机的子弹和玩家碰撞for(int i = 0; i < m_bullet->size(); i ++){Bullet* b = m_bullet->at(i);for(int j = 0; j < b->m_bull->size(); j ++){Note* n = b->m_bull->at(j);for(int k = 0; k < p->m_data->size(); k ++){Note* player = p->m_data->at(k);if(n->m_x == player->m_x && n->m_y == player->m_y){// 子弹消失b->isDead = true;// 玩家的血量减去子弹的攻击力p->m_hp -= b->atk;if(p->m_hp <= 0){// 玩家死亡游戏结束p->m_hp = 0;p->isDead = true;}}}}}// 敌机的子弹和玩家的子弹碰撞for(int i = 0; i < m_bullet->size(); i ++){Bullet* b = m_bullet->at(i);for(int j = 0; j < b->m_bull->size(); j ++){Note* n = b->m_bull->at(j);for(int k = 0; k < p->m_bullet->size(); k ++){Bullet* player = p->m_bullet->at(k);for(int l = 0; l < player->m_bull->size(); l ++){Note* noo = player->m_bull->at(l);if(n->m_x == noo->m_x && n->m_y == noo->m_y){// 敌机子弹的血量减去玩家子弹的攻击力b->m_hp_b -= player->atk;// 玩家子弹的血量减去敌机子弹的攻击力player->m_hp_b -= b->atk;// 判断敌机的子弹是否死亡if(b->m_hp_b <= 0)b->isDead = true;// 判断玩家的子弹是否死亡if(player->m_hp_b <= 0)player->isDead = true;}}}}}}void Enemy::gameagain(Player* p){cout<<"游戏结束!"<<endl;cout<<"是否继续Y/N"<<endl;char ch;cin>>ch;if(ch == 'y'){p->isDead = false;p->m_hp = 5;}}4)// Enemy_Aircraft.h#pragma once#include"Public_Using.h"#include"Enemy.h"class Player;class Enemy_Aircraft:public Enemy{public:Enemy_Aircraft(int hp = 1, int atk = 1);~Enemy_Aircraft();virtual void init();virtual void draw_on_map(Map* m);virtual void clear(Map* m);virtual void up_date(Map* m);};// Enemy_Aircraft.cpp#include"stdafx.h"#include"Enemy_Aircraft.h"#include"Player.h"#include"Map.h"#include"Public_Using.h"#include"Bullet.h"#include"Bullet_1.h"Enemy_Aircraft::Enemy_Aircraft(int hp, int atk):Enemy(hp, atk){init();}Enemy_Aircraft::~Enemy_Aircraft(){delete noo;noo = NULL;}void Enemy_Aircraft::init(){srand((unsigned)time(NULL));int x = rand()%3 - 2;int y = rand()%23 + 3;noo = new Note(x, y);m_data->push_back(noo);}void Enemy_Aircraft::draw_on_map(Map* m){for(int i = 0; i < m_data->size(); ++ i){// 判断是否在地图上Note* n = m_data->at(i);if(n->m_x < 0 || n->m_y < 0 || n->m_x > m->m_row - 1 || n->m_y > m->m_clo - 1) {this->isOut = true;continue;}// 在地图上开始绘制m->change_map(n->m_x, n->m_y, SMALL);}}void Enemy_Aircraft::up_date(Map* m){clear(m);for(int i = 0; i < m_data->size(); i ++){Note* n = m_data->at(i);n->m_x++;}}void Enemy_Aircraft::clear(Map* m){for(int i=0; i<m_data->size(); ++i){Note* n=m_data->at(i);if(n->m_x<0 ||n->m_y<0 ||n->m_x>m->m_row-1 ||n->m_y>m->m_clo-1)continue;m->change_map(n->m_x,n->m_y,KONG);}}5)// Enemy_Boss.h#pragma once#include"Enemy.h"class Bullet;class Enemy_Boss:public Enemy{public:Enemy_Boss(int hp = 100);~Enemy_Boss();virtual void init();virtual void draw_on_map(Map* m);virtual void clear(Map* m);virtual void up_date(Map* m);void init_bullet_4(); // Boss子弹的初始化int intervalBullet_4; // Boss子弹的刷新频率int currentBullet_4; // 计算频率};// Enemy_Boss.cpp#include"stdafx.h"#include"Enemy_Boss.h"#include"Map.h"#include"Public_Using.h"#include"Bullet_4.h"#include"Bullet.h"Enemy_Boss::Enemy_Boss(int hp):Enemy(hp), intervalBullet_4(30), currentBullet_4(0) {init();}Enemy_Boss::~Enemy_Boss(){delete noo;noo = NULL;}void Enemy_Boss::init(){srand((unsigned)time(NULL));int x, y;do{x = 0;y = rand()%23 + 3;}while(y > 10 && y < 17);noo = new Note(x, y);m_data->push_back(noo);noo = new Note(x, y - 1);m_data->push_back(noo);noo = new Note(x, y - 2);m_data->push_back(noo);noo = new Note(x, y + 1);m_data->push_back(noo);noo = new Note(x, y + 2);m_data->push_back(noo);noo = new Note(x + 1, y - 1);m_data->push_back(noo);noo = new Note(x + 1, y + 1);m_data->push_back(noo);}void Enemy_Boss::draw_on_map(Map* m){for(int i = 0; i < m_data->size(); i ++){Note* n = m_data->at(i);// BOSS不在地图上时不绘制if(n->m_x < 0 || n->m_y < 0 || n->m_x > m->m_row - 1 || n->m_y > m->m_clo - 1) {this->isOut = true;continue;}// BOSS坐标符合条件后开始绘制else{// 根据BOSS的血量绘制BOSS中心的图形if(i == 0){if(m_hp >= 90 && m_hp <= 100)m->map[m_data->at(0)->m_x][m_data->at(0)->m_y] = MIND;else if(m_hp >= 80 && m_hp < 90)m->map[m_data->at(0)->m_x][m_data->at(0)->m_y] = B;else if(m_hp >= 70 && m_hp < 80)m->map[m_data->at(0)->m_x][m_data->at(0)->m_y] = C;else if(m_hp >= 60 && m_hp < 70)m->map[m_data->at(0)->m_x][m_data->at(0)->m_y] = D;else if(m_hp >= 50 && m_hp < 60)m->map[m_data->at(0)->m_x][m_data->at(0)->m_y] = E;else if(m_hp >= 40 && m_hp < 50)m->map[m_data->at(0)->m_x][m_data->at(0)->m_y] = F;。