Python游戏开发-05-提高游戏颜值-02-可调整窗口尺寸

将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

猜你喜欢

转载自blog.csdn.net/muyao987/article/details/79104835
今日推荐