Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame边界不工作_Python_Pygame - Fatal编程技术网

Python Pygame边界不工作

Python Pygame边界不工作,python,pygame,Python,Pygame,我是一名初中生,希望长大后成为一名程序员。我将参加一个暑期学校的编码班,学习python和pygame。我已经了解了很多python,但刚刚被pygame浸透了。我试图为我的游戏添加一个边界,但它能够阻挡屏幕的左侧和顶部。这是我的代码: import pygame,sys from pygame.locals import * pygame.init() WIDTH = 400 HEIGHT = 400 pg = "player.gif" bg = "y.gif" screen=pyga

我是一名初中生,希望长大后成为一名程序员。我将参加一个暑期学校的编码班,学习python和pygame。我已经了解了很多python,但刚刚被pygame浸透了。我试图为我的游戏添加一个边界,但它能够阻挡屏幕的左侧和顶部。这是我的代码:

  import pygame,sys
from pygame.locals import *
pygame.init()

WIDTH = 400
HEIGHT = 400

pg = "player.gif"
bg = "y.gif"
screen=pygame.display.set_mode((WIDTH,HEIGHT))
background = pygame.image.load(bg)
player = pygame.image.load(pg)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
         pygame.quit()
        sys.exit
        x,y = pygame.mouse.get_pos()
        screen.blit(background,[0,0])
        screen.blit(player,(x,y))
        pygame.display.update()
        if x <= WIDTH:
         x = 0
        if y <= HEIGHT:
         y = 0
import pygame,sys
从pygame.locals导入*
pygame.init()
宽度=400
高度=400
pg=“player.gif”
bg=“y.gif”
screen=pygame.display.set_模式((宽度、高度))
背景=pygame.image.load(背景)
player=pygame.image.load(pg)
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
系统出口
x、 y=pygame.mouse.get_pos()
screen.blit(背景,[0,0])
屏幕。blit(播放器,(x,y))
pygame.display.update()
如果x
此外,请注意,您的玩家精灵有自己的宽度和高度。
x,y
坐标表示精灵左上角的位置。如果要限制精灵的位置,使整个东西始终显示在屏幕上,则首先需要获得精灵的大小

spriteWidth, spriteHeight = player.get_rect().size
然后在边界计算中考虑该尺寸

x = min(max(x, 0), WIDTH - spriteWidth)
y = min(max(y, 0), HEIGHT - spriteHeight)

此外,在调用
screen.blit(player,(x,y))
之前,您需要确保执行此操作,否则将使用原始图像绘制精灵,无界坐标。

我在youtube上看了一些东西,忘了删除视频中的代码。我正在尝试设置一个边界,以便播放器不会越过边界。我尝试了你说的操作,但我没有工作。除此之外,什么都没有。你需要提供更多详细信息。什么不起作用?它怎么不起作用?你有错误吗?你希望它做什么而不是做什么?你希望它不这样做吗?我的问题是我的播放器在屏幕的左侧和顶部有一个边框,但在屏幕的底部和右侧没有边框。这是一个程序的视频。
spriteWidth, spriteHeight = player.get_rect().size
x = min(max(x, 0), WIDTH - spriteWidth)
y = min(max(y, 0), HEIGHT - spriteHeight)