Python如何实现飞机大战游戏
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"Python如何实现飞机大战游戏"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python如何实现飞机大战游戏"文章能帮助大家解决问题。pl
千家信息网最后更新 2026年10月31日Python如何实现飞机大战游戏
这篇文章主要介绍"Python如何实现飞机大战游戏"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python如何实现飞机大战游戏"文章能帮助大家解决问题。
plane_main.py
import pygamefrom 飞机大战.plane_sprites import *class PlaneGame(object): """飞机大战主程序""" def __init__(self): print("游戏初始化") # 1.创建游戏窗口 self.screen = pygame.display.set_mode(SCREEN_RECT.size) # 2.创建游戏时钟 self.clock = pygame.time.Clock() # 3.创建游戏私有方法,精灵和精灵组的创建 self.__create_sprites() # 4.设置定时器时间 -创建敌机 pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000) pygame.time.set_timer(HERO_FIRE_EVENT, 500) def __create_sprites(self): # 创建背景精灵和精灵组 bg1 = Background() bg2 = Background(True) self.back_group = pygame.sprite.Group(bg1, bg2) # 创建敌机的精灵组 self.enemy_group = pygame.sprite.Group() # 创建英雄的精灵和精灵组 self.hero = Hero() self.hero_group = pygame.sprite.Group(self.hero) def start_game(self): print("游戏开始----") while True: # 1.设置刷新帧率 self.clock.tick(FRAME_PER_SEC) # 2.时间监听 self.__event_handler() # 3.碰撞检测 self.__check_collide() # 4.更新/绘制精灵组 self.__update_sprites() # 5.更新显示 pygame.display.update() def __event_handler(self): for event in pygame.event.get(): # 判断是否退出游戏 if event.type == pygame.QUIT: PlaneGame.__game_over() elif event.type == CREATE_ENEMY_EVENT: print("敌机出场----") # 创建敌机精灵 enemy = Enemy() # 将敌机精灵添加到敌机精灵组 self.enemy_group.add(enemy) elif event.type == HERO_FIRE_EVENT: self.hero.fire() # elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT: # print("向右移动") # 使用键盘提供的方法获取键盘按键 -按键元组 keys_pressed = pygame.key.get_pressed() # 判断元组中对应的按键索引值 if keys_pressed[pygame.K_RIGHT]: self.hero.speed = 10 elif keys_pressed[pygame.K_LEFT]: self.hero.speed = -10 else: self.hero.speed = 0 def __check_collide(self): # 1.子弹摧毁敌机 pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True) # 2.敌机撞毁英雄 enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True) # 判断列表是否有内容 if len(enemies) > 0: # 让英雄牺牲 self.hero.kill() # 结束游戏 PlaneGame.__game_over() def __update_sprites(self): self.back_group.update() self.back_group.draw(self.screen) self.enemy_group.update() self.enemy_group.draw(self.screen) self.hero_group.update() self.hero_group.draw(self.screen) self.hero.bullets.update() self.hero.bullets.draw(self.screen) @staticmethod def __game_over(): print("游戏结束") pygame.quit() exit()if __name__ == "__main__": # 创建游戏对象 game = PlaneGame() # 启动游戏 game.start_game()plane_sprites.py
import randomimport pygame# 屏幕大小的常量SCREEN_RECT = pygame.Rect(0, 0, 512, 768)# 刷新的帧率FRAME_PER_SEC = 60# 创建敌机的定时器常量CREATE_ENEMY_EVENT = pygame.USEREVENT# 英雄发射子弹事件HERO_FIRE_EVENT = pygame.USEREVENT + 1class 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): # 在屏幕的垂直方向上移动 self.rect.y += self.speedclass Background(GameSprite): """游戏背景精灵""" def __init__(self, is_alt=False): # 1.调用父类方法实现精灵的创建 super().__init__("./images/img_bg_level_5.jpg") # 2.判断是否交替图像 if is_alt: self.rect.y = -self.rect.height def update(self): # 1.调用父类的方法实现 super().update() # 2.判断是否移出屏幕 if self.rect.y >= SCREEN_RECT.height: self.rect.y = -self.rect.heightclass Enemy(GameSprite): """敌机精灵""" def __init__(self): # 1.调用父类方法,创建敌机精灵,同时指定敌机图片 super().__init__("./images/img-plane_2.png") # 2.指定敌机的初始随机速度 self.speed = random.randint(2, 5) # 3.指定敌机的初始随机位置 self.rect.bottom = 0 max_x = SCREEN_RECT.width - self.rect.width self.rect.x = random.randint(0, max_x) def update(self): # 1.调用父类方法,保持垂直方向飞行 super().update() # 2.判断是否飞出屏幕,如果是,则从精灵组删除敌机 if self.rect.y >= SCREEN_RECT.height: print("飞机飞出屏幕,需要从精灵组删除---") # kill方法可以将精灵从所有精灵组中移除,精灵就会自动销毁 self.kill() def __del__(self): # print("敌机挂了%s" % self.rect) passclass Hero(GameSprite): """英雄精灵""" def __init__(self): # 1.调用父类方法,设置image&speed super().__init__("./images/hero2.png", 0) # 2.设置英雄的初始位置 self.rect.centerx = SCREEN_RECT.centerx self.rect.bottom = SCREEN_RECT.bottom - 20 # 3.创建子弹精灵组 self.bullets = pygame.sprite.Group() def update(self): # 英雄在水平方向移动 self.rect.x += self.speed # 英雄不能离开屏幕 if self.rect.x < 0: self.rect.x = 0 elif self.rect.right > SCREEN_RECT.right: self.rect.right = SCREEN_RECT.right def fire(self): for i in (0, 1, 2): # 1.创建子弹精灵 bullet = Bullet() # 2.设置精灵位置 bullet.rect.bottom = self.rect.y - i*40 bullet.rect.centerx = self.rect.centerx # 3.将子弹添加到精灵组 self.bullets.add(bullet)class Bullet(GameSprite): """子弹精灵""" def __init__(self): # 调用父类方法,设置子弹图片,设置初始速度 super().__init__("./images/bullet_11.png", -5) def update(self): # 调用父类方法,让子弹垂直飞出屏幕 super().update() # 判断子弹是否飞出屏幕 if self.rect.bottom < 0: self.kill() def __del__(self): print("子弹被销毁")关于"Python如何实现飞机大战游戏"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
精灵
敌机
方法
子弹
屏幕
英雄
飞机
大战
飞出
位置
按键
方向
知识
更新
移动
内容
图片
定时器
对象
常量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
山东特亿宝互联网科技有限公司
互联网科技有限公司经营范围
云电互联网科技
美国互联网黑科技
猫创互联网科技
科技互联网创业计划书
丰台科技园 互联网公司
哈尔滨秒房互联网科技有限公司
蓝色互联网科技
玖二柒互联网科技公司待遇
青岛中康互联网医疗科技有限公司
随着互联网科技发展
移动互联网科技公司
宜昌元轩互联网科技有限公司
内蒙古九一互联网科技
互联网行业科技股
互联网营销推广黑科技
容联科技互联网电商
科技互联网专业工作会议发言稿
互联网金融公司科技
喔噻互联网科技
贵州叶脉互联网科技有限公司所属行业
美国互联网科技实力
锡山区互联网智能科技产品供应
广州百诚互联网科技有限公司官网
有人说阿里系是互联网科技企业
长沙渺峰互联网科技有限公司
互联网科技和医药行业
长沙易易互联网科技有限公司