1. 从官网 python.org 下载 Python 并安装。

如果安装遇到问题,可来交流群讨论。
2. 用 pip 安装 pygame 模块
pip install pygame
3. 编写代码,在窗口里显示一张飞机图片
import pygame
pygame.init()
screen = pygame.display.set_mode((450,800), 0, 32)
plane = pygame.image.load('plane.png')
screen.blit(plane, (200, 400))
while True:
foreventin pygame.event.get():
ifevent.type == pygame.QUIT:
pygame.quit()
exit()
pygame.display.update()
4. 让飞机随着鼠标位置进行移动
import pygame
pygame.init()
WHITE = (255, 255, 255)
screen = pygame.display.set_mode((450,800), 0, 32)
plane = pygame.image.load('plane.png')
while True:
foreventin pygame.event.get():
ifevent.type == pygame.QUIT:
pygame.quit()
exit()
x, y = pygame.mouse.get_pos()
x -= plane.get_width()/2
y -= plane.get_height()/2
screen.fill(WHITE)
screen.blit(plane, (x, y))
pygame.display.update()5. 创建更多的敌机,从屏幕顶部向下移动
import pygame
import random
pygame.init()
WHITE = (255, 255, 255)
screen = pygame.display.set_mode((450,800), 0, 32)
plane = pygame.image.load('plane.png')
classEnemy:
defrestart(self):
self.x = random.randint(50, 400)
self.y = random.randint(-200, -50)
self.speed = random.random() * 2 + 0.5
def__init__(self):
self.restart()
self.image = pygame.image.load('enemy.png').convert_alpha()
defmove(self):
ifself.y < 800:
self.y += self.speed
else:
self.restart()
classPlane:
defrestart(self):
self.x = 200
self.y = 600
def__init__(self):
self.restart()
self.image = pygame.image.load('plane.png').convert_alpha()
defmove(self):
x, y = pygame.mouse.get_pos()
x-= self.image.get_width() / 2
y-= self.image.get_height() / 2
self.x = x
self.y = y
plane = Plane()
enemies = []
for i in range(5):
enemies.append(Enemy())
whileTrue:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# 绘制背景
screen.fill(WHITE)
# 绘制敌机
for e inenemies:
e.move()
screen.blit(e.image, (e.x,e.y))
# 绘制玩家
plane.move()
screen.blit(plane.image, (plane.x, plane.y))
pygame.display.update()
6. 增加碰撞检测。如果撞上敌机,则游戏结束
# ……
# 前略
gameover = False
font = pygame.font.Font(None, 32)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
# 绘制背景
screen.fill(WHITE)
if not gameover:
# 绘制敌机
for e in enemies:
if checkCrash(e, plane):
gameover = True
e.move()
screen.blit(e.image, (e.x,e.y))
# 绘制玩家
plane.move()
screen.blit(plane.image, (plane.x, plane.y))
else:
text = font.render("Game Over!", 1, (0, 0, 0))
screen.blit(text, (165, 400))
pygame.display.update()
7. 发射子弹,消灭敌机
# ……
class Bullet:
def __init__(self):
self.x = 0
self.y = -1
self.image = pygame.image.load('bullet.png').convert_alpha()
self.active = False
def move(self):
if self.active:
self.y -= 5
if self.y < 0:
self.active = False
def restart(self):
mouseX, mouseY = pygame.mouse.get_pos()
self.x = mouseX - self.image.get_width() / 2
self.y = mouseY - self.image.get_height() / 2
self.active = True
# ……
def checkHit(enemy, bullet):
if (bullet.x > enemy.x and bullet.x < enemy.x + enemy.image.get_width()) and (
bullet.y > enemy.y and bullet.y < enemy.y + enemy.image.get_height()
):
enemy.restart()
bullet.active = False
#增加返回值
return True
return False
# ……
bullets = []
for i in range(10):
bullets.append(Bullet())
count_b = len(bullets)
index_b = 0
interval_b = 0
# ……
while True:
# ……
if not gameover:
# 发射子弹
interval_b -= 1
if interval_b < 0:
bullets[index_b].restart()
interval_b = 30
index_b = (index_b + 1) % count_b
for b in bullets:
if b.active:
for e in enemies:
checkHit(e, b)
b.move()
screen.blit(b.image, (b.x, b.y))
# …… 
8. 记录游戏分数
# ……
#分数
score = 0
while True:
# ……
if not gameover:
# ……
# 绘制敌机
for e in enemies:
if checkCrash(e, plane):
gameover = True
e.move()
screen.blit(e.image, (e.x,e.y))
# 绘制玩家
plane.move()
screen.blit(plane.image, (plane.x, plane.y))
#在屏幕左上角显示分数
text = font.render("Socre: %d" % score, 1, (0, 0, 0))
screen.blit(text, (0, 0))
else:
text = font.render("Game Over!", 1, (0, 0, 0))
screen.blit(text, (165, 380))
#在屏幕中央显示分数
text = font.render("Socre: %d" % score, 1, (0, 0, 0))
screen.blit(text, (165, 420))
pygame.display.update()
9. 再增加一点点细节,美化贴图、添加音效等

这样就开发出了一个打飞机游戏,你学会了吗?
近期文章
感谢转发和点赞的各位~
本文分享自 Crossin的编程教室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!