pygame 不更新 x 和 y
pygame not updating x and y
我尝试添加一个绿色方块(僵尸)跟随红色方块(玩家),但玩家位置更新而僵尸位置不会,我刚开始使用 python 但我没有不明白为什么会这样,先谢谢了。
import pygame
pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()
player = pygame.Rect(0, 0, 20, 20)
player.center = window.get_rect().center
playerVel = 3
zombie = pygame.Rect(0, 0, 20, 20)
zombieVel = 2
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
print(pygame.key.name(event.key))
keys = pygame.key.get_pressed()
player.x += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * playerVel
player.y += (keys[pygame.K_DOWN] - keys[pygame.K_UP]) * playerVel
player.centerx = player.centerx % window.get_width()
player.centery = player.centery % window.get_height()
if zombie.x > player.x:
zombie.x =- zombieVel
if zombie.x < player.x:
zombie.x =+ zombieVel
if zombie.y > player.y:
zombie.y =- zombieVel
if zombie.y < player.y:
zombie.y =+ zombieVel
window.fill(0)
pygame.draw.rect(window, (255, 0, 0), player)
pygame.draw.rect(window, (0, 255, 0), zombie)
pygame.display.flip()
#
pygame.quit()
exit()
if zombie.x > player.x:
zombie.x =- zombieVel
if zombie.x < player.x:
zombie.x =+ zombieVel
if zombie.y > player.y:
zombie.y =- zombieVel
if zombie.y < player.y:
zombie.y =+ zombieVel
运算符应该是 +=
和 -=
而不是 =+
=-
我认为
我发现了问题:
您刚刚添加僵尸速度时出错
这是可以正常工作的更新代码
import pygame
pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()
player = pygame.Rect(0, 0, 20, 20)
player.center = window.get_rect().center
playerVel = 3
zombie = pygame.Rect(0, 0, 20, 20)
zombieVel = 2
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
print(pygame.key.name(event.key))
keys = pygame.key.get_pressed()
player.x += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * playerVel
player.y += (keys[pygame.K_DOWN] - keys[pygame.K_UP]) * playerVel
player.centerx = player.centerx % window.get_width()
player.centery = player.centery % window.get_height()
# changed those lines
#################################################
if zombie.x > player.x: zombie.x -= zombieVel
else: zombie.x += zombieVel
if zombie.y > player.y: zombie.y -= zombieVel
else: zombie.y += zombieVel
#################################################
print(zombie.x, zombie.y)
window.fill(0)
pygame.draw.rect(window, (255, 0, 0), player)
pygame.draw.rect(window, (0, 255, 0), zombie)
pygame.display.flip()
#
pygame.quit()
exit()
提示如果你想给一个变量添加一个值你可以这样做
var += 1
是 var = var +1
.
的缩写形式
您的代码存在问题,您将加号或减号放在等号后面,而不是前面。就是这样一个简单的错误。这个错误导致你的 zombie.x 是这样计算的 zombie.x = 0 + zombieVel 同样适用于 y 值
我尝试添加一个绿色方块(僵尸)跟随红色方块(玩家),但玩家位置更新而僵尸位置不会,我刚开始使用 python 但我没有不明白为什么会这样,先谢谢了。
import pygame
pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()
player = pygame.Rect(0, 0, 20, 20)
player.center = window.get_rect().center
playerVel = 3
zombie = pygame.Rect(0, 0, 20, 20)
zombieVel = 2
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
print(pygame.key.name(event.key))
keys = pygame.key.get_pressed()
player.x += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * playerVel
player.y += (keys[pygame.K_DOWN] - keys[pygame.K_UP]) * playerVel
player.centerx = player.centerx % window.get_width()
player.centery = player.centery % window.get_height()
if zombie.x > player.x:
zombie.x =- zombieVel
if zombie.x < player.x:
zombie.x =+ zombieVel
if zombie.y > player.y:
zombie.y =- zombieVel
if zombie.y < player.y:
zombie.y =+ zombieVel
window.fill(0)
pygame.draw.rect(window, (255, 0, 0), player)
pygame.draw.rect(window, (0, 255, 0), zombie)
pygame.display.flip()
#
pygame.quit()
exit()
if zombie.x > player.x:
zombie.x =- zombieVel
if zombie.x < player.x:
zombie.x =+ zombieVel
if zombie.y > player.y:
zombie.y =- zombieVel
if zombie.y < player.y:
zombie.y =+ zombieVel
运算符应该是 +=
和 -=
而不是 =+
=-
我认为
我发现了问题:
您刚刚添加僵尸速度时出错
这是可以正常工作的更新代码
import pygame
pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()
player = pygame.Rect(0, 0, 20, 20)
player.center = window.get_rect().center
playerVel = 3
zombie = pygame.Rect(0, 0, 20, 20)
zombieVel = 2
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
print(pygame.key.name(event.key))
keys = pygame.key.get_pressed()
player.x += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * playerVel
player.y += (keys[pygame.K_DOWN] - keys[pygame.K_UP]) * playerVel
player.centerx = player.centerx % window.get_width()
player.centery = player.centery % window.get_height()
# changed those lines
#################################################
if zombie.x > player.x: zombie.x -= zombieVel
else: zombie.x += zombieVel
if zombie.y > player.y: zombie.y -= zombieVel
else: zombie.y += zombieVel
#################################################
print(zombie.x, zombie.y)
window.fill(0)
pygame.draw.rect(window, (255, 0, 0), player)
pygame.draw.rect(window, (0, 255, 0), zombie)
pygame.display.flip()
#
pygame.quit()
exit()
提示如果你想给一个变量添加一个值你可以这样做
var += 1
是 var = var +1
.
您的代码存在问题,您将加号或减号放在等号后面,而不是前面。就是这样一个简单的错误。这个错误导致你的 zombie.x 是这样计算的 zombie.x = 0 + zombieVel 同样适用于 y 值