Pygame | 1 - 窗口的显示

前言

对于开发一个游戏来说,窗口的显示肯定是前提中的前提,对于pygame来说,只需要一小段代码就可以初始化窗口。

例如:

pygame.init()
SCREEN_SIZE = (640, 480)
screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)

即完成窗口的初始化。

我们这里调用了一个set_mode函数,set_mode:返回一个Surface对象,代表了桌面上出现的窗口。第一个参数代表分辨率;第二个参数是标志位,如果不需要使用任何特性,则指定为0;第三个为色深。

关于标志位的说明如下:

标志位功能
FULLSCREEN创建一个全屏窗口 (create a fullscreen display)
DOUBLEBUF创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用(recommended for HWSURFACE or OPENGL)
HWSURFACE创建一个硬件加速的窗口,必须和FULLSCREEN同时使用(hardware accelerated, only in FULLSCREEN)
OPENGL创建一个OPENGL渲染的窗口 (create an OpenGL-renderable display)
RESIZABLE创建一个可以改变大小的窗口 (display window should be sizeable)
NOFRAME创建一个没有边框的窗口 (display window will have no border or controls)

改变窗口尺寸的代码实现

pygame的默认显示窗口是不支持拖动边框改变大小的,改变set_mode函数的参数后可以实现。以下展示一个可运行实例:

import pygame
# 下面这个是导入所有的key参数
from pygame.locals import *
from sys import exit

background_image = '../image/sushiplate.jpg'
SCREEN_SIZE = (640, 480)

pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)

background = pygame.image.load(background_image).convert()

while True:
	event = pygame.event.wait()
	if event.type == QUIT:
		exit()
	if event.type == VIDEORESIZE:
		SCREEN_SIZE = event.size
		screen = pygame.display.set_mode(SCREEN_SIZE, RESIZABLE, 32)
		pygame.display.set_caption("Window resized to " + str(event.size))

    # 这里需要重新填满窗口
	screen_width, screen_height = SCREEN_SIZE
	for y in range(0, screen_height, background.get_height()):
		for x in range(0, screen_width, background.get_width()):
			screen.blit(background, (x, y))

pygame.display.update()
VIDEORESIZE 事件,它包含如下内容:
  • size — 一个二维元组,值为更改后的窗口尺寸,size[0]为宽,size[1]为高
  • w — 宽
  • h — 高

其他

如果想使用复合模式,可以加一个“|”

比如:screen = pygame.display.set_mode(SCREEN_SIZE, HWSURFACE | FULLSCREEN, 32)

当使用OPENGL时,不能使用pygame.display.update()来更新窗口,而是pygame.display.flip()。

如果要更深刻地进行学习该部分的话可以去官网查询相关词条。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值