python飞机大战游戏.py

embedded/2024/12/21 9:10:17/

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/embedded/147494.html

相关文章

深度学习0-前置知识

一、背景 AI最大&#xff0c;它的目的是通过让机器模仿人类进而超越人类&#xff1b; ML次之&#xff0c;它是AI的一个分支&#xff0c;是让机器模仿人类的一种方法。开发人员用大量数据和算法“训练”机器&#xff0c;让机器自行学会如何执行任务&#xff0c;它的成功取决于…

Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定

本文仅作学习交流&#xff0c;不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本&#xff1a;Unity6 模板&#xff1a;3D 核心 渲染管线&#xff1a;URP ------------------------------…

ArcGIS;InVEST实践;生物多样性生境质量模型、固碳模块、城市热岛缓解(降温)模块

以InVEST模型结合实际项目进行由浅入深的实战技术讲解&#xff0c;针对学者的特点及需求进行分析&#xff0c;融合内容体系&#xff0c;对接工作实际项目及论文写作&#xff0c;解决参会者关注的重点及实际项目过程问题&#xff0c;采取逐步延伸的逻辑&#xff0c;不论您是小白…

[创业之路-201]:价值主张与APPEALS模型

目录 前言&#xff1a; 一、价值主张&#xff1a;产品的独特价值和竞争优势 二、APPEALS模型&#xff1a;用户最关心的8个维度的问题 三、价值主张与APPEALS模型的关系&#xff1a;配对 前言&#xff1a; 价值主张与APPEALS模型是两个在产品开发、市场营销和竞争分析中非常…

Spring Boot 中的 @Scheduled 定时任务以及开关控制

Scheduled注解是Spring框架&#xff08;包括Spring Boot&#xff09;中用于实现定时任务的一种方式。以下是对Scheduled注解的详细解析&#xff1a; 一、基本概念 Scheduled注解允许开发者在Spring容器中定义定时任务。通过简单地在一个方法上添加Scheduled注解&#xff0c;S…

矩阵:Input-Output Interpretation of Matrices (中英双语)

矩阵的输入-输出解释&#xff1a;深入理解与应用 在线性代数中&#xff0c;矩阵与向量的乘积 ( y A x y Ax yAx ) 是一个极为重要的关系。通过这一公式&#xff0c;我们可以将矩阵 ( A A A ) 看作一个将输入向量 ( x x x ) 映射到输出向量 ( y y y ) 的线性变换。在这种…

Java EE 初阶:线程(1)

线程的初步认识 1.什么是线程 一个线程就是一个“执行流”&#xff0c;每个进程之间都可以按照顺序执行自己的代码&#xff0c;多个线程之间同时执行着多份代码。 2.进程和线程的关系 进程我们可以理解为是资源分配的基本单位&#xff0c;是一个程序的运行实例。 线程我们…

双臂机器人

目录 一、双臂机器人简介 二、双臂机器人系统的组成 三、双臂机器人面临的主要挑战 3.1 协调与协同控制问题 3.2 力控制与柔顺性问题 3.3 路径规划与轨迹优化问题 3.4 感知与环境交互 3.5 人机协作问题 3.6 能源与效率问题 3.7 稳定性与可靠性问题 四、双臂机器人…