所以我尝试编写一段代码,让“敌人”移动到你身边。它一直有效,直到我添加了一些代码,按下按钮移动角色本身。我该如何解决这个问题? 我已将不起作用的代码以粗体显示。 这是完整的代码:
pygame.init()
font = pygame.font.SysFont('Arial', 15)
game = pygame.display.set_mode((800,600))
pygame.display.set_caption("Test lol")
enemy = pygame.image.load("SS Tree 1 Transparent.png")
player = pygame.image.load("SS RML.png")
player_x = 100
player_x2, player_y2 = player.get_size()
player_y = 400
enemy_x = 300
enemy_x2, enemy_y2 = enemy.get_size()
enemy_y = 400
enemy_velocity = 0
player_velocity = 0
while True:
game.fill((255,0,0))
game.blit(player, (player_x, player_y))
game.blit(enemy, (enemy_x, enemy_y))
enemy_velocity -= 0.1
player_velocity -= 0.1
if enemy_y >= 400-enemy_y2:
enemy_velocity = 0
enemy_y = 400-enemy_y2
if player_y >= 400-player_y2:
player_velocity = 0
player_y = 400-player_y2
if player_x > enemy_x:
enemy_x += 0.1
elif player_x < enemy_x:
enemy_x -= 0.1
if player_y < enemy_y and enemy_velocity == 0 and enemy_y == 400:
enemy_velocity += 5
keys = pygame.key.get_pressed()
**if keys[pygame.K_LEFT]:
print("r")
player_x -= 1
if keys[pygame.K_RIGHT]:
player_x += 1
if keys[pygame.K_UP] and player_y == 400:
player_velocity = 5**
enemy_y -= enemy_velocity
player_y -= player_velocity
pygame.display.flip()
我检查了另一个程序中相同代码的另一段代码,但没有发现任何差异。 那个程序正在运行。
我建议改进退出事件处理并包括一个时钟来管理帧速率:
import pygame
import sys
pygame.init()
font = pygame.font.SysFont('Arial', 15)
game = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Test lol")
enemy = pygame.image.load("/home/o/oOo/o/clojure-Clojure_prgLang_lispDialect_logo.png")
player = pygame.image.load("/home/o/oOo/o/c.a.r.-C.a.R_Circle-and-Ruler_logo.png")
player_x = 100
player_x2, player_y2 = player.get_size()
player_y = 400
enemy_x = 300
enemy_x2, enemy_y2 = enemy.get_size()
enemy_y = 400
enemy_velocity = 0
player_velocity = 0
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
game.fill((255, 0, 0))
game.blit(player, (player_x, player_y))
game.blit(enemy, (enemy_x, enemy_y))
if player_y < 400 - player_y2:
player_velocity -= 0.1
if enemy_y < 400 - enemy_y2:
enemy_velocity -= 0.1
if enemy_y >= 400 - enemy_y2:
enemy_velocity = 0
enemy_y = 400 - enemy_y2
if player_y >= 400 - player_y2:
player_velocity = 0
player_y = 400 - player_y2
if player_x > enemy_x:
enemy_x += 0.1
elif player_x < enemy_x:
enemy_x -= 0.1
if player_y < enemy_y and enemy_velocity == 0 and enemy_y == 400:
enemy_velocity += 5
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player_x -= 1
if keys[pygame.K_RIGHT]:
player_x += 1
if keys[pygame.K_UP] and player_y == 400 - player_y2:
player_velocity = 5
enemy_y -= enemy_velocity
player_y -= player_velocity
pygame.display.flip()
clock.tick(60)