Python Pygame 飞机射击游戏教程:从零开始编写你的第一个游戏
当然!下面我将为你展示如何使用 Pygame 编写一个简单的飞机射击游戏。
import pygame
import random
# 初始化 Pygame
pygame.init()
# 设置窗口大小
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('飞机射击游戏')
# 加载游戏资源
player_img = pygame.image.load('player.png')
enemy_img = pygame.image.load('enemy.png')
bullet_img = pygame.image.load('bullet.png')
bullet_sound = pygame.mixer.Sound('bullet.wav')
explosion_sound = pygame.mixer.Sound('explosion.wav')
background_music = pygame.mixer.music.load('background.mp3')
# 播放背景音乐
pygame.mixer.music.play(-1)
# 定义颜色
white = (255, 255, 255)
# 定义玩家飞机参数
player_width = 64
player_height = 64
player_x = screen_width // 2 - player_width // 2
player_y = screen_height - player_height - 10
player_speed = 5
# 定义敌机参数
enemy_width = 64
enemy_height = 64
enemy_x = random.randint(0, screen_width - enemy_width)
enemy_y = random.randint(50, 150)
enemy_speed = 3
# 定义子弹参数
bullet_width = 32
bullet_height = 32
bullet_x = 0
bullet_y = screen_height - player_height - 10
bullet_speed = 10
bullet_state = 'ready'
# 定义得分
score_value = 0
font = pygame.font.Font('freesansbold.ttf', 32)
text_x = 10
text_y = 10
# 显示得分
def show_score(x, y):
score = font.render('得分: ' + str(score_value), True, white)
screen.blit(score, (x, y))
# 显示玩家飞机
def show_player(x, y):
screen.blit(player_img, (x, y))
# 显示敌机
def show_enemy(x, y):
screen.blit(enemy_img, (x, y))
# 发射子弹
def fire_bullet(x, y):
global bullet_state
bullet_state = 'fire'
screen.blit(bullet_img, (x + player_width // 2 - bullet_width // 2, y - bullet_height))
# 检测碰撞
def is_collision(enemy_x, enemy_y, bullet_x, bullet_y):
distance = ((enemy_x - bullet_x) ** 2 + (enemy_y - bullet_y) ** 2) ** 0.5
if distance < 27:
return True
else:
return False
# 游戏主循环
running = True
clock = pygame.time.Clock()
while running:
clock.tick(60)
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 监听键盘事件
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE and bullet_state == 'ready':
bullet_sound.play()
bullet_x = player_x
fire_bullet(bullet_x, bullet_y)
# 移动玩家飞机
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_x > 0:
player_x -= player_speed
if keys[pygame.K_RIGHT] and player_x < screen_width - player_width:
player_x += player_speed
# 移动敌机
enemy_x += enemy_speed
if enemy_x <= 0 or enemy_x >= screen_width - enemy_width:
enemy_speed *= -1
enemy_y += enemy_height
# 移动子弹
if bullet_y <= 0:
bullet_y = screen_height - player_height - 10
bullet_state = 'ready'
if bullet_state == 'fire':
fire_bullet(bullet_x, bullet_y)
bullet_y -= bullet_speed
# 检测碰撞
collision = is_collision(enemy_x, enemy_y, bullet_x, bullet_y)
if collision:
explosion_sound.play()
bullet_y = screen_height - player_height - 10
bullet_state = 'ready'
score_value += 1
enemy_x = random.randint(0, screen_width - enemy_width)
enemy_y = random.randint(50, 150)
# 填充背景色
screen.fill((0, 0, 0))
# 显示得分和飞机
show_score(text_x, text_y)
show_player(player_x, player_y)
show_enemy(enemy_x, enemy_y)
# 更新屏幕显示
pygame.display.update()
# 退出游戏
pygame.quit()
请确保你在同一目录下有 player.png、enemy.png、bullet.png、bullet.wav、explosion.wav 和 background.mp3 这些游戏资源文件。
这是一个简单的飞机射击游戏,玩家飞机可以通过键盘左右键来控制左右移动,并使用空格键发射子弹。目标是射击敌机并获得尽可能高的得分。游戏会在玩家的飞机与敌机发生碰撞时结束。
你可以根据自己的需要对游戏进行修改和扩展,比如增加更多的敌机、增加游戏关卡、增加道具等。希望这个例子能帮助你开始编写一个飞机射击游戏!如果你有其他问题,我会很乐意回答。
原文地址: https://www.cveoy.top/t/topic/1th 著作权归作者所有。请勿转载和采集!