鱼C论坛

 找回密码
 立即注册
查看: 71|回复: 4

[已解决]求助

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

import pygame
import sys
from pygame.locals import *

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


size = width, height = 1000, 800 # 设置的界面大小
speed = [0, 0] # 设置的乌龟初始移动的速度
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 = [5, 0]
            if event.key == K_UP:
                speed = [0, -5]
            if event.key == K_DOWN:
                speed = [0, 5]
   
            # 全屏
            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[0] = -speed[0]

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

    # 填充背景
    screen.fill(bg)

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

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

    # 延迟10ms
    pygame.time.delay(10) # 让乌龟跑的稍微的正常一些
最佳答案
6 天前
本帖最后由 小伤口 于 2021-4-8 15:04 编辑

  1. # 用户调整窗口尺寸
  2.             if event.type == VIDEORESIZE:
  3.                 size = event.size
  4.                 width, height = size
  5.                 print(size)
  6.                 screen = pygame.display.set_mode(size, RESIZABLE)
复制代码

这个代码缩进缩过头了
全屏的时候图片会嵌进右侧和下面

这句话我没懂你的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 6 天前 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 6 天前 | 显示全部楼层    本楼为最佳答案   
本帖最后由 小伤口 于 2021-4-8 15:04 编辑

  1. # 用户调整窗口尺寸
  2.             if event.type == VIDEORESIZE:
  3.                 size = event.size
  4.                 width, height = size
  5.                 print(size)
  6.                 screen = pygame.display.set_mode(size, RESIZABLE)
复制代码

这个代码缩进缩过头了
全屏的时候图片会嵌进右侧和下面

这句话我没懂你的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 5 天前 | 显示全部楼层
小伤口 发表于 2021-4-8 15:02
这个代码缩进缩过头了

这句话我没懂你的意思


就是图片会跑出去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 4 天前 | 显示全部楼层
本帖最后由 小伤口 于 2021-4-10 14:28 编辑
silver-crow 发表于 2021-4-9 14:39
就是图片会跑出去


哎呀,忘记回你了
嗯,这个问题我其实也没解决
所以我写的游戏都不准用户防缩大小
当时我是在移动背景上面那里加了一个
  1. #更新界面
  2. pygame.display.flip()
  3. pygame.time.delay(10)
复制代码

虽然他不会跑出去了
但是每次全屏时,都会重新出现在左上角
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1

GMT+8, 2021-4-14 09:14

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表