关于毕业设计这个总目录
(一定要看,因为JAVA工具,tomcat,MAVEN , idea 下载都在这篇文件当中)
JAVA项目环境必知必会–【大作业及毕设项目】
python 文章的总目录:
详细解析python视频选择–【思维导图知识范围】
效果
互相伤害互相卷,玩命学习要你管,天生我才必有用,我命由我不由天!


其实,如果你愿意,甚至可以改成 掉牛奶包,对面飞机扔鸡蛋的搞笑版本。
来源以及分析:

原文的地址:
13个Python小游戏(含源码),开始敲起来,玩吧!
2022年的文章 ,到现在就有很多的代码跑不起来了。
不过,这好象并不妨碍真心要学习的人,是吧?


可以参考一下我之前的JAVA版游戏的文章 。
基于java的 飞机大战游戏的大作业–源代码–【课程设计】
如果是接触过一些这种游戏的人可能会有一定的分析方法

开始游戏的时候,都是差不多的步骤:
- 1 初始化 游戏背景,就是加载个图片
- 2 初始化 人物(我方),就是加载个图片(为了好象形象有时是两/几个图片来回切换,这样有飞的感觉,或人物有移动的感觉)
- 3 初始化 人物(敌方),就是加载个图片/N个图片,表示不同的类型,有奖励,有不能碰撞的,有扣分扣血条的
- 4 其它的代码初始化。
- 其它(音效…菜单…)
- 核心:
碰撞问题的解决(基本上这种小游戏的核心都是碰撞)
例如,敌方飞机与玩家飞机防碰撞,敌方飞机与玩家飞机防碰撞,等等。防碰撞检测技术实现在不同情况下,有不同的防碰撞检测方法。

if bullet.x > self.x + 0.05 * width and bullet.x < self.x + 0.95 * width and bullet.y + 0.1 * height > self.y and bullet.y < self.y + 0.8 * height:
有人可能会说,为什么不是两点的距离判断?甚至为什么不是判断多边形区域内?
如果你的CPU真的是没地方消耗计算量的话,倒也不是不可以的。

然后就是 子弹如果能对消。我方1千子弹,敌方几千子弹,分格计算等等问。那你不就是走向的游戏开发者的道路了么?
总得有一个起步的小山坡,而这个飞机大战,其实就是这个起飞的小山坡。

再看看其它的几个类似的。


环境及工具:
python 的环境问题比JAVA要重很多。这也是为什么很多人能自学C语言,自学python 语言,但是自学python 的人不多的一个原因。
本系列环境:
| 环境 | win11 |
|---|---|
| 工具 | pycharm 2018.3(为什么不使用更高的版本,一个是破解的BUG问题,一个是我用高的你用低的那就不兼容了) |
| python | 3.7.0(不管是学校还是培训里最主流的都是3.7 、3.8、 3.9) |
| 数据库 | 无 |
| 项目导入方式 | 打开目录 |
| 虚拟环境 | pycharm 默认 |
python 版本
在大学学习Python时,选择适合的版本非常重要。当前,Python已经更新到了3.11版本,而3.7、3.8、3.9和3.10、3.11都在维护中。
相比之下,3.6版本已经不再支持,因此不建议安装。
对于学生来说,学习最新版本的Python最为理想。最新版本不仅包含了最新的特性,还能够帮助学生更好地理解这门语言的发展脉络。通过学习最新版本,学生可以紧跟技术前沿,掌握最新的编程技术。
同时,最新版本的Python还具备更好的性能和稳定性。随着版本的更新,开发团队不断优化和完善代码,使得新版本的Python运行效率更高,兼容性更好,这对于学生来说是非常有益的。

关于版本的建议:你要是初学者我的建议就是跟我一模一样,如果你的电脑里有3.7 3.8 3 .9 了,那不换也行。
但是如果是3.10以上的,我的建议是换一换。
当你感觉到python 的性能对你有限制的时候,我想你也不是初学者了。如果你对虚拟环境熟练了,那你其实也可以像我这样,把2.7 3.7-- 3.12 的全安装一套。
项目说明
这个游戏工作量比较小,也比较粗糙。当做学习还是相当的不错的。当毕业设计就有点拿不出手了。但是还是相当的值得学习
总体功能
其实,可以参考JAVA版 的飞机大战,
因为他们的思路,算法,甚至是飞机,都是同一套。

基于java的 飞机大战游戏的大作业–源代码–【课程设计】

飞机大战主要需要我方飞机和敌方飞机,还有子弹,特殊nPC,开始背景,结束背景,以及背景音乐。我方飞机可以随意移动,敌方飞机无规律出现。游戏玩家通过鼠标移动控制飞机移动,我方飞机在游戏开始时就一直能发射子弹,当我方子弹碰到敌方飞机时,敌方飞机消失。当玩家飞机碰到敌方子弹时,生命值减一,直到玩家飞机生命值为一时,游戏结束。
基于Java的飞机大战游戏的设计与实现有以下几个模块:
(1)游戏状态控制功能模块
(2)游戏难度的调整模块
(3)游戏界面绘画功能模块
(4)玩家游戏控制功能模块
4.2 功能模块设计
4.2.1 游戏状态控制功能模块
游戏的状态控制包括运行及结束游戏,首先进入游戏的开始页面,在游戏进行时,玩家必须躲避或者击落敌方飞机,玩家飞机的生命值降低为0的时候游戏就会结束,弹出游戏结束界面。
4.2.2 游戏难度的调整模块
玩家玩的时间越长游戏的难度越高,敌方飞机的数量越多、敌方飞机出现的频率越高,玩家保证飞机的存活的难度越高,操作难度相应也高。
4.2.3 游戏界面绘画功能模块
左上角会显示玩家飞机当前生命值,游戏时间,当前分数,其他地方用来输出玩家对我方飞机的控制与敌方飞机的动作显示
4.2.4 玩家游戏控制功能模块
玩家可以通过控制鼠标或者键盘来控制方飞机(Hero airplane)的移动。
4.3 游戏难点分析
4.3.1 绘图美化
清新靓丽的游戏界面将给用户带来愉悦的美感。因此,在这个游戏中,主要参考原始的游戏画面,敌我飞机的形象也应该是美丽的。
4.3.2 多线程技术的实现
应用程序线程机制的基石,实现了游戏,游戏的刷架的控制,装上各种角色的资源和背景(如飞机,机友)的要求,以实现整个游戏实现自动控制线程 控制。
4.3.3 防碰撞问题的解决
例如,敌方飞机与玩家飞机防碰撞,敌方飞机与玩家飞机防碰撞,等等。防碰撞检测技术实现在不同情况下,有不同的防碰撞检测方法。
4.3.4 动画的实现
用图片的阵列,动画切片变换形成。图像阵列,千变万化的图像画在画布标,使动画,这是一个图像的形成阵列。使用切片来实现动画,所有的帧都放置在相同的图像中,以达到爆炸的效果。
————————————————
核心规则
碰撞问题的解决
例如,敌方飞机与玩家飞机防碰撞,敌方飞机与玩家飞机防碰撞,等等。防碰撞检测技术实现在不同情况下,有不同的防碰撞检测方法。

if bullet.x > self.x + 0.05 * width and bullet.x < self.x + 0.95 * width and bullet.y + 0.1 * height > self.y and bullet.y < self.y + 0.8 * height:
代码部分
文件编码问题。不太熟悉pycharm的同学请不要随意怀疑本程序运行出错,或不能运行,盲目修改文件
# 判断是否被击中
def isHitted(self, plane, width, height): # widht和height表示范围
if plane.bullet_list and self.HP:
for bullet in plane.bullet_list:
if bullet.x > self.x + 0.05 * width and bullet.x < self.x + 0.95 * width and bullet.y + 0.1 * height > self.y and bullet.y < self.y + 0.8 * height:
self.HP -= bullet.damage_value # hero的HP减去子弹的伤害值
if self.plane_type == 3:
show_score_HP()
plane.bullet_list.remove(bullet) # 删除击中的子弹
self.hitted = True
if plane.plane_type == 3 and plane.barrel_2 and plane.barrel_3:
for bullet in plane.barrel_2: # 判断炮管3是否击中
if bullet.x > self.x + 0.05 * width and bullet.x < self.x + 0.95 * width and bullet.y + 0.1 * height > self.y and bullet.y < self.y + 0.8 * height:
self.HP -= bullet.damage_value # hero的HP减去子弹的伤害值
plane.barrel_2.remove(bullet) # 删除击中的子弹
self.hitted = True
for bullet in plane.barrel_3: # 判断炮管3是否击中
if bullet.x > self.x + 0.05 * width and bullet.x < self.x + 0.95 * width and bullet.y + 0.1 * height > self.y and bullet.y < self.y + 0.8 * height:
self.HP -= bullet.damage_value # hero的HP减去子弹的伤害值
plane.barrel_3.remove(bullet) # 删除击中的子弹
self.hitted = True
主流程:
while True:
window_screen.fill(bg_color) # 背景色填充
if hit_score >= 999: # 得分更新
hit_score = 999
if hit_score > hit_score_temp and hero:
hit_score_temp = hit_score
show_score_HP()
elif hit_score < hit_score_temp:
hit_score_temp = 0
if hit_score <=50:
background = pygame.image.load("./static/background1.png")
if hit_score > 50:
background = pygame.image.load("./static/background2.png")
if hit_score > 100:
background = pygame.image.load("./static/background3.png")
create_enemy_plane() # 创建敌机
# 创建补给
# 血量补给, 0-补给类型, 3-补给速度, -3-补给HP
if not blood_supply:
create_supply_2_hero(0)
# 弹药补给
if not bullet_supply:
create_supply_2_hero(1)
# 显示背景及右侧图片
show_background_right_image()
if hero: # hero
hero.display() # hero展示
if hero:
hero.press_move() # 持续移动
hero.press_fire() # 持续开火
hero.move_limit() # hero移动范围判断
# blood_supply
if blood_supply:
supply_display_move(blood_supply)
# bullet_supply
if bullet_supply:
supply_display_move(bullet_supply)
# 是否吃到补给
if hero and blood_supply:
hero.supply_hitted(blood_supply, plane_size[hero.plane_type]["width"],
plane_size[hero.plane_type]["height"])
if hero and bullet_supply:
hero.supply_hitted(bullet_supply, plane_size[hero.plane_type]["width"],
plane_size[hero.plane_type]["height"])
# enemy0
if enemy0_list:
for enemy0 in enemy0_list:
enemy_display_move_fire(enemy0)
# enemy1
if enemy1_list:
for enemy1 in enemy1_list:
enemy_display_move_fire(enemy1)
# enemy2
if enemy2_list:
for enemy2 in enemy2_list:
enemy_display_move_fire(enemy2)
show_score_HP() # 得分, HP显示
pause() # 是否暂停
pygame.display.update() # 更新图片
key_control() # 调用键盘控制
time.sleep(0.01) # 系统睡眠时间(电脑配置不同,影响游戏流畅运行度)
找到关键核心代码的方法:
应用软件的核心代码是指这个程序最关键部分的代码。例如WinRAR,它的核心代码就是压缩算法部分,而诸如用户界面、操作系统移植等部分就无足轻重了。
商城类的核心代码是指业务层的代码,比如你商城的核心代码就是:商品、购物车、创建订单、支付这些代码就是核心代码。
作为程序员,我们经常需要看懂别人的代码。特别是在开源社区中,我们需要理解许多优秀的开源项目的代码。而在Gitee这样的代码托管平台上,我们如何快速有效地看懂别人的代码呢?本文将为大家介绍一些方法。
1.阅读README和项目介绍
在Gitee上,许多开源项目都会有自己的README文件或项目介绍。这些文件一般会介绍项目的背景、功能、使用方法等内容,可以帮助我们快速了解这个开源项目的基本情况。如果我们能够从这些文件中找到与自己相关的内容,就可以快速入手这个开源项目的代码。
2.了解项目结构和代码组织
在阅读代码之前,我们需要先了解这个开源项目的代码结构和代码组织方式。通常,开源项目会将不同的功能模块封装到不同的代码文件中,并按照一定的目录结构组织起来。如果我们能够了解这个开源项目的代码组织方式,就能更加快速地找到所需的代码。
3.利用IDE和工具
IDE和一些代码阅读工具可以帮助我们更快速、更高效地阅读代码。例如,Java开发者可以使用Eclipse或IntelliJ IDEA这样的IDE,可以快速打开代码文件、查看类、方法和变量等信息。另外,一些代码阅读工具,如Source Insight、CodeCompare等,可以帮助我们更方便地查看代码的结构和关系,以及快速跳转到相关代码。
4.关注代码注释和文档
良好的代码注释和文档可以帮助我们更快速地理解代码。因此,在阅读别人的代码时,我们可以将注意力放在代码注释和文档上。有些开源项目会提供详细的文档,有些则注重代码注释。如果我们能够针对代码注释和文档有一个系统的阅读和理解,就能更快速地掌握别人的代码。
5.跑通测试和运行项目
如果我们想更深入地了解别人的代码,可以试着跑通相关的测试,或者直接运行这个开源项目。通过跑测试和运行项目,我们可以更加直观地了解代码的实现细节和具体的业务逻辑。
总结:
以上就是在Gitee上快速理解他人代码的一些方法,希望对大家有所帮助。当然,阅读代码是一件需要耐心和细心的事情,需要我们多花一点时间和心思。只有沉下心来,慢慢阅读每一行代码,才能真正理解它们的含义和作用。
运行的界面
当然了,这里为了调试的方便与阅读的方便,有很多的性能损失的地方

总结
就一句,真的很实用,真的太实用了。
B站讲解地址:
配套资源
【课程设计】 【python】让你的python从游戏里起飞–飞机大战–免费版本
课程设计 python让你的python从游戏里起飞-飞机大战-免费代码
【课程设计】 【python】让你的python从游戏里起飞–飞机大战(VIP全功能)

8245

被折叠的 条评论
为什么被折叠?



