简单射击游戏设计与 Python 代码实现
### 🔫射击游戏简单设计思路与代码示例 #### 游戏设计思路 设计一个简单的射击游戏,玩家控制一个角色在二维平面上移动并射击敌人。敌人会随机出现在屏幕上,玩家射击到敌人则得分,若敌人碰到玩家则游戏结束。 #### Python 代码实现 ```python 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("射击游戏") # 颜色定义 WHITE = (255, 255, 255) BLACK = (0, 0, 0) RED = (255, 0, 0) # 玩家设置 player_size = 50 player_x = screen_width // 2 - player_size // 2 player_y = screen_height - player_size - 10 player_speed = 5 # 子弹设置 bullet_size = 10 bullet_x = 0 bullet_y = player_y bullet_speed = 10 bullet_state = "ready" # 敌人设置 enemy_size = 50 enemy_x = random.randint(0, screen_width - enemy_size) enemy_y = 50 enemy_speed = 3 # 得分 score = 0 font = pygame.font.Font(None, 36) # 游戏主循环 running = True while running: screen.fill(BLACK) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: player_x -= player_speed if event.key == pygame.K_RIGHT: player_x += player_speed if event.key == pygame.K_SPACE and bullet_state == "ready": bullet_x = player_x + player_size // 2 - bullet_size // 2 bullet_y = player_y bullet_state = "fire" # 玩家边界限制 if player_x < 0: player_x = 0 elif player_x > screen_width - player_size: player_x = screen_width - player_size # 子弹移动 if bullet_state == "fire": bullet_y -= bullet_speed pygame.draw.rect(screen, WHITE, (bullet_x, bullet_y, bullet_size, bullet_size)) if bullet_y < 0: bullet_state = "ready" # 敌人移动 enemy_x += enemy_speed if enemy_x < 0 or enemy_x > screen_width - enemy_size: enemy_speed = -enemy_speed enemy_y += 20 # 碰撞检测 if (bullet_x >= enemy_x and bullet_x <= enemy_x + enemy_size and bullet_y >= enemy_y and bullet_y <= enemy_y + enemy_size): bullet_state = "ready" enemy_x = random.randint(0, screen_width - enemy_size) enemy_y = 50 score += 1 if (player_x >= enemy_x and player_x <= enemy_x + enemy_size and player_y >= enemy_y and player_y <= enemy_y + enemy_size): running = False # 绘制玩家、敌人和得分 pygame.draw.rect(screen, WHITE, (player_x, player_y, player_size, player_size)) pygame.draw.rect(screen, RED, (enemy_x, enemy_y, enemy_size, enemy_size)) score_text = font.render(f"得分: {score}", True, WHITE) screen.blit(score_text, (10, 10)) pygame.display.update() # 游戏结束 pygame.quit() ``` ### 代码解释 - 初始化 Pygame 并设置屏幕尺寸和。 - 定义玩家、子弹和敌人的属性,如大小、位置和速度。 - 在主循环中处理玩家输入,包括移动和射击。 - 实现子弹和敌人的移动逻辑。 - 进行碰撞检测,判断子弹是否击中敌人以及敌人是否碰到玩家。 - 绘制玩家、敌人和得分信息。 运行此代码,你就可以体验一个简单的射击游戏啦。 ######[AI问答 | 994点数解答 | 2026-06-21 11:56:48]
- 超燃年会来袭!诗舞歌戏轮番上阵,共赴欢乐盛宴! (字节豆包 | 206点数解答 | 2025-01-08 10:59:43)392
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)551
- 简单射击游戏设计与 Python 代码实现(字节豆包 | 994点数解答 | 2026-06-21 11:56:48)6
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)474
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)495
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)490
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)453
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)479
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)583
- 解决Java调用Python接口时中文值乱码问题:设置字符编码为UTF-8(讯飞星火 | 264点数解答 | 2024-06-06 17:27:09)452
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)407
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)549