我嘗試添加一個跟隨紅色塊(玩家)的綠色塊(僵尸),但是玩家位置更新并且僵尸位置不會,我剛剛開始使用 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()
#https://stackoverflow.com/questions/16044229/how-to-get-keyboard-input-in-pygame
pygame.quit()
exit()
uj5u.com熱心網友回復:
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
運營商應該是 =而-=不是= =-我認為
uj5u.com熱心網友回復:
我發現了問題:
您只是在添加 Zombie 速度時出錯
這是運行良好的更新代碼
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()
# https://stackoverflow.com/questions/16044229/how-to-get-keyboard-input-in-pygame
pygame.quit()
exit()
提示如果你想給一個變數添加一個值,你可以這樣做,
var = 1這是var = var 1.
您的代碼的問題是您將加號或減號放在等號后面,而不是前面。就是這樣一個簡單的錯誤。此錯誤導致您的zombie.x 的計算方式如下:zombie.x = 0 zombieVel 同樣適用于 y 值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/415590.html
標籤:
上一篇:如何使用pandas/numpy將is.null值替換為條件?
下一篇:根據拆分值洗掉重復行
