1. 飞机大战游戏简介
飞机大战游戏是经典的街机游戏之一,玩家需要操作一个小飞机在屏幕上躲避敌机的攻击并尽可能消灭更多的敌机。本文将会向大家介绍一款用Python编写的飞机大战游戏,代码包含500行,经过作者的不断优化已经比较完善,玩起来非常流畅。
2. 游戏代码实现
2.1 导入模块
Python中的pygame模块可以用来实现游戏界面的开发,还可以操作游戏中的音频、图像等资源。在本篇文章中,我们同样会使用pygame来实现游戏代码,因此,首先需要导入pygame模块。
import pygame
import time
import random
2.2 定义游戏窗口
定义游戏窗口是游戏开发的重要一步。在本游戏中,我们定义的窗口大小为480*700。
# 初始化
pygame.init()
# 设置窗口尺寸
playSurface = pygame.display.set_mode((480, 700))
# 设置游戏标题
pygame.display.set_caption('飞机大战')
2.3 定义函数
接下来我们需要定义一些函数来实现游戏的功能:
1. 加载图片资源
def load_image(img_path):
return pygame.image.load(img_path)
2. 显示游戏分数
def draw_score(score):
font = pygame.font.SysFont('华文新魏', 30)
score_surface = font.render('得分:{}'.format(score), True, (255, 255, 255))
score_rect = score_surface.get_rect()
score_rect.topleft = (10, 10)
playSurface.blit(score_surface, score_rect)
3. 显示敌机并移动它们
def draw_enemies(enemies_rect):
for rect in enemies_rect:
playSurface.blit(enemy, rect)
2.4 游戏主循环
在游戏中,我们需要一个循环来不断刷新游戏画面。游戏主循环不断发生,直到玩家关闭游戏窗口或者游戏结束。
while True:
# 获取事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 绘制背景
playSurface.blit(background, (0, 0))
score += 1
# 绘制飞机
plane_rect = pygame.Rect((240, 600, 50, 50))
playSurface.blit(plane, plane_rect)
# 移动敌机
for i, rect in enumerate(enemies_rect):
rect.move_ip(0, 5)
if rect.bottom > 0:
enemies_rect[i] = rect
else:
new_rect = enemy.get_rect(center=(random.randint(0, WIDTH), -48))
enemies_rect[i] = new_rect
score += 10
# 绘制敌机
draw_enemies(enemies_rect)
# 显示分数
draw_score(score)
# 显示帧率
fps_surface = font.render('{:.0f}FPS'.format(clock.get_fps()), True, (255, 255, 255))
fps_rect = fps_surface.get_rect()
fps_rect.bottomright = (470, 690)
playSurface.blit(fps_surface, fps_rect)
# 刷新画面
pygame.display.update()
clock.tick(60)
3. 总结
通过以上代码截取,我们可以看到,在Python中使用pygame模块实现游戏开发并不需要编写大量的代码,只要熟悉pygame提供的函数和方法,就可以轻松开发出自己的游戏。此外,本文中的飞机大战游戏代码经过作者的不断优化,已经相对完善,读者可以直接拷贝代码进行尝试。演示效果如下图所示: