2016-04-26 7 views
2

Ich bin ein Kind in der Mittelschule und hoffe, ein Programmierer zu sein, wenn ich aufwachse.Ich gehe in eine Sommerschule Coding-Klasse und lernen Python und Pygame.Ich wusste bereits genug Python, aber gerade meine Hände nass in pygame.I wurden hinzugefügt versucht, eine Grenze für mein Spiel hinzuzufügen, aber es ist in der Lage die linken und oberen Rand des Bildschirms ist mein Code hier zu blockieren:Pygame Boundary funktioniert nicht

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 

Antwort

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

ist das wirklich das, was Sie wollen machen? Setzen Sie x und y auf Null, wenn die Maus innerhalb der Grenzen positioniert ist? ODER wollen Sie x und y auf nur im Bereich von 0 bis WIDTH bzw. HEIGHT begrenzen?

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

Beachten Sie außerdem, dass Ihr Player Sprite eine eigene Breite und Höhe hat. Die x,y Koordinate repräsentiert die Position der oberen linken Ecke des Sprites. Wenn Sie die Sprite-Position so beschränken möchten, dass die ganze Sache ist immer auf dem Bildschirm, müssen Sie zunächst die Größe des Sprites

spriteWidth, spriteHeight = player.get_rect().size 

erhalten und dann diese Größe in die Grenzberechnungsfaktor

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

Zusätzlich müssen Sie sicherstellen, dass Sie dies tun vor Sie screen.blit(player, (x, y)) aufrufen, sonst wird das Sprite mit den ursprünglichen, unbegrenzten Koordinaten gezeichnet.

+0

Ich habe auf youtube einige Sachen angeschaut und vergessen, den Code zu löschen, der im Video war. –

+0

okay, was versuchen Sie dann zu tun? – Hamms

+0

Ich versuche eine Grenze zu machen, damit der Spieler nicht über die Grenze hinausgeht. –

Verwandte Themen