当前位置: 首页 > news >正文

Python 的 Pygame 库来开发一个游戏

import pygame
import random# 初始化 Pygame
pygame.init()# 设置屏幕大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))# 设置标题
pygame.display.set_caption("飞机大战")# 加载图片
player_img = pygame.image.load("player.png").convert_alpha()
enemy_img = pygame.image.load("enemy.png").convert_alpha()
bullet_img = pygame.image.load("bullet.png").convert_alpha()
background_img = pygame.image.load("background.png").convert()# 定义颜色
white = (255, 255, 255)# 定义玩家类
class Player(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = player_imgself.rect = self.image.get_rect()self.rect.centerx = screen_width // 2self.rect.bottom = screen_height - 10self.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.speedif keys[pygame.K_UP]:self.rect.y -= self.speedif keys[pygame.K_DOWN]:self.rect.y += self.speed# 保持玩家在屏幕内self.rect.left = max(0, self.rect.left)self.rect.right = min(screen_width, self.rect.right)self.rect.top = max(0, self.rect.top)self.rect.bottom = min(screen_height, self.rect.bottom)def shoot(self):bullet = Bullet(self.rect.centerx, self.rect.top)bullets.add(bullet)# 定义子弹类
class Bullet(pygame.sprite.Sprite):def __init__(self, x, y):super().__init__()self.image = bullet_imgself.rect = self.image.get_rect()self.rect.centerx = xself.rect.bottom = yself.speed = 10def update(self):self.rect.y -= self.speed# 删除超出屏幕的子弹if self.rect.top < 0:self.kill()# 定义敌人类
class Enemy(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = enemy_imgself.rect = self.image.get_rect()self.rect.x = random.randint(0, screen_width - self.rect.width)self.rect.y = random.randint(-100, -50)self.speed = random.randint(1, 3)def update(self):self.rect.y += self.speed# 删除超出屏幕的敌人if self.rect.top > screen_height:self.kill()# 创建游戏精灵组
all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
bullets = pygame.sprite.Group()
enemies = pygame.sprite.Group()# 游戏循环
running = True
clock = pygame.time.Clock()
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseif event.type == pygame.KEYDOWN:if event.key == pygame.K_SPACE:player.shoot()# 更新游戏逻辑all_sprites.update()enemies.update()# 检查碰撞hits = pygame.sprite.groupcollide(enemies, bullets, True, True)# 添加敌人if len(enemies) < 5:new_enemy = Enemy()enemies.add(new_enemy)all_sprites.add(new_enemy)# 渲染游戏画面screen.blit(background_img, (0, 0))all_sprites.draw(screen)bullets.draw(screen)enemies.draw(screen)# 更新屏幕pygame.display.flip()# 控制游戏帧率clock.tick(60)# 退出 Pygame
pygame.quit()

使用说明:

  1. 创建游戏素材:
    • 创建名为 player.pngenemy.pngbullet.png 和 background.png 的图像文件。
  2. 将代码保存为 game.py 将代码保存为名为 game.py 的文件。
  3. 运行游戏: 打开终端或命令提示符,导航到代码保存的目录,并运行命令 python game.py

游戏玩法:

  • 使用方向键控制飞机移动。
  • 按空格键发射子弹。
  • 躲避敌机。
  • 消灭敌机获得分数。

注意:

  • 确保已安装 Pygame 库。如果没有安装,请运行 pip install pygame 进行安装。
  • 将代码中的图片文件名替换为实际文件名。
  • 可以根据需要调整游戏参数,例如敌机速度、数量等。
http://www.lryc.cn/news/474799.html

相关文章:

  • diffusion model 学习笔记
  • 【C++题解】1967. 输出字符的ascii码
  • Java入门9——类和对象+this+构造方法
  • Django目录结构最佳实践
  • npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  • 后端:Spring、Spring Boot-实例化Bean依赖注入(DI)
  • C++ 数据结构 静态顺序表、动态顺序表。
  • QML旋转选择器组件Tumbler
  • 在工作中常用到的 Linux 命令总结
  • 反射、枚举和lambda表达式
  • Stable Diffusion Web UI 1.9.4常用插件扩展-WD14-tagger
  • java 第19天 Lambda、jdk8.0新方法、Optional
  • 江协科技STM32学习- P31 I2C通信协议
  • 6、liunx目录的功能
  • 挑战Java面试题复习第5天,无人扶我青云志
  • 大规模语言模型:从理论到实践(1)
  • C#如何锁定和解除鼠标及键盘BlockInput
  • Stable Diffusion 3.5发布:图像生成新纪元,多模态AI的突破!
  • MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
  • RabbitMQ 实现消息队列负载均衡
  • 嵌入式linux中HTTP协议原理基本分析
  • thinkphp和vue基于Workerman搭建Websocket服务实现用户实时聊天,完整前后端源码demo及数据表sql
  • 浅谈射频应用
  • SAP(PP生产制造)拆解工单业务处理
  • 《Python游戏编程入门》注-第4章2
  • deque
  • YOLOv11改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新
  • yt-dlp下载视频
  • oracle insert忽略主键冲突,忽略重复记录
  • 小新学习k8s第四天之发布管理