以下代码中,我们使用Pygame库来实现游戏窗口的创建、图片的加载、事件的处理、元素的绘制等功能。在游戏循环中,不断地更新游戏元素的位置和状态,并且不断地绘制游戏画面,从而实现了飞机大战游戏的基本功能。
以下是一个简单的飞机大战Python游戏代码实现:
import pygame import random # 初始化Pygame pygame.init() # 设置游戏窗口大小 screen_width = 480 screen_height = 700 screen = pygame.display.set_mode((screen_width, screen_height)) # 设置游戏标题 pygame.display.set_caption("飞机大战") # 加载背景图片 background = pygame.image.load("images/background.png") # 加载游戏结束图片 game_over = pygame.image.load("images/gameover.png") # 加载飞机图片 player_image = pygame.image.load("images/player.png") # 加载敌机图片 enemy_image = pygame.image.load("images/enemy.png") # 加载子弹图片 bullet_image = pygame.image.load("images/bullet.png") # 设置字体 font = pygame.font.SysFont(None, 48) # 定义函数:绘制分数 def draw_score(score): score_text = font.render("Score: " + str(score), True, (255, 255, 255)) screen.blit(score_text, (10, 10)) # 定义函数:绘制飞机 def draw_player(player_x, player_y): screen.blit(player_image, (player_x, player_y)) # 定义函数:绘制敌机 def draw_enemy(enemy_x, enemy_y): screen.blit(enemy_image, (enemy_x, enemy_y)) # 定义函数:绘制子弹 def draw_bullet(bullet_x, bullet_y): screen.blit(bullet_image, (bullet_x, bullet_y)) # 定义函数:检测子弹是否击中敌机 def check_collision(enemy_x, enemy_y, bullet_x, bullet_y): if bullet_x >= enemy_x and bullet_x <= enemy_x + 50 and bullet_y >= enemy_y and bullet_y <= enemy_y + 50: return True else: return False # 设置游戏循环 def game_loop(): # 初始化游戏 player_x = 215 player_y = 600 player_speed = 5 enemy_x = random.randint(0, 430) enemy_y = -50 enemy_speed = 2 bullet_x = 0 bullet_y = 0 bullet_speed = 10 score = 0 game_running = True while game_running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: game_running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: player_x -= player_speed elif event.key == pygame.K_RIGHT: player_x += player_speed elif event.key == pygame.K_SPACE: bullet_x = player_x + 25 bullet_y = player_y - 25 # 移动敌机 enemy_y += enemy_speed # 移动子弹 if bullet_y > 0: bullet_y -= bullet_speed # 检测子弹是否击中敌机 if check_collision(enemy_x, enemy_y, bullet_x, bullet_y): enemy_x = random.randint(0, 430) enemy_y = -50 bullet_x = 0 bullet_y = 0 score += 10 # 绘制游戏元素 screen.blit(background, (0, 0)) draw_score(score) draw_player(player_x, player_y) draw_enemy(enemy_x, enemy_y) draw_bullet(bullet_x, bullet_y) # 判断游戏是否结束 if enemy_y > screen_height: screen.blit(game_over, (100, 250)) pygame.display.update() pygame.time.delay(2000) game_running = False # 更新游戏画面 pygame.display.update() # 结束游戏 pygame.quit() # 开始游戏 game_loop()
上述代码实现了一个简单的飞机大战游戏,游戏主要包含以下需求:
- 创建游戏窗口,设置游戏标题和背景图片。
- 加载飞机、敌机、子弹等游戏元素的图片,并实现它们在游戏中的绘制。
- 实现玩家飞机的移动,通过键盘控制玩家飞机的左右移动。
- 实现敌机的移动,敌机从窗口顶部随机位置开始向下移动,当敌机移动到窗口底部时,游戏结束。
- 实现子弹的发射,当玩家按下空格键时,子弹从玩家飞机顶部发射,向上移动,如果子弹击中敌机,则敌机消失,玩家得分。
- 实现碰撞检测,当子弹和敌机发生碰撞时,判断子弹是否击中敌机,如果击中,则敌机消失,玩家得分。
- 实现分数统计和游戏结束提示,玩家得分将实时显示在游戏画面中,当游戏结束时,显示游戏结束的图片,2秒后自动退出游戏。
评论