silver-crow 发表于 2021-4-8 09:36:11

求助

为什么我这个在运行之后,全屏的时候图片会嵌进右侧和下面,调整窗口大小的时候图片移动的范围仍然是原本的范围呢?

import pygame
import sys
from pygame.locals import *

# 初始化
pygame.init() # 初始化模块,这样需要的时候可以随时调用


size = width, height = 1000, 800 # 设置的界面大小
speed = # 设置的乌龟初始移动的速度
bg = (255, 255, 255) # 表示颜色,三个参数都是255时为白色
fullscreen = False

# 创建指定大小的窗口(会返回一个Surface的对象,surface对象是来表示图像的对象)
screen = pygame.display.set_mode(size, RESIZABLE) # RESIZABLE 用来通过拖拽修改窗口大小的

# 设置窗口标题
pygame.display.set_caption("初次见面,请大家多多关照!")

# 加载图片
turtle = pygame.image.load("turtle.png")

# 获得图像的位置矩形(每一个Surface对象都会有一个rect矩形对象,用于表示Surface的矩形区域的位置和大小信息)
position = turtle.get_rect()

l_head = turtle # 加这个是为了在左移的时候也可以改变乌龟朝向
r_head = pygame.transform.flip(turtle, True, False)

while True:
    for event in pygame.event.get():
      if event.type == pygame.QUIT: # 当我们点击界面上的x时就会写入一个QUIT事件
            sys.exit()

      if event.type == KEYDOWN:
            if event.key == K_LEFT:
                turtle= l_head
                speed = [-5, 0]
            if event.key == K_RIGHT:
                turtle= r_head
                speed =
            if event.key == K_UP:
                speed =
            if event.key == K_DOWN:
                speed =
   
            # 全屏
            if event.key == K_ESCAPE:
                fullscreen = not fullscreen
                if fullscreen:
                  screen = pygame.display.set_mode((1680, 1050), FULLSCREEN | HWSURFACE) # FULLSCREEN | HWSURFACE 用来设置全屏的
                  width, height = 1680, 1050
                else:
                  screen = pygame.display.set_mode(size)

            # 用户调整窗口尺寸
            if event.type == VIDEORESIZE:
                size = event.size
                width, height = size
                print(size)
                screen = pygame.display.set_mode(size, RESIZABLE)

    # 移动图像
    position = position.move(speed)


    if position.left < 0 or position.right > width: # 坐标系左上角是(0,0), 右下角为(1000,800)
      # 翻转图像
      turtle = pygame.transform.flip(turtle, True, False) # 三个参数,第一个参数是对象名,第二个参数是是否水平翻转,第三个参数是竖直翻转
      
      # 反方向移动
      speed = -speed

    if position.top < 0 or position.bottom > height:
      speed = -speed

    # 填充背景
    screen.fill(bg)

    # 更新图像
    screen.blit(turtle, position) # 将图像turtle画到另一个图像screen上,尺寸为position
   

    # 更新界面
    pygame.display.flip() # 刷新画面,将绘制的画面一次性打印到画面上

    # 延迟10ms
    pygame.time.delay(10) # 让乌龟跑的稍微的正常一些

小伤口 发表于 2021-4-8 15:02:18

本帖最后由 小伤口 于 2021-4-8 15:04 编辑

# 用户调整窗口尺寸
            if event.type == VIDEORESIZE:
                size = event.size
                width, height = size
                print(size)
                screen = pygame.display.set_mode(size, RESIZABLE)
这个代码缩进缩过头了{:10_257:}
全屏的时候图片会嵌进右侧和下面
这句话我没懂你的意思{:10_245:}

silver-crow 发表于 2021-4-9 14:39:26

小伤口 发表于 2021-4-8 15:02
这个代码缩进缩过头了

这句话我没懂你的意思

就是图片会跑出去

小伤口 发表于 2021-4-10 14:26:27

本帖最后由 小伤口 于 2021-4-10 14:28 编辑

silver-crow 发表于 2021-4-9 14:39
就是图片会跑出去

哎呀,忘记回你了{:10_266:}
嗯,这个问题我其实也没解决{:10_282:}
所以我写的游戏都不准用户防缩大小{:10_315:}
当时我是在移动背景上面那里加了一个{:10_295:}
#更新界面
pygame.display.flip()
pygame.time.delay(10)
虽然他不会跑出去了{:10_329:}
但是每次全屏时,都会重新出现在左上角{:10_272:}
页: [1]
查看完整版本: 求助