将set_mode设成RESIZABLE模式
screen = pygame.display.set_mode(size,RESIZABLE)
如果用户拖拽改变窗口大小,则执行:
# 用户调尺寸
if event.type == VIDEORESIZE:
size = event.size
width,height = size
print(size)
screen = pygame.display.set_mode(size,RESIZABLE)
完整代码:
import pygame
import sys
from pygame.locals import *
#初始化Pygame
pygame.init()
clock = pygame.time.Clock()
size = width,height = 600,400 #实际上是元组
speed = [-2,1]
bg =(255,255,255) #rgb,white
biggestsize = pygame.display.list_modes()[0]
fullscreen = False
#创建指定大小的窗口
screen = pygame.display.set_mode(size,RESIZABLE)
#设置标题
pygame.display.set_caption("木尧-pygame初探")
#加载图
muyao = pygame.image.load("muyao.png")
#获得图像位置矩形
position = muyao.get_rect()
l_head = muyao
r_head = pygame.transform.flip(muyao,True,False)
#死循环,一直动
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == KEYDOWN:#需要from pygame.locals import *
if event.key == K_LEFT:
muyao = l_head
speed=[-1,0]
if event.key == K_RIGHT:
muyao = r_head
speed=[1,0]
if event.key == K_UP:
speed=[0,-1]
if event.key == K_DOWN:
speed=[0,1]
# 全屏F11
if event.key == K_F11:
fullscreen = not fullscreen
if fullscreen: #全屏,并开硬件加速
screen = pygame.display.set_mode(biggestsize,FULLSCREEN | HWSURFACE)
size = width,height = biggestsize[0],biggestsize[1]
else:
screen = pygame.display.set_mode(size)
size = width,height = 600,400
# 用户调尺寸
if event.type == VIDEORESIZE:
size = event.size
width,height = size
print(size)
screen = pygame.display.set_mode(size,RESIZABLE)
#move
position = position.move(speed)
if position.left < 0 or position.right > width:
#水平翻转
muyao = pygame.transform.flip(muyao,True,False) #muyao,水平yes,垂直no
#反向
speed[0] = -speed[0]
if position.top <0 or position.bottom > height:
speed[1] = -speed[1]
#填充背景
screen.fill(bg)
#更新图像
screen.blit(muyao,position)
#更新界面(双缓冲)
pygame.display.flip()
#延迟10ms
#pygame.time.delay(20)
clock.tick(100)#不高于200帧
tip:Ctrl+[ 是往左缩进一个TAB