我只想左右移动一个街区,但现在不知道为什么按键密码不能通过。当我打开程序,它只是显示'坦克'在其位置,但你不能用左键或右键移动它。你知道吗
import pygame, sys
from pygame.locals import *
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
TANK_SIZE = 20
BLACK = (0 ,0 ,0 )
WHITE = (255,255,255)
def drawArena():
DISPLAYSURF.fill(BLACK)
def drawTank(tank):
pygame.draw.rect(DISPLAYSURF, WHITE, tank)
def main():
pygame.init()
global DISPLAYSURF
DISPLAYSURF = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption('Tanks')
tankX = 200
tankY = 200
tank = pygame.Rect(tankX, tankY, TANK_SIZE, TANK_SIZE)
drawArena()
drawTank(tank)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
tankX -= 20
if event.key == pygame.K_RIGHT:
tankX += 20
drawArena()
drawTank(tank)
pygame.display.update()
if __name__ == '__main__':
main()
您不应该更新tankX和tankY变量,因为这不会影响
tank
Rect对象。您不需要重新初始化tank
对象,因为这可能会浪费资源。一种更有效的方法是直接使用tank
对象的move\u ip()函数更新它的x和y值。你知道吗在你的主循环中。。。你知道吗
这是因为更新的
tankX
值不会影响tank
对象。有很多方法可以让它发挥作用。例如,在while True
循环中插入tank的重新初始化:相关问题 更多 >
编程相关推荐