Pygame - проблема со случайно генерируемыми спрайтами - PullRequest
0 голосов
/ 19 октября 2018

Мне нужна помощь со случайным генерированием спрайтов.

Идея такова: одна голова движется вниз по экрану.Как только он покидает экран, новая случайная голова начинает двигаться вниз по экрану.И так далее ...

У меня есть 4 изображения, из которых я хочу выбрать случайным образом.

Моя проблема в том, что движущееся изображение "головы" - это просто постоянный цикл мерцания всех голов всписок.Функция постоянно мигает

Вот соответствующий код:

ran_head = [head1, head2, head3, head4]

def heads(img, headx, heady):
  gameDisplay.blit(img, (headx, heady))


def game_loop():
  head_width = 150
  head_height = 192
  head_startx = random.randrange(0, (display_width-150))
  head_starty = -200
  head_speed = 5

  heads(random.choice(ran_head), head_startx, head_starty)

  head_starty += head_speed

  if head_starty > display_height:
      head_starty = -200
      head_startx = random.randrange(0, (display_width-140))
      dodged += 1   #add 1 point
      head_speed += 0.5    #increase speed each time by 0.5

1 Ответ

0 голосов
/ 19 октября 2018

Вы называете heads(random.choice(ran_head), head_startx, head_starty) каждый тик, поэтому каждый тик вы моргаете случайным образом.Просто позвоните random.choice(ran_head) один раз до цикла и только когда голова выходит за пределы экрана, что-то вроде этого:

ran_head = [head1, head2, head3, head4]
head_img = random.choice(ran_head) # variable to store the currently choosen image

def heads(img, headx, heady):
  gameDisplay.blit(img, (headx, heady))


def game_loop():
  head_width = 150
  head_height = 192
  head_startx = random.randrange(0, (display_width-150))
  head_starty = -200
  head_speed = 5

  heads(head_img , head_startx, head_starty)

  head_starty += head_speed

  if head_starty > display_height:
      head_starty = -200
      head_startx = random.randrange(0, (display_width-140))
      dodged += 1   #add 1 point
      head_speed += 0.5    #increase speed each time by 0.5
      head_img = random.choice(ran_head) # select a new image randomly
...