python轰炸敌机小游戏_python 经典游戏(飞机大战)

一、安装pygame

python轰炸敌机小游戏_python 经典游戏(飞机大战)

2、点击pypi,然后输入pygame

python轰炸敌机小游戏_python 经典游戏(飞机大战)

3、点击第一个pygame1.9.6,再点击download files

python轰炸敌机小游戏_python 经典游戏(飞机大战)

4、找到和自己python版本匹配的版本,点击下载,

5、因为这是whl的文件,下载完完后,打开控制台,进入下载目录下,使用pip命令运行

python -m pip install –user +文件名

6、pip list查看是否安装成功

python轰炸敌机小游戏_python 经典游戏(飞机大战)

7、然后cmd进入代码路径

python轰炸敌机小游戏_python 经典游戏(飞机大战)

8、输入python plane_main.py 回车

python轰炸敌机小游戏_python 经典游戏(飞机大战)

9、代码启动后效果

python轰炸敌机小游戏_python 经典游戏(飞机大战)

二、摘取关键代码实现说明

1、首先创建游戏相关事件及组件类,代码如下:pygame

plane_sprites CREATE_ENEMY_EVENT pygame.USEREVENT

HERO_FIRE_EVENT pygame.USEREVENT pygame.init.screen pygame.display.set_modeSCREEN_RECT.size.clock pygame.time.Clock.__create_spritesPlaneGame.__create_user_events.back_group pygame.sprite.GroupBackgroundBackground.hero Hero.hero_group pygame.sprite.Group.hero.enemy_group pygame.sprite.Group.destroy_group pygame.sprite.Grouppygame.time.set_timerCREATE_ENEMY_EVENTpygame.time.set_timerHERO_FIRE_EVENT.clock.tick.__event_handler.__update_sprites.__check_collidepygame.display.updateenemies pygame.sprite.groupcollide.enemy_group.hero.bullets.keysenemy enemiesenemy.life enemy.life enemy.add.destroy_groupenemy.remove.enemy_groupenemy.destroiedpygame.sprite.spritecollide.hero.enemy_group.hero.destroiedevent pygame.event.getevent.type pygame.QUITPlaneGame.__finished_gameevent.type HERO_FIRE_EVENT.hero.fireevent.type CREATE_ENEMY_EVENT.enemy_group.addEnemyevent.type pygame.KEYDOWN event.key pygame.K_benemy .enemy_group.spritesenemy.destroied.hero.can_destroiedPlaneGame.__finished_gamekeys_pressed pygame.key.get_presseddir keys_pressedpygame.K_RIGHTkeys_pressedpygame.K_LEFT.hero.speed dir

for group in [self.back_group, self.hero_group,

self.hero.bullets, self.enemy_group,

self.destroy_group]:

group.update()

group.draw(self.screen)

@staticmethod

def __finished_game():

“””退出游戏”””

print(“退出游戏”)

pygame.quit()

exit()

if name == ‘main‘:

PlaneGame().start_game()

2、游戏精灵,背景精灵,飞机精灵,英雄精灵,子弹精灵,敌机精灵相关类的实现,代码如下:

import random

import pygame

屏幕尺寸

SCREEN_RECT = pygame.Rect(0, 0, 480, 700)

class GameSprite(pygame.sprite.Sprite):

“””游戏精灵”””

def init(self, image_name, speed=1):

super().init()

self.image = pygame.image.load(image_name)

self.rect = self.image.get_rect()

self.speed = speed

def update(self, *args):

self.rect.top += self.speed

@staticmethod

def image_names(prefix, count):

names = []

for i in range(1, count + 1):

names.append(“./images/” + prefix + str(i) + “.png”)

return names

class Background(GameSprite):

“””背景精灵”””

def init(self, is_alt=False):

super().init(“./images/background.png”)

if is_alt:

self.rect.bottom = 0

def update(self, *args):

super().update(args)

if self.rect.top >= SCREEN_RECT.height:

self.rect.bottom = 0

class PlaneSprite(GameSprite):

“””飞机精灵,包括敌机和英雄”””

def init(self, image_names, destroy_names, life, speed):

image_name = image_names[0]

super().init(image_name, speed)

生命值

self.life = life

正常图像列表

self.__life_images = []

for file_name in image_names:

image = pygame.image.load(file_name)

self.__life_images.append(image)

被摧毁图像列表

self.__destroy_images = []

for file_name in destroy_names:

image = pygame.image.load(file_name)

self.__destroy_images.append(image)

默认播放生存图片

self.images = self.__life_images

显示图像索引

self.show_image_index = 0

是否循环播放

self.is_loop_show = True

是否可以被删除

self.can_destroied = False

def update(self, *args):

self.update_images()

super().update(args)

def update_images(self):

“””更新图像”””

pre_index = int(self.show_image_index)

self.show_image_index += 0.05

count = len(self.images)

判断是否循环播放

if self.is_loop_show:

self.show_image_index %= len(self.images)

elif self.show_image_index > count – 1:

self.show_image_index = count – 1

self.can_destroied = True

current_index = int(self.show_image_index)

if pre_index != current_index:

self.image = self.images[current_index]

def destroied(self):

“””飞机被摧毁”””

默认播放生存图片

self.images = self.__destroy_images

显示图像索引

self.show_image_index = 0

是否循环播放

self.is_loop_show = False

class Hero(PlaneSprite):

“””英雄精灵”””

def init(self):

image_names = GameSprite.image_names(“me”, 2)

destroy_names = GameSprite.image_names(“me_destroy_”, 4)

super().init(image_names, destroy_names, 0, 0)

设置初始位置

self.rect.centerx = SCREEN_RECT.centerx

self.rect.bottom = SCREEN_RECT.bottom – 120

创建子弹组

self.bullets = pygame.sprite.Group()

def update(self, *args):

self.update_images()

飞机水平移动

self.rect.left += self.speed

超出屏幕检测

if self.rect.left

self.rect.left = 0

if self.rect.right > SCREEN_RECT.right:

self.rect.right = SCREEN_RECT.right

def fire(self):

“””发射子弹”””

bullet_count = len(self.bullets.sprites())

print(“子弹数量 %d” % bullet_count)

for i in range(0, 3):

创建子弹精灵

bullet = Bullet()

设置子弹位置

bullet.rect.bottom = self.rect.top – i * 20

bullet.rect.centerx = self.rect.centerx

将子弹添加到精灵组

self.bullets.add(bullet)

class Bullet(GameSprite):

“””子弹精灵”””

def init(self):

image_name = “./images/bullet1.png”

super().init(image_name, -2)

def update(self, *args):

super().update(args)

判断是否超出屏幕

if self.rect.bottom

self.kill()

class Enemy(PlaneSprite):

“””敌机精灵”””

def init(self):

image_names = [“./images/enemy1.png”]

destroy_names = GameSprite.image_names(“enemy1_down”, 4)

super().init(image_names, destroy_names, 2, 1)

随机敌机出现位置

width = SCREEN_RECT.width – self.rect.width

self.rect.left = random.randint(0, width)

self.rect.bottom = 0

随机速度

self.speed = random.randint(1, 3)

def update(self, *args):

super().update(args)

判断敌机是否移出屏幕

if self.rect.top >= SCREEN_RECT.height:

将精灵从所有组中删除

self.kill()

判断敌机是否已经被销毁

if self.can_destroied:

self.kill()

三、其他补充

暂时没有

Original: https://blog.csdn.net/weixin_39607474/article/details/114466508
Author: weixin_39607474
Title: python轰炸敌机小游戏_python 经典游戏(飞机大战)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/783545/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python 实现批量 csv文件 转化为 execl…

    将多个CSV文件,合并到一个Excel文件中的,多个sheet工作表。 网上大多方法都是将csv 直接合并在一起,也不分别创建sheet表。还有一些解答说CSV不支持合并到多个sh…

    Python 2023年8月19日
    069
  • 处理器基础知识

    文章首发于我的 github 仓库-cv算法工程师成长之路,欢迎关注我的公众号-嵌入式视觉。本人水平有限,文章如有问题,欢迎及时指出。如果看完文章有所收获,一定要先点赞后收藏。毕竟…

    Python 2023年10月28日
    072
  • 数据处理笔记9:缺失值-多变量插补

    Missforest ycimpute Missingpy SKlearn 论文启发: https://doi.org/10.1093/jamiaopen/ooab008 缺失值填…

    Python 2023年8月29日
    057
  • 基于残差网络的CNN模型进行人脸识别实战实战项目

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年9月26日
    041
  • DevOps | 如何快速提升团队软件开发成熟度,快速提升研发效能?

    今天一个小伙伴问我,如何「快速提升」一个团队的软件开发成熟度?我犯难了。我个人理解一个团队的软件开发成熟度涉及的东西很多,但最简单最直接的方法就是发钱涨工资,可是估计很多公司不愿意…

    Python 2023年10月17日
    032
  • 376. 机器任务——最小点覆盖+匈牙利算法

    有两台机器 A,B 以及 K 个任务。 机器 A 有 N 种不同的模式(模式 0∼N−1),机器 B 有 M 种不同的模式(模式 0∼M−1)。 两台机器最开始都处于模式 0。 每…

    Python 2023年10月8日
    041
  • 关于Python中numpy的基本使用详解以及速查

    写在前面 现在写论文做毕设大概要用到这个,所以今天就大概把numpy的基本用法过了一遍,跟着视频中的例子练习了一遍,感觉还是蛮实用的。但是有的步骤可能用起来还不是很熟练。所以写了笔…

    Python 2023年8月25日
    048
  • 一文掌握vscode远程调试python代码

    0 背景 在《一文掌握vscode远程gdb调试》文章中,介绍了如何使用 vscode 调试 c/c++ 代码,作为该文的姊妹篇,本文对调试 python 代码的方法做一个整理。 …

    Python 2023年8月2日
    062
  • 【深度学习】常见的神经网络层(上)

    🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🥰 博客首页:knighthood2001😗 欢迎点赞👍评论🗨️❤️ 热爱python,期待与大家一同进步成长!!❤️👀 给大家推荐一款很火爆的刷题、面试求…

    Python 2023年8月2日
    055
  • RNN的PyTorch实现

    PyTorch已经实现了一个RNN类,就在torch.nn工具包中,通过torch.nn.RNN调用。 使用步骤: 在实例化该类时,需要传入如下属性: input_size:输入层…

    Python 2023年10月28日
    040
  • Pycharm使用技巧

    Pycharm使用技巧 文章目录 Pycharm使用技巧 * 技巧 常用快捷键 参考来源 技巧 快速修改同一个变量或类 在写代码中时我们经常要定义很多变量或类,变量或类在写代码时可…

    Python 2023年9月23日
    044
  • Python模块和包

    首先明白一个知识点。Python代码用的是解释器,c语言代码用的是编译器,java解释器编译器都可以。 标准库和模块 像python的开发者,会在python安装包中直接集成一些功…

    Python 2023年9月19日
    050
  • 《隐秘的角落》影评数据分析

    一、研究背景 随着移动互联网和智能设备的不断发展,人们的生活质量也不断地提高,可以通过互联网在线对电视剧进行评价评分。电视剧的热播不但给电视剧市场带来巨大的经济利益,同时也给电视剧…

    Python 2023年10月7日
    055
  • 【图像处理】opencv | 图像的载入,显示,保存 | 视频流的载入,显示,保存

    文章目录 前言 一、cv2读取图片并展示 * 1.1、cv2.imread读取图片 1.2、cv2.imshow展示图片 1.3、完整代码 1.4、封装函数调用 1.5、cv2读取…

    Python 2023年9月5日
    066
  • 一小伙使用 python爬虫来算命?

    1.获取内容 我们今天呢,就先做一个通过星座来得知三天的运势的小玩意, 这里有十二个星座,我点了第一个和第二个进去,也就是白羊座和金牛座: 就会发现一个规律 通过观察网址的链接,我…

    Python 2023年10月31日
    062
  • 中导入pygame_Pygame游戏——贪吃蛇(一)

    这一次利用Pygame制作一个贪吃蛇游戏,先来看下效果,可能有些也不是很完善,算是一个小小的Demo吧,也可以自己继续完善。 Python《贪吃蛇》https://www.zhih…

    Python 2023年9月24日
    056
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球