1 环境安装 。
游戏模块导入:
直接去cmd下 pip install pygame
多试几次 ,可能会因为网速原因出现错误 , 多来几次 就好了。
1 什么是Surface 对象?
就是 pygame 中表示图像的对象。
2 将一个对象移动到另一个图像之上是怎么回事?
pygame 每一时刻展示一个图像 。 每个图像是由像素组成的
blit方法将一个图像放到另一个图像上: 其实pygame并不是真正的移动的。 他只将部分区域替换成另一个图像了。
3 移动图像是怎么回事?
这是个帧率的问题:
帧 : 一幅图像
帧率: 一秒钟可以切换多少帧
pygame每秒切换40-200帧
4 如何控制移动速度?
采用延迟time.delay(ms)
也可以用帧率来控制:
clock = pygame.time.Clock()
clock.tick(20)
5 pygame 效率高不高?
python 简洁好用 但是效率不高
pygame 考虑了 效率, 于是内部好多模块用C语言来实现的。
6 怎么获取帮助 ?
www.pygame.org官网
来看一个 样例
代码如下
import pygame
import sys
#初始化:启动游戏相关功能
pygame.init()
size = width,height = 800, 500#tuple
speed =[-2,1]#速度和初始方向:
bg = (255,255,255)#背景色
#设置指定大小的窗口Surface
screen = pygame.display.set_mode(size)
#设置窗口标题
pygame.display.set_caption('初次见面,多多关照')
#加载图片Surface对象
photo = pygame.image.load('link.jpg')
#获得图像的位置矩形facele
position = photo.get_rect()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()#退出游戏 右上角X
#移动图像
position = position.move(speed)
#碰撞检测:水平方向
if position.left < 0 or position.right > width:
#翻转图像 翻转谁, 水平翻转吗? 垂直翻转吗?
photo = pygame.transform.flip(photo, True, False)
# 水平翻转 :反方向移动
speed[0] = -speed[0]
#碰撞检测:垂直方向
if position.top < 0 or position.bottom > height:
speed[1] = -speed[1]
#背景填充
screen.fill(bg)
#更新背景:将photo对象画在screen对象上的position位置
screen.blit(photo,position)
#更新界面;flip刷新 pygame是双缓冲的,将写好的对象放在屏幕上,防止闪烁现象,就是刷新过快导致的。
pygame.display.flip()
#设置移动延迟 ms
pygame.time.delay(5)
2 加入键盘控制移动
import pygame
import sys
from pygame.locals import *
#初始化
pygame.init()
size = width,height = 1000, 600#tuple
speed =[-2,1]
bg = (255,255,255)#背景色
#设置指定大小的窗口Surface
screen = pygame.display.set_mode(size)
#设置窗口标题
pygame.display.set_caption('初次见面,多多关照')
#加载图片Surface对象
photo = pygame.image.load('link.jpg')
#获得图像的位置矩形rectangle
position = photo.get_rect()
photo = photo = pygame.transform.flip(photo, True, False)
r_head = photo
l_head = photo = pygame.transform.flip(photo, True, False)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()#退出游戏 右上角X
if event.type == KEYDOWN:
if event.key == K_LEFT:
speed = [-1,0]
photo = l_head
if event.key == K_RIGHT:
speed = [1,0]
photo = r_head
if event.key == K_UP:
speed = [0,-1]
if event.key == K_DOWN:
speed = [0,1]
#移动图像
position = position.move(speed)
#碰撞检测:水平方向
if position.left < 0 or position.right > width:
#翻转图像 翻转谁, 水平翻转吗? 垂直翻转吗?
photo = pygame.transform.flip(photo, True, False)
# 水平翻转 :反方向移动
speed[0] = -speed[0]
#碰撞检测:垂直方向
if position.top < 0 or position.bottom > height:
speed[1] = -speed[1]
#背景填充
screen.fill(bg)
#更新背景
screen.blit(photo,position)
#更新界面
pygame.display.flip()
#设置延迟
pygame.time.delay(1)