2016-04-26 63 views
2

我是一个初中的孩子,希望当我长大后成为一名程序员。我要去一个暑期学校的编码类和学习python和pygame.I已经知道足够多的python,但刚刚我的手在pygame.I湿被添加尝试添加的边界为我的游戏,但它能够阻止此屏幕的左侧和顶部是我的代码: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 

回答

1
if x <= WIDTH: 
    x = 0 
if y <= HEIGHT: 
    y = 0 

这真的是你想要的去做?当鼠标位于边界内时,将xy设置为零?或者是否要限制xy分别只在0至WIDTHHEIGHT范围内存在?

x = min(max(x, 0), WIDTH) 
y = min(max(y, 0), HEIGHT) 

此外,请注意,您的播放器精灵有自己的宽度和高度。 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)),否则精灵将会用原始的无界坐标绘制。

+0

我在看YouTube上的一些内容,忘记删除视频中的代码。 –

+0

好的,那么你想做什么? – Hamms

+0

我正在尝试制作一个边界,以便玩家不会越过边界。 –