Я создаю мозаичную игру, в которой есть NPC. Я могу успешно создать одного NPC, но когда я рисую более одного, они занимают одну и ту же позицию после нескольких секунд выполнения кода. Я создал этот образец, чтобы продемонстрировать, что я имею в виду.
import pygame, random, math
screen = pygame.display.set_mode((800,600))
NPCP = {'Bob' : (2,6), 'John' : (4,4)} # 25, 19 max width and height
pygame.time.set_timer(pygame.USEREVENT, (100))
sMove = True
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.USEREVENT:
sMove = True
screen.fill((0,0,255))
for name in NPCP:
x,y = NPCP.get(name)
pygame.draw.rect(screen, (255,0,0), (x*32,y*32,50,50))
if sMove == True:
move = random.randint(1,4)
sMove = False
if move == 1:
if math.floor(y) > 2:
y -= 2
if move == 2:
if math.floor(y) < 17:
y += 2
if move == 3:
if math.floor(x) < 23:
x += 2
if move == 4:
if math.floor(x) > 2:
x -= 2
print(x,y)
NPCP[name] = (x,y)
pygame.display.flip()
В этом случае я использую словарь для создания этих NPC или прямоугольников. Я перемещаю их с помощью таймера и случайного числа в диапазоне от 1 до 4, чтобы выбрать, какое движение делать. Я использую цикл для запуска каждого NPC. Я хотел бы знать, как разрешить этим прямоугольникам не перемещаться одинаково и чтобы позиция не могла в конечном итоге перейти в одну и ту же позицию и двигаться по-разному друг от друга. Я также хочу, чтобы он использовал словарь для этого.