游戏的初始化和推出
- pygame是一个包,使用的时候需要使用
import pygame
进行导入 - 使用pygame的功能前,要对其进行初始化,
pygame.init()
;所有结束的时候要退出pygame.quit()
import pygame
pygame.init()
# 游戏代码...
pygame.quit()
pygame 里面绘制的图像 和元素 都是以矩形区域来描述位置的 因此有 pygame.Rect 类
Rect类
- pygame 中的坐标都是以 左上角,原点(0,0)为开始坐标,x轴向左增加,y轴向下增加
- 所有的元素都是通过
矩形
来描述的,Rect(x, y, width, height) -> Rect
,Rect类只有一些简单的数字计算,所以不需要初始化pygame.init
- size获取的是一个元组,使用的时候要注意。可以对应输出
import pygame
# x,y,width,height
rectSize = pygame.Rect(100,100,200,300)
print(rectSize.x)
print(rectSize.y)
print(rectSize.width)
print(rectSize.height)
print(rectSize.size) #(200, 300)
hero_rect = pygame.Rect(100, 500, 120, 126)
print("坐标原点 %d %d" % (hero_rect.x, hero_rect.y))
print("英雄大小 %d %d" % (hero_rect.width, hero_rect.height))
# size 属性会返回矩形区域的 (宽, 高) 元组
print("英雄大小 %d %d" % hero_rect.size)
创建游戏主窗口
- 创建窗口
pygame 专门提供了一个 模块 pygame.display 用于创建、管理 游戏窗口
后面所绘制的内容基本上都是在这个窗口上,所以一定要有变量来接收这个窗口
2.set_mode(resolution=(0,0), flags=0, depth=0) -> Surface
;
resolution:设置游戏主窗口的大小,默认是全屏,参数是一个元组
flags: 参数指定屏幕的附加选项,例如是否全屏等等,默认不需要传递
depth:数表示颜色的位数,默认自动匹配
import pygame
pygame.init()
#创建窗口 会返回一个窗口对象 后面的图像都是要绘制在窗口对象里面的 所以要有一个值对其进行保存
screen = pygame.display.set_mode((480,700))
# 第一个参数是设置屏幕宽高的 不设置就是全屏
# 由于python是至上而下执行的 所以 会一闪而过 通常都会设置一个游戏循环
# 游戏循环就是死循环
while True:
pass
pygame.quit()
游戏循环
python程序是自上而下执行 ,所以一般会给予一个死循环让其运转,称为游戏循环
# 游戏循环
while True:
pass
绘制图像对象
- 在游戏中,能够看到的 游戏元素 大多都是 图像
- 图像文件 初始是保存在磁盘上的,如果需要使用,第一步 就需要 被加载到内存
- 要在屏幕上 看到某一个图像的内容,需要按照三个步骤:
- 使用 pygame.image.load() 加载图像的数据
- 使用 游戏屏幕 对象,调用 blit 方法 将图像绘制到指定位置
- 调用 pygame.display.update() 方法更新整个屏幕的显示
- pygame.blit(获取到的图像,(x,y)) :x,y就是这个时候的位置,是距离窗口远点的位置
- 图片的位置是与窗口的原点重合进行摆放的
- 没一个图像画到屏幕上 都需要对其进行update一下
要想在屏幕上看到绘制的结果,就一定要调用 pygame.display.update() 方法,但是也可以在最后的地方统一调用更新,注意这个包的屏幕的更新哦 screen只顾加 就可以;图片可能是会叠加,所以以最终绘制为准【后来者居上】
import pygame
pygame.init()
#加载背景图片 首先要有一个屏幕对象
screen = pygame.display.set_mode((480,700))
# 要添加背景图片 就必须先从内存中读取出来 优惠重新绘制的时候 是需要用原屏幕对象的
# 所以先将图片从磁盘中读取到内存
# 再绘制到屏幕中
# 最后需要对屏幕进行更新显示 这样就会出现了
img = pygame.image.load('./images/background.png')
screen.blit(img,