pygame是python中经典的游戏库,也是新手学习游戏开发的最佳选择,今天用简单的一个烟花发射游戏来简单演示pygame开发游戏的过程
1.安装引入pygame游戏库
在python命令行 输入以下命令来安装pygame游戏库:
pip3 install pygame
引入pygame以及后面会使用的随机数库
import pygame # pygame游戏库
import random # 随机数
2.初始化窗口
# 初始化Pygame
pygame.init()
# 设置窗口大小和背景色
width, height = 800, 600
screen = pygame.display.set_mode((width, height)) #窗口大小
pygame.display.set_caption("放烟花") # 窗口标题
bg_color = (0, 0, 0) #背景色 留在后面刷屏使用
3 定义烟花类
烟花类总共三个方法:
- 构造方法 用来初始化烟花对象基础属性
- 烟花移动方法 用来在控制发射与绽放轨迹
- 烟花绽放方法 用来在窗口展示(绘制)烟花
(初步学习,绽放过程稍微简陋)
# 定义烟花类
class Firework:
def __init__(self, x, y):
self.x = x # 坐标x轴
self.y = y # 坐标y轴
self.r = 3 # 烟花绽放半径
self.f = False # False朝上 控制方向
self.rd = random.randint(0,250) #升空高度
self.color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) # 烟花颜色
def move(self):
if not self.f: # 烟花上升 过程 y轴减少 注意xy轴从左上方开始的 越高y越小
if self.y<=self.rd:
self.f = True
else:
self.y -= 5
else: # 烟花绽放 下降
self.y += 2
self.r += 3
def draw(self): # 烟花绘画
#print(self.x, self.y)
pygame.draw.circle(screen, self.color, (self.x, self.y), self.r,3)
4.游戏主体流程控制
# 创建烟花列表
fireworks = []
# 游戏主循环
running = True
clock = pygame.time.Clock()
while running:
screen.fill(bg_color) # 清空屏幕
clock.tick(60)
for event in pygame.event.get():
num=1
if event.type == pygame.QUIT:
running = False
# 清空屏幕
screen.fill(bg_color)
elif event.type == pygame.KEYDOWN :
num2=int(event.key)
if 50<=num2<=57: # 按数字2-9发射对应数量烟花
num=num2-48
for i in range(num):
fireworks.append(Firework(random.randint(0, width), height))
elif (event.type == pygame.KEYDOWN or event.type == pygame.MOUSEBUTTONDOWN):
# 按任意键发射一个新烟花 创建新的烟花
fireworks.append(Firework(random.randint(0, width), height))
if random.random() < 0.05: #每次循环随机判断是否要发射新烟花
fireworks.append(Firework(random.randint(0, width), height))
# 更新和绘制烟花
for firework in fireworks: # 遍历烟花列表绘制烟花 并及时清除发射完成的烟花
firework.move()
firework.draw()
#print(firework.y)
#if firework.y <= 0:
if firework.f and firework.y>=300:
fireworks.remove(firework)
print("目前fireworks个数:",len(fireworks))
# 刷新屏幕
pygame.display.flip()
if(len(fireworks)==0):
pygame.display.flip()
# 退出游戏
pygame.quit()