我正在制作一款游戏,并且在该游戏中,只要玩家的x>>屏幕宽度,我希望玩家的x速度= 0。但是当我尝试时,它没有工作。碰撞代码对我来说看起来很好,我认为当我打电话给player.collision()
时有一些问题。与墙碰撞并不会停止对象的速度
PS。对象的速度等于0时,对象x为< = 0,但不是当X是> = displayW
速度不等于0
问题是下#collision to walls
PYTHON
# IMPORTS
import pygame, random;
# GLOBALS
global screen, displayW, displayH;
global clock, FPS;
global end, food, player;
# SETGLOBALVALUES
def setGlobalValues():
global screen, displayW, displayH;
global clock, FPS;
global end, food, player;
displayW = 800;
displayH = 600;
screen = pygame.display.set_mode((displayW, displayH));
clock = pygame.time.Clock();
FPS = 60;
end = False;
food = Food();
player = Player();
# MAIN
def main():
pygame.init();
setGlobalValues();
setup();
gameLoop();
quitGame();
# GAMELOOP
def gameLoop():
global end, player;
while(not end):
for event in pygame.event.get():
# ONCLICK QUIT
if(event.type == pygame.QUIT):
end = True;
# KEYDOWN
if(event.type == pygame.KEYDOWN):
if(event.key == pygame.K_LEFT):
player.velX -= 1;
if(event.key == pygame.K_RIGHT):
player.velX += 1;
# KEYUP
if(event.type == pygame.KEYUP):
if(event.key == pygame.K_LEFT):
player.velX = 0;
if(event.key == pygame.K_RIGHT):
player.velX = 0;
draw();
animate();
collision();
# DRAW
def draw():
global screen, food, player;
# fill background
screen.fill((255, 255, 255));
player.draw();
# update
pygame.display.update();
# ANIMATE
def animate():
global food, player;
food.animate();
player.animate();
# COLLISION
def collision():
player.collision();
# CLASSES
class Food():
def __init__(self, x=0, y=0, w=0, h=0, velY=0, color=()):
global displayW;
self.x = random.randrange(0, displayW);
self.y = -100;
self.w = 20;
self.h = 20;
self.velY = 0.7;
self.color = (255, 0, 0);
def draw(self):
global screen;
pygame.draw.rect(screen, self.color, (self.x, self.y, self.w, self.h));
def animate(self):
self.y += self.velY;
def collision(self):
global displayW, displayH;
pass;
class Player():
def __init__(self, x=0, y=0, velX=0, velY=0, w=0, h=0, color=()):
global displayW, displayH;
self.w = 20;
self.h = 20;
self.x = displayW/2 - self.w/2;
self.y = displayH - 100;
self.velX = 0;
self.velY = 0;
self.color = (0, 0, 0);
def draw(self):
global screen;
pygame.draw.ellipse(screen, self.color, (self.x, self.y, self.w, self.h));
def animate(self):
self.x += self.velX;
self.y += self.velY;
def collision(self):
global displayW;
# collision to walls
if(self.x <= 0):
self.velX = 0;
elif(self.x >= displayW):
self.velX = 0;
# SETUP
def setup():
pygame.display.set_caption("Food Catcher");
# QUIT GAME
def quitGame():
pygame.quit();
quit();
# CALL MAIN
if(__name__ == "__main__"):
main();
你会得到什么输出?你为什么认为这行不通? –
它是Python:你不需要'''在行尾。 – jsbueno