# The-Fighting-of-Planes
一个使用C#开发的模仿微信飞机大战游戏Demo
**总体设计思路**
(1)万物皆对象
在整个游戏中,我们看到的所有内容,我们都可以理解为游戏对象(GameObject),每一个游戏对象,都由一个单独的类来创建;在游戏中主要有三类游戏对象:一是飞机,二是子弹,三是背景;其中,飞机又分为玩家飞机和电脑飞机,子弹又分为玩家子弹和电脑子弹。于是,我们可以对飞机进行抽象形成一个抽象父类:PlaneBase,然后分别创建两个子类:PlanePlayer和PlaneEnemy;然后对子弹进行抽象形成一个抽象类:BulletBase,然后分别创建两个子类:BulletPlayer和BulletEnemy。但是,我们发现这些游戏对象都有一些共同的属性和方法,例如X,Y轴坐标,长度和宽度,以及绘制(Draw())和移动(Move())的方法,这时我们可以设计一个抽象类,形成了GameObject类:将共有的东西封装起来,减少开发时的冗余代码,提高程序的可扩展性,符合面向对象设计的思路:
![markdown](https://images0.cnblogs.com/blog/381412/201501/252045152693854.jpg "markdown")
![markdown](https://images0.cnblogs.com/blog/381412/201501/252044084419603.jpg "markdown")
(2)计划生育好
在整个游戏中,我们的玩家飞机对象只有一个,也就是说在内存中只需要存一份即可。这时,我们想到了伟大的计划生育政策,于是我们想到了使用单例模式。借助单例模式,可以保证只生成一个玩家飞机的实例,即为程序提供一个全局访问点,避免重复创建浪费不必要的内存。当然,除了玩家飞机外,我们的电脑飞机集合、子弹集合等集合对象实例也保证只有一份存储,降低游戏开销;
(3)对象的运动
在整个游戏过程中,玩家可以通过键盘上下左右键控制玩家飞机的上下左右运动,而飞机的运动本质上还是改变游戏对象的X轴和Y轴的坐标,然后一直不间断地在窗体上重绘游戏对象。相比玩家飞机的移动,电脑飞机的移动则完全是通过程序中设置的随机函数控制左右方向移动的,而玩家飞机发出的子弹执行的运动则是从下到上,而电脑飞机发出的子弹执行的运动则是从上到下。
![markdown](https://images0.cnblogs.com/blog/381412/201411/221526463128324.png "markdown")
(4)设计流程图
![markdown](https://images0.cnblogs.com/blog/381412/201501/252210498478130.png "markdown")
## 效果演示
*主要分为游戏端和服务端*
### 服务端开起服务
![Pandao editor.md](https://images0.cnblogs.com/blog/381412/201501/252224181596573.jpg "Pandao editor.md")
服务器端主要开启监听玩家连接请求的服务,当几个处在同一局域网的玩家连接后,服务端管理员点击“开始游戏”则客户端会启动游戏。
### 服务端开起服务
![Pandao editor.md](https://images0.cnblogs.com/blog/381412/201501/252226295349942.jpg "Pandao editor.md")
在客户端中,玩家飞机可以通过不停地发射子弹向不同类型的电脑飞机来获取得分,但是如果被敌人飞机的子弹击中分数也会被扣去一部分。
### 服务端计算成绩客户端显示
![Pandao editor.md](https://images0.cnblogs.com/blog/381412/201501/252230193313013.jpg "Pandao editor.md")
![Pandao editor.md](https://images0.cnblogs.com/blog/381412/201501/252230300508822.jpg "Pandao editor.md")
> 当两个玩家连接游戏服务端后,便开始了“打飞机”的战斗,当指定时间后游戏结束,显示各自的游戏名次和分数。
当然,还有很多核心的内容没有实现。希望有兴趣的童鞋可以去继续完善实现,这里提供一个我的飞机大战实现仅供参考,谢谢!
### 参考博文
URL:<http://www.cnblogs.com/edisonchou/p/4248783.html>
> @EdisonChou
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的学生、或者相关技术学习者作为学习资料参考使用。 3、该资源包括全部源码,需要具备一定基础才能看懂并调试代码。 基于C#开发的模仿微信飞机大战游戏开发源码+项目说明.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于C#开发的模仿微信飞机大战游戏开发源码+项目说明.zip (140个子文件)
DesignTimeResolveAssemblyReferencesInput.cache 14KB
DesignTimeResolveAssemblyReferencesInput.cache 7KB
MyPlaneGame.Client.csproj.GenerateResource.Cache 4KB
MyPlaneGame.Client.csprojResolveAssemblyReference.cache 2KB
MyPlaneGame.Server.csprojResolveAssemblyReference.cache 2KB
DesignTimeResolveAssemblyReferences.cache 1KB
MyPlaneGame.Server.csproj.GenerateResource.Cache 980B
DesignTimeResolveAssemblyReferences.cache 863B
ClassDiagram.cd 5KB
App.config 235B
MyPlaneGame.Client.vshost.exe.config 235B
MyPlaneGame.Client.exe.config 235B
Resources.Designer.cs 29KB
MainForm.cs 12KB
ServerForm.cs 10KB
ServerForm.Designer.cs 9KB
SingleObject.cs 7KB
MainForm.Designer.cs 6KB
PlaneEnemy.cs 6KB
Resources.Designer.cs 3KB
GameObject.cs 3KB
BoomEnemy.cs 3KB
BulletBase.cs 2KB
PlanePlayer.cs 1KB
AssemblyInfo.cs 1KB
AssemblyInfo.cs 1KB
BoomPlayer.cs 1KB
Settings.Designer.cs 1KB
Settings.Designer.cs 1KB
GameTitle.cs 993B
GameBackground.cs 966B
BulletEnemy.cs 760B
PlaneBase.cs 678B
BulletPlayer.cs 536B
Program.cs 483B
Program.cs 481B
BoomBase.cs 361B
Direction.cs 279B
MyPlaneGame.Client.csproj 10KB
MyPlaneGame.Server.csproj 4KB
Properties.Resources.Designer.cs.dll 14KB
MyPlaneGame.Client.exe 4.59MB
MyPlaneGame.Client.exe 4.59MB
MyPlaneGame.Server.exe 34KB
MyPlaneGame.Server.exe 34KB
MyPlaneGame.Client.vshost.exe 22KB
MyPlaneGame.Server.vshost.exe 22KB
GameMaster.ico 17KB
MyPlaneGame.Server.vshost.exe.manifest 479B
README.md 4KB
game_music.mp3 115KB
game_over.mp3 14KB
get_double_laser.mp3 13KB
enemy1_down.mp3 13KB
big_spaceship_flying.mp3 12KB
enemy0_down.mp3 11KB
use_bomb.mp3 10KB
out_porp.mp3 10KB
get_bomb.mp3 9KB
enemy2_down.mp3 9KB
achievement.mp3 9KB
bullet.mp3 8KB
button.mp3 7KB
MyPlaneGame.Client.pdb 110KB
MyPlaneGame.Client.pdb 110KB
MyPlaneGame.Server.pdb 36KB
MyPlaneGame.Server.pdb 36KB
bg.png 418KB
loading.png 154KB
enemy2_down5.png 74KB
background.png 67KB
enemy2_down4.png 66KB
enemy2_down3.png 59KB
gameover.png 58KB
enemy2_down2.png 52KB
enemy2_down1.png 47KB
enemy2_hit.png 45KB
enemy2_n2.png 42KB
enemy2.png 42KB
name.png 32KB
button_nor.png 29KB
button_p.png 28KB
progress.png 28KB
plane.png 24KB
bullet.png 23KB
hero_blowup_n3.png 18KB
hero_blowup_n2.png 16KB
hero_blowup_n1.png 15KB
enemy1_down3.png 13KB
hero1.png 13KB
hero2.png 12KB
icon72x72.png 12KB
enemy1_down2.png 11KB
enemy1_down1.png 10KB
enemy1_hit.png 9KB
enemy2_down6.png 9KB
enemy1.png 8KB
prop_type_1.png 7KB
New Atlas.png 7KB
prop_type_0.png 7KB
共 140 条
- 1
- 2
资源评论
辣椒种子
- 粉丝: 3402
- 资源: 5725
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 7777端口抓包数据集
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功