2016-04-26 3 views
2

Я ребенок в средней школе и надеюсь стать программистом, когда я вырасту. Я собираюсь пройти курс обучения летней школе и изучать питон и pygame.I уже знал достаточно питона, но просто получил мои руки мокрые в pygame.I добавляли попытку добавить границу для моей игры, но она способна блокировать левые и верхнюю часть экрана здесь мой код:Pygame Boundary Not Working

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 

является ли это действительно то, что вы хотите делать? Установите x и y на ноль, если мышь находится в границах? ИЛИ вы хотите ограничить x и y только в пределах от 0 до WIDTH или HEIGHT соответственно?

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

Я пытаюсь сделать границу, чтобы игрок не двигался мимо границы. –