Python游戏开发(使用第三方库pygame)教程(共17章,本章为第二章)

第二章:pygame程序开发最小框架设计

第一节:pygame程序开发流程

2.1.1使用pygame开发程序的基本流程步骤

第一步:导入模块(import)

第二步:初始化模块(init()函数)

第三步:创建窗口(set_mode()函数)

第四步:窗口图像渲染(surface对象)

第五步:设置游戏窗口状态(清屏,绘制及刷新)

2.1.2导入pygame模块

在上一章中编写的程序前两行是使用pygame编写程序是基本都需要用到的模块。

import pygame
form pygame.locals import *

        其中,第一行代码用来导入pygame包,它是pygame模块中可供使用的最顶层的包,当在程序中导入pygame包后,便可以使用其包含的大部分子模块,比如pygame.color,pygame.surface,pygame.rect等。

        第二行代码使用Python中的from xx import *格式导入了pygame.locals子模块中的所有元素,pygame.locals子模块中存储了pygame中绝大部分的顶级变量与常量,比如pygame.QUIT(程序退出事件),pygame.KEYDOWN(键盘按下事件),pygame.MOUSEBUTTONDOWN(鼠标按下事件)等。

2.1.3初始化pygame

导入pyagme包后,就需要对其进行初始化了,初始化代码如下:

#初始化
pygame.init()

        之所以要初始化pygame,是因为这样可以在底层初始化所有导入的pygame子模块,并且可以为即将要使用的硬件设备做准备工作,如果不初始化,则可能出现程序崩溃等一些不可设想的后果(程序会报错)。

        init()初始化函数返回的是一个二元元组,其中,第一个数字代表导入成功的子模块数量,第二个数字代表导入失败的子模块数量。我们可以使用下面的代码查看init()函数的返回值。

res=pygame.init()
print("成功初始化模块个数",res[0],"失败个数",res[1])

2.1.4创建pygame窗口

        导入并初始化pygame包后,就需要创建pygame窗口了,创建pygame窗口需要pygame包下的display模块中的set_mode()函数,代码如下:

screen=pygame.display.set_mode((500,200),0,32)        #创建游戏窗口

        set_mode函数用来创建一个图形化用户界面(graphical user interface,GUI),其语法格式如下:

set_mode(resolution=(0,0),flags=0,depth=0)

参数说明:

resolution:表示屏幕分辨率,需传入值为两个整数的一个元组,表示所要创建的窗口尺寸(宽乘高),单位为像素。如果将宽度和长度都设置为0,则会具有与显示器屏幕分辨率相同的宽度和长度。

flags:功能标志位,表示创建的主窗口样式,比如创建全屏窗口,无边框窗口等。

flags参数值及说明

参数值说明
一个整数用户设置的窗口大小
pygame.FULLSCREEN全屏显示的窗口
pygame.RESIZABLE可调整大小的窗口
pygame.NOFRAME没有边框和控制按钮的窗口
pygame.DOUBLEBUF双缓冲窗口,推荐和HWSURFACE和OPENGL一起使用
pygame.HWSURFACE硬件加速窗口,仅在FULLSCREEN下可以使用
pygame.OPENGL一个OpenGL可渲染的窗口

depth:控制色深,如果省略该参数,将默认使用系统的最佳和最快颜色深度,因此推荐省略该参数。

返回值:一个pygame.Surface对象(简称为Surface对象)

该函数将创建,传入的三个参数是对显示类型的请求,实际创建的显示类型将自动是系统支持的最佳匹配。

注:可以使用按位或运算符组合为复合模式类型,示例代码如下:

SIZE=WIDTH,HEIGHT=640,396
pygame.display.set_mode(SIZE,HWSURFACE|FULLSCREEN,32)

2.1.5实例:演示pygame窗口模式的切换

编写一个小程序,实现pygame窗口模式的切换。具体代码如下:

图片资源(请自行截图):

import sys

import pygame
from pygame.locals import *

title = "演示pygame窗口模式的切换"
icon_img = "ball.jpg"
# pygame全局初始化
pygame.init()
# 初始化窗口
screen = pygame.display.set_mode((640, 396), 0, 32)
# 窗口标题设置
pygame.display.set_caption(title)
icon_sur = pygame.image.load(icon_img)
# 窗口图标设置
pygame.display.set_icon(icon_sur)

Fullscreen = False # 控制屏幕状态

while True:

    for event in pygame.event.get(): # 事件索取
        if event.type == QUIT:  # 程序退出按钮
            sys.exit()
        if event.type == KEYDOWN:   # 键盘事件
             if event.key == K_f:   # 敲击f 键
                Fullscreen = not Fullscreen
                if Fullscreen:
                    screen = pygame.display.set_mode((640, 396), \
                                                     FULLSCREEN, 32)
                else:
                    screen = pygame.display.set_mode((640, 396), 0, 32)

    pygame.display.flip() # 更新屏幕显示

上面代码中,第八行为设置pygame窗口标题,第九行代码加载了一张图片,以便在第十行代码中将其设置为pygame窗口的图标;另外,pygame窗口默认为窗口模式显示,上面代码中添加了监听键盘事件代码,只要敲击键盘<F>键,pygame窗口显示模式就会在窗口模式和全屏模式之间切换。

注:上面代码中,图形的URL用的是相对路径,因此需要将窗口图标图片和代码文件放置于同一个文件夹中。

第二节:pygame最小开发框架

使用pygame开发,有一个所谓的最小开发框架,可以帮助我们在进行pygame开发时能够快速看到程序运行效果图,从而极大的提升开发效率。

pygame最小开发框架代码如下:

import sys
import pygame
from pygame.locals import *
SIZE=WIDTH,HEIGHT=640,396
FPS=60
pygame.init()
screen=pygame.display.set_mode(SIZE)
pygame.display.set_caption("pygame最小开发框架")
clock=pygame.time.Clock
#创建字体对象
font=pygame.font,Sysfont(None,60,)
running=True
#主体循环
while running:
    #1.清屏
    screen.fill((25,102,273))
    #2.绘制
    for event in pygame.event.get():
        if event.type==QUIT:
            pygame.quit
            sys.exit()
    #刷新显示
    pygame.display.update()
    clock.tick(FPS)

写在最后 

以上就是本章的全部内容,如果这些内容对您有帮助,别忘了点赞+关注!

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值