Pygame游戏入门v1-最小开发框架

(1)

Pygame最小开发框架

1.引入pygame和sys

2.初始化init()及设置

3.获取事件并逐类响应

4.刷新屏幕

 

极简开发框架:

引入及初始化

事件及刷新

Pygame游戏入门v1-最小开发框架

(2)

sys是Python的标准库

sys提供Python运行时环境变量的操控

sys.exit()用于退出结束游戏并退出

 

pygame.init()对Pygame内部各功能模块进行初始化创建及变量设置,默认调用

 

pygame.display.set_mode(size)初始化显示窗口,第一个参数size是一个二元组,分表表示窗口的宽度和高度

 

pygame.display.set_caption(title)设置显示窗口的标题内容,参数title是一个字符串类型

 

while True:无限循环知道Python运行时退出结束

 

pygame.event.get()从Pygame的事件队列中取出事件,并从队列中删除该事件,例如:键盘按下是一个事件

 

event.type 获得事件类型,并逐类响应

 

pygame.QUIT退出事件常量

 

pygame.display.update()对显示窗口进行更新,默认窗口全部重绘

 

pygame.image.load(filename) 将filename路径下的图像载入游戏,支持JPG、PNG、GIF等13中常用图片格式

 

Suface对象 ball.get_rect()

Pygame使用内部定义的Surface对象表示所有载入的图像,其中.get_rect()方法返回一个覆盖图像的矩形Rect对象

 

Pygame游戏入门v1-最小开发框架

 

Rect对象 Rect对象有一些重要属性,例如:

top,bottom,left,right表示说上下左右

width,height表示宽度、高度

 

ballrect.move(x,y):矩形移动一个偏移量(x,y),即在横轴方向移动x像素,纵轴方向移动y像素,xy为整数

 

壁球的反弹运动:

遇到左右两侧,横向速度取反;遇到上下两侧,纵向速度取反

 

screen.fill(color) 显示窗口背景填充为color颜色,采用RGB色彩体系。由于壁球不断运动,运动后原有位置将默认填充白色,因此需要不断刷新背景色

 

screen.blit(src, dest) 将一个图像绘制在另一个图像上,即将src绘制到dest位置上。通过Rect对象引导对壁球的绘制。

 

fps = 300 # 每秒帧率参数

 

pygame.time.Clock()创建一个Clock对象,用于操作时间

 

Clock.tick(framerate) 控制窗口刷新速度,例如:clock.tick(100)表示每秒钟100次刷新,视频中每次展示的静态图像称为帧

 

键盘使用:Pygame采用事件对应键盘操作,获取事件将得到键盘输入,不同按键编写操作函数即可

 

(3)壁球小游戏

需求-实现:通过图片引入一个壁球;

壁球能够上下左右运动;

壁球能够在上下左右边缘反弹;

通过键盘的上下左右控制壁球运动速度:上(纵向加速),下(纵向减速),左(横向减速),右(横向加速)

pygame.K_UP;

pygame.K_LEFT;

pygame.K_DOWN;

pygame.K_RIGHT;

 

(4)代码

运行环境:Pycharm

# coding=UTF-8
# 一、引入pygame和sys
import pygame,sys
reload(sys)
sys.setdefaultencoding('UTF-8')

# 二、初始化init()及设置
pygame.init()
size = width, height = 1000, 600 # 窗口大小
speed = [1,1]
BLACK = 0, 0, 0 # 窗口背景色RGB值
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame游戏之旅")
ball = pygame.image.load("PYG03-flower.PNG") # 引入壁球
ballrect = ball.get_rect() # 获取壁球大小
fps = 300
fclock = pygame.time.Clock()

# 三、获取事件并逐类响应
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT: # 横向减速 减一个像素
                if speed[0] <= 0 : speed[0] = speed[0]
                else : speed[0] = speed[0] - 1
            elif event.key == pygame.K_RIGHT:
                if speed[0] > 0 : speed[0] = speed[0] + 1
                else : speed[0] = speed[0] - 1 # 负号表示方向
            elif event.key == pygame.K_UP:
                if speed[1] > 0 : speed[1] = speed[1]  + 1
                else : speed[1] = speed[1] - 1
            elif event.key == pygame.K_DOWN:
                if speed[1] <= 0 : speed[1] = speed[1]
                else : speed[1] = speed[1] - 1
    ballrect = ballrect.move(speed)
    if ballrect.left < 0 or ballrect.right > width
        speed[0] = - speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = - speed[1]
    screen.fill(BLACK)
    screen.blit(ball, ballrect)
    # 四、刷新屏幕
    pygame.display.update()
    fclock.tick(fps)