В моей игре у меня есть два управляемых игроком танка. Оба танка имеют одинаковый код, но один изменил имена переменных. Два кода управления баком приведены ниже. Управление движением работает нормально, но это сила, которая не работает. Каким-то образом, какой бы ни был набор элементов управления танком первым, он работает. Пользователь должен использовать «o», «p» и «e», «r» для изменения мощности, но со вторым набором управляющего кода, даже с линиями keyup, мощность всегда будет меняться, а не оставаться на месте с пользователь отпускает ключ.
Я рассмотрел некоторые вопросы о переполнении стека и YouTube, но это было слишком сложно для меня, чтобы понять.
Я также попросил друзей и моего учителя взглянуть на это.
keys= pygame.key.get_pressed()
if keys[pygame.K_j]:
tank1x -= tankmove
elif keys[pygame.K_l]:
tank1x += tankmove
elif keys[pygame.K_i]:
changeturret1 = 1
elif keys[pygame.K_k]:
changeturret1 = -1
elif keys[pygame.K_u]:
fire1(gun1,tank1x,tank1y,currentturretpos1,fire_power1)
elif keys[pygame.K_o]:
power_change1 = -1
elif keys[pygame.K_p]:
power_change1 = 1
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
elif event.type == pygame.KEYUP:
if event.key == pygame.K_i or event.key == pygame.K_k:
changeturret1 = 0
if event.key == pygame.K_o or event.key == pygame.K_p:
power_change1 = 0
currentturretpos1 += changeturret1
if currentturretpos1 > 9:
currentturretpos1 = 9
elif currentturretpos1 < 0:
currentturretpos1 = 0
fire_power1 += power_change1
if fire_power1 > 100:
fire_power1 = 100
elif fire_power1 < 1:
fire_power1 = 1
message("Power: "+str(fire_power1)+"%",black,850,100)
if keys[pygame.K_a]:
tankx -= tankmove
elif keys[pygame.K_d]:
tankx += tankmove
elif keys[pygame.K_w]:
changeturret = 1
elif keys[pygame.K_s]:
changeturret = -1
elif keys[pygame.K_q]:
fire(gun,tankx,tanky,currentturretpos,fire_power)
elif keys[pygame.K_e]:
power_change = -1
elif keys[pygame.K_r]:
power_change = 1
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
elif event.type == pygame.KEYUP:
if event.key == pygame.K_w or event.key == pygame.K_s:
changeturret = 0
if event.key == pygame.K_e or event.key == pygame.K_r:
power_change = 0
currentturretpos += changeturret
if currentturretpos > 9:
currentturretpos = 9
elif currentturretpos < 0:
currentturretpos = 0
fire_power += power_change
if fire_power > 100:
fire_power = 100
elif fire_power < 1:
fire_power = 1
message("Power: "+str(fire_power)+"%",black,0,100)
Пользователь должен использовать «e», «r» и «o», «p», чтобы изменить мощность, и когда они отпустят клавишу, мощность не изменится, но останется на уровне мощности.