python飞机大战游戏.py

ops/2024/12/23 4:10:00/

pythonpy_0">python飞机大战游戏.py

python">import pygame
import random# 游戏窗口大小
WINDOW_WIDTH = 600
WINDOW_HEIGHT = 800# 颜色定义
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)# 初始化Pygame
pygame.init()# 创建游戏窗口
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("飞机大战")# 创建时钟对象,用于控制游戏帧率
clock = pygame.time.Clock()# 飞机类
class Plane(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = pygame.Surface([50, 50])  # 飞机的形状self.image.fill(WHITE)self.rect = self.image.get_rect()self.rect.x = WINDOW_WIDTH // 2self.rect.y = WINDOW_HEIGHT - 100self.speed = 5def update(self):# 获取键盘按键状态keys = pygame.key.get_pressed()if keys[pygame.K_LEFT]:self.rect.x -= self.speedif keys[pygame.K_RIGHT]:self.rect.x += self.speed# 限制飞机在窗口范围内移动if self.rect.x < 0:self.rect.x = 0if self.rect.x > WINDOW_WIDTH - 50:self.rect.x = WINDOW_WIDTH - 50def shoot(self):bullet = Bullet(self.rect.x + 23, self.rect.y)all_sprites.add(bullet)bullets.add(bullet)# 子弹类
class Bullet(pygame.sprite.Sprite):def __init__(self, x, y):super().__init__()self.image = pygame.Surface([5, 10])  # 子弹的形状self.image.fill(WHITE)self.rect = self.image.get_rect()self.rect.x = xself.rect.y = yself.speed = 10def update(self):self.rect.y -= self.speedif self.rect.y < -10:self.kill()# 敌人类
class Enemy(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = pygame.Surface([30, 30])  # 敌人的形状self.image.fill(WHITE)self.rect = self.image.get_rect()self.rect.x = random.randint(0, WINDOW_WIDTH - 30)self.rect.y = 0self.speed = random.randint(1, 5)def update(self):self.rect.y += self.speedif self.rect.y > WINDOW_HEIGHT:self.rect.x = random.randint(0, WINDOW_WIDTH - 30)self.rect.y = 0self.speed = random.randint(1, 5)# 创建精灵组
all_sprites = pygame.sprite.Group()# 创建飞机对象
player = Plane()
all_sprites.add(player)# 创建子弹精灵组
bullets = pygame.sprite.Group()# 创建敌人精灵组
enemies = pygame.sprite.Group()
for _ in range(10):enemy = Enemy()all_sprites.add(enemy)enemies.add(enemy)# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_SPACE:player.shoot()# 更新所有精灵all_sprites.update()# 检测碰撞if pygame.sprite.spritecollide(player, enemies, True):running = Falsefor bullet in bullets:pygame.sprite.spritecollide(bullet, enemies, True)# 绘制背景window.fill(BLACK)# 绘制所有精灵all_sprites.draw(window)# 刷新屏幕pygame.display.flip()# 控制帧率clock.tick(60)# 退出游戏
pygame.quit()

http://www.ppmy.cn/ops/144214.html

相关文章

使用 Marp 将 Markdown 导出为 PPT 后不可编辑的原因说明及解决方案

Marp 是一个流行的 Markdown 演示文稿工具&#xff0c;能够将 Markdown 文件转换为 PPTX 格式。然而&#xff0c;用户在使用 Marp 导出 PPT 时&#xff0c;可能会遇到以下问题&#xff1a; 导出 PPT 不可直接编辑的原因 根据 Marp GitHub 讨论&#xff0c;Marp 导出的 PPTX 文…

Liveweb视频融合共享平台在果园农场等项目中的视频监控系统搭建方案

一、背景介绍 在我国的大江南北遍布着各种各样的果园&#xff0c;针对这些地处偏僻的果园及农场等环境&#xff0c;较为传统的安全防范方式是建立围墙&#xff0c;但是仅靠围墙仍然无法阻挡不法分子的有意入侵和破坏&#xff0c;因此为了及时发现和处理一些难以察觉的问题&…

JVM性能优化一:初识内存泄露-内存溢出-垃圾回收

本文主要是让你充分的认识到什么叫做内存泄露&#xff0c;什么叫做内存溢出&#xff0c;别再傻傻分不清了&#xff0c;别再动不动的升级服务器的内存了。 文章目录 1.基本概念1.1.内存泄露1.2.内存溢出1.3.垃圾回收1.4.内存泄露-垃圾回收-内存溢出三者的关系关系 2.代码示例2.…

数据结构C语言描述7(图文结合)--串的实现与BP算法、KMP算法讲解与模版提供

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…

ECharts柱状图-柱图35,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…

亚矩阵云手机:跨境直播的超强助力

在跨境直播的蓬勃浪潮中&#xff0c;网络卡顿、延迟以及诸多技术难题犹如重重迷雾&#xff0c;困扰着众多从业者&#xff0c;阻碍着业务的拓展与流量的获取。而亚矩阵云手机的出现&#xff0c;恰似一盏明灯&#xff0c;为跨境直播照亮了前行的道路&#xff0c;凭借其卓越的特性…

.net core在linux导出excel,System.Drawing.Common is not supported on this platform

使用框架 .NET7 导出组件 Aspose.Cells for .NET 5.3.1 asp.net core mvc 如果使用Aspose.Cells导出excel时&#xff0c;报错 &#xff1a; System.Drawing.Common is not supported on this platform 平台特定实现&#xff1a; 对于Windows平台&#xff0c;System.Drawing.C…

mac uniapp 转为微信小程序开发

mac uniapp 转为微信小程序开发 1.进入微信公众平台获取小程序Appid在manifest.json配置 2.打开微信开发者工具进入设置—安全设置 3.勾选服务端口 4.点击运行至微信开发工具可自动打开