Python 60行代码实现飞机大战简化版,复制就能玩!

张开发
2026/4/11 13:06:37 15 分钟阅读

分享文章

Python 60行代码实现飞机大战简化版,复制就能玩!
Python 60行代码实现飞机大战简化版复制就能玩今天给大家安排一个超解压的Python小游戏不用复杂操作不用安装多余工具60行代码就能实现飞机大战简化版复制粘贴直接运行新手也能轻松上手比起枯燥的语法知识点这种能直接玩起来的小项目既能练手Python又能收获满满的成就感闲下来玩几分钟解压又有趣。一、游戏效果展示简化版飞机大战玩法超简单方向键 ↑↓←→ 控制飞机移动空格键发射子弹击中敌机即可得分敌机随机出现碰到敌机游戏结束游戏运行界面如下图所示运行得分显示界面二、准备工作1分钟搞定我们还是先双击运行PyCharm 2025.3.4软件点击PyCharm界面中左侧侧边栏的终端按钮显示出如下界面。这个小游戏用 Python pygame 实现pygame 是Python专门用来做小游戏的库安装超简单打开终端输入一行命令即可pip install pygame如果安装失败试试换国内源新手也能搞定pythonpip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple终端输入pip install pygame命令之后按下回车(enter)按钮之后会下载该库文件界面如下图所示。三、完整代码复制就能跑直接复制下面的代码粘贴到Python编辑器PyCharm、VS Code都可以点击运行就能玩无需修改任何内容在PyCharm中新建一个项目工程和之前写的创建项目步骤一样。界面如下图所示将下面代码复制粘贴到文件中。import pygameimport random# 初始化pygamepygame.init()# 游戏窗口设置WIDTH, HEIGHT 400, 600screen pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption(Python飞机大战简化版)# 颜色定义简化版不用记复杂色值WHITE (255, 255, 255)BLACK (0, 0, 0)RED (255, 0, 0)BLUE (0, 0, 255)# 飞机类玩家控制class Player(pygame.sprite.Sprite):def __init__(self):super().__init__()# 简化飞机为蓝色矩形无需加载图片新手友好self.image pygame.Surface((50, 40))self.image.fill(BLUE)self.rect self.image.get_rect()self.rect.centerx WIDTH // 2 # 飞机初始位置水平居中self.rect.bottom HEIGHT - 10 # 飞机初始位置底部self.speed_x 5 # 水平移动速度self.speed_y 5 # 垂直移动速度# 移动控制def update(self):keys pygame.key.get_pressed()if keys[pygame.K_LEFT] and self.rect.left 0:self.rect.x - self.speed_xif keys[pygame.K_RIGHT] and self.rect.right WIDTH:self.rect.x self.speed_xif keys[pygame.K_UP] and self.rect.top 0:self.rect.y - self.speed_yif keys[pygame.K_DOWN] and self.rect.bottom HEIGHT:self.rect.y self.speed_y# 子弹类class Bullet(pygame.sprite.Sprite):def __init__(self, x, y):super().__init__()self.image pygame.Surface((5, 15))self.image.fill(WHITE)self.rect self.image.get_rect()self.rect.centerx xself.rect.bottom yself.speed_y -10 # 子弹向上飞行def update(self):self.rect.y self.speed_y# 子弹飞出屏幕后删除节省内存if self.rect.bottom 0:self.kill()# 敌机类class Enemy(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image pygame.Surface((40, 30))self.image.fill(RED)self.rect self.image.get_rect()# 敌机随机出现位置水平方向self.rect.x random.randint(0, WIDTH - self.rect.width)self.rect.y random.randint(-100, -40) # 从屏幕上方飞出self.speed_y random.randint(3, 6) # 敌机速度随机def update(self):self.rect.y self.speed_y# 敌机飞出屏幕后删除if self.rect.top HEIGHT:self.kill()# 分数和时钟设置score 0font pygame.font.SysFont(None, 40)clock pygame.time.Clock()# 创建精灵组简化管理飞机、子弹、敌机all_sprites pygame.sprite.Group()enemies pygame.sprite.Group()bullets pygame.sprite.Group()# 创建玩家飞机player Player()all_sprites.add(player)# 生成敌机每隔1秒生成1个def spawn_enemy():enemy Enemy()all_sprites.add(enemy)enemies.add(enemy)pygame.time.set_timer(pygame.USEREVENT, 1000)# 游戏主循环running Truewhile running:# 控制游戏帧率每秒60帧流畅不卡顿clock.tick(60)# 事件处理关闭窗口、发射子弹、生成敌机for event in pygame.event.get():if event.type pygame.QUIT:running False# 空格键发射子弹if event.type pygame.KEYDOWN:if event.key pygame.K_SPACE:bullet Bullet(player.rect.centerx, player.rect.top)all_sprites.add(bullet)bullets.add(bullet)# 每隔1秒生成敌机if event.type pygame.USEREVENT:spawn_enemy()# 更新所有精灵飞机、子弹、敌机移动all_sprites.update()# 碰撞检测子弹击中敌机hits pygame.sprite.groupcollide(enemies, bullets, True, True)for hit in hits:score 10 # 每击中1个敌机得10分spawn_enemy() # 击中后再生成1个敌机# 碰撞检测飞机碰到敌机游戏结束if pygame.sprite.spritecollideany(player, enemies):running False# 绘制游戏界面screen.fill(BLACK) # 背景色黑色模拟太空all_sprites.draw(screen) # 绘制所有精灵# 绘制分数score_text font.render(fScore: {score}, True, WHITE)screen.blit(score_text, (10, 10))# 更新屏幕显示pygame.display.flip()# 游戏结束退出pygamepygame.quit()print(f游戏结束你的得分{score})点击运行按钮界面如下图所示。游戏运行界面如下图所示按上下左右移动空格按钮进行射击。四、代码简单解析不用死记代码简单了解核心逻辑后续可以自己修改玩法初始化设置定义游戏窗口大小、颜色、帧率搭建游戏基础框架精灵类分别定义玩家飞机、子弹、敌机包含它们的外观简化为矩形无需找图片和移动逻辑事件处理监听方向键、空格键、窗口关闭事件实现飞机移动、子弹发射、敌机生成碰撞检测判断子弹是否击中敌机、飞机是否碰到敌机触发得分和游戏结束逻辑界面绘制绘制背景、所有角色和分数保证游戏画面正常显示。五、扩展玩法学会基础版本后新手可以试试这些小修改练手Python更有成就感修改颜色把飞机改成自己喜欢的颜色比如绿色、黄色敌机改成橙色调整速度修改飞机、子弹、敌机的速度增加游戏难度添加图片找飞机、敌机、子弹的图片替换掉代码中的矩形注释里有提示增加音效添加发射子弹、击中敌机、游戏结束的音效网上可找免费音效素材。六、小结这个简化版飞机大战代码不长、逻辑简单既适合Python新手练手又能直接玩起来解压。大家可以先复制代码运行感受一下效果再试着修改扩展慢慢掌握pygame的基础用法。后续我还会分享更多Python小游戏难度由浅入深新手也能轻松跟上如果运行过程中遇到问题评论区留言我会一一回复解答收藏起来闲下来练手、解压都合适也别忘了转发给身边喜欢Python的朋友呀评论区可以发一下自己的得分截图看看谁的比较高。

更多文章