pip install pygame
import pygame
pygame.ver
pygame模块的官方说明网站:https://www.pygame.org/docs/
pygame模块 | 功能 | 该模块下用到的方法 |
---|---|---|
pygame.display | 创建、管理游戏窗口 | set_mode(); update() |
pygame.draw | 绘制形状、点、线 | |
pygame.event | 管理事件 | get() |
pygame.image | 加载和存储图片 | load() |
pygame.key | 读取键盘按键 | |
pygame.Rect | 管理矩形区域 | |
pygame.sprite | 操作、移动图像 | |
pygame.time | 管理时间和帧信息 | Clock(); set_timer() |
pygame.Surface | 管理图像和屏幕 | blit(),get_rect() |
set_mode()
方法,创建游戏窗口(屏幕)set_mode(resolution=(0,0), flags=0, depth=0) -> Surface
resolution
表示制定屏幕(窗口)的大小,(width
,height
)
flag
,depth
默认,不改变
# 创建游戏窗口
screen = pygame.display.set_mode(400,700)
load()
方法,加载图像数据load(filename) -> Surface
filename
表示图片的路径
# 加载图像
bg = pygame.image.load("./images/background.png")
#./表示在当前工程文件下,也可以写完整的路径,python读取路径用正(左)斜杠
bg = pygame.image.load("D:/images/background.png")
blit()
方法,把图像加载到屏幕上blit(source, dest, area=None, special_flags = 0) -> Rect
例如:blit(image,(x, y))
# 把图像加载到屏幕上,在画布上绘制图像
screen.blit(bg, (0, 0))
update()
方法
display.update()
会将画布上的最终结果显示在屏幕上。
# 1> 创建游戏主窗口--屏幕(屏幕的width*height一般由背景图片的尺寸决定)
screen = pygame.display.set_mode(400,700)
# 2> 加载背景图像
bg = pygame.image.load("./images/background.png")
# 3> 将背景图像绘制到屏幕上
screen.blit(bg,(0,0))
# 4> 加载英雄图像
hero = pygame.image.load("./images/hero1.png")
# 5> 绘制英雄在屏幕的相对位置上
screen.blit(hero,(150,500))
# 6> 加载敌机图像
enemy = pygame.image.load("./images/enemy.png")
# 7> 绘制敌机在屏幕的位置上
screen.blit(enemy,(20,0))
# 8> 更新屏幕显示,非常重要
pygame.display.update()
Rect(x, y, width, height) -> Rect
x,y表示原点,left,top,bottom,right代表左,上,下,右四个矩形区域边界,center,centerx,centery分别表示矩形的正中心、矩形横向中心和矩形纵向中心,size,width,height分别表示矩形的尺寸(weidth*height)、矩形的宽和矩形的高
pygame提供了两个方法进行游戏的初始化和退出
方法 | 说明 |
---|---|
pygame.init() | 导入并初始化所有 pygame 模块,使用其他模块之前,必须先调用 init 方法 |
pygame.quit() | 卸载所有 pygame 模块,在游戏结束之前调用! |
飞机大战游戏初始化示例
import pygame
pygame.init()
# 创建游戏的窗口 480 * 700
screen = pygame.display.set_mode((400, 700))
# 绘制背景图像
bg = pygame.image.load("./images/background.png")
screen.blit(bg, (0, 0))
# 绘制英雄的飞机
hero = pygame.image.load("./images/hero1.png")
screen.blit(hero, (150, 400))
# 可以在所有绘制工作完成之后,统一调用update方法
pygame.display.update()
while True:
pass #函数内部没有代码可以用pass来保证代码的完整性
pygame.quit()
基于前四步,已经把背景图像、英雄和敌机绘制到屏幕上了,那如何让其动起来呢?
首先来看一下下面这个动图,当我们快速翻书的时候,可以看到画中的图片就像动起来了一样。
update()
方法每调用一次就是实现一次帧游戏的循环才意味着游戏的真正开始
Clock() -> Clock
#创建游戏时钟对象
clock = pygame.time.Clock()
i = 0
#游戏循环
while True:
# 设置屏幕刷新帧率
clock.tick(60)
# 这里的 print 将会每1/60秒输出一个数字
print(i)
i += 1
import pygame
#游戏的初始化
pygame.init()
#创建游戏窗口 338*600
screen = pygame.display.set_mode((338, 600),0,0)
#加载图像数据
bg = pygame.image.load("./images/background.png")
screen.blit(bg,(0,0))
hero1 = pygame.image.load("./images/hero1.png")
screen.blit(hero1,(120,400))
#创建游戏时钟
clock = pygame.time.Clock()
#1.记录飞机的初始位置
hero_rect = pygame.Rect(120,400,100,124)
#游戏循环,意味着游戏的正式开始
while True:
clock.tick(60) # 1s 执行一次循环体
# 2. 更改飞机位置
hero_rect.y -= 1
# 判断飞机是否飞出屏幕上方
if hero_rect.y <= 0:
hero_rect.y = 600
# 3.利用blit方法绘制图像
screen.blit(bg, (0, 0)) #先绘制背景图 可以消除飞机的残影
screen.blit(hero1, hero_rect)
# 4.update更新图像
pygame.display.update()
pygame.quit()
事件event:就是指用户在游戏操作过程中的认为操作,比如鼠标、键盘的操作
监听就是在游戏循环中捕获用户的具体操作,然后进行相应的响应操作
get() -> Eventlist
pygame.event.get() 可以获得 用户当前所做动作 的 事件列表
** 判断用户是否点击了关闭按钮
# 游戏循环
while True:
# 设置屏幕刷新帧率
clock.tick(60)
# 事件监听
for event in pygame.event.get():
# 判断用户是否点击了关闭按钮
if event.type == pygame.QUIT:
print("退出游戏...")
pygame.quit()
# 直接退出系统
exit()