如何防止程序连续两次显示同一图像



我是pygame的新手,我基本上创建了一个智力竞赛游戏,你只需看他们的脸和名字就可以猜到。问题是同一个玩家可以连续出现两次,我不知道该怎么防止。如果需要的话,下面是我的程序。感谢您的帮助。谢谢

导入pygame,随机,时间

Main

pygame.init()
clock = pygame.time.Clock()
fenetre = pygame.display.set_mode((1400, 788))
pygame.display.set_caption('Quizz joueurs de foot')
BACKGROUND = pygame.image.load("IMAGES/BACKGROUND.png").convert()
font = pygame.font.SysFont('Montserrat', 70)
erreurs = 0
bonne_reponses = 0
entree = ""
joueurs = ["Aguero","Alisson","Batistuta","Boateng","Cantona", "Cristiano Ronaldo", "Dembélé", "Dybala", "Dzeko","Figo","Gattuso",
"Ibrahimovic","Kanté", "Koeman","Lewa","Messi","Nedved","Neuer","Neymar","Reus","Stoichkov","Totti","Vidic"]
images = ["Aguero.png","Alisson.png","Batistuta.png","Boateng.png","Cantona.png", "CR7.png", "Dembélé.png", "Dybala.png", "Dzeko.png","Figo.png","Gattuso.png",
"Ibra.png","Kanté.png", "Koeman.png","Lewa.png","MESSI.png","Nedved.png","Neuer.png","Neymar.png","Reus.png","Stoichkov.png","Totti.png","Vidic.png"]
find = random.randint(0,len(images)-1)
def erreur():
global erreurs
erreurs=erreurs+1
return erreurs
def bonne_reponse():
global bonne_reponses
bonne_reponses=bonne_reponses+1
return bonne_reponses
input_active = True
run = True
while run:
fenetre.blit(BACKGROUND, [0, 0])
TPImage = pygame.image.load("IMAGES/" + images[find])
fenetre.blit(TPImage, TPImage.get_rect(center = (640,260)))
clock.tick(25)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == pygame.KEYDOWN and input_active:
if event.key == pygame.K_RETURN:
if entree.lower() != joueurs[find].lower():
erreur()
if erreurs >= 5:
input_active = False
entree = ""
pygame.display.flip()

else:
entree = ""
bonne_reponse()
find = random.randint(0,len(images)-1)
elif event.key == pygame.K_BACKSPACE:
entree =  entree[:-1]
else:
entree += event.unicode
print(entree)


texte = font.render('Qui est ce joueur ?', True, (255, 255, 255))
text_surf = font.render(entree, True, (181, 195, 199))
text_reponse = font.render("Valides : " + str(bonne_reponses), True, (99, 247, 141))
text_erreur = font.render("Erreurs : " + str(erreurs), True, (245, 73, 73))
fenetre.blit(text_reponse, (50,10))
fenetre.blit(text_surf, text_surf.get_rect(center = (640,730)))
fenetre.blit(texte, texte.get_rect(center = (680,430)))
fenetre.blit(text_erreur, (1000,5))
pygame.display.flip()

pygame.exit()
exit()

重复random.randint,直到得到不同的结果:

while run:
# [...]
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == pygame.KEYDOWN and input_active:
if event.key == pygame.K_RETURN:
if entree.lower() != joueurs[find].lower():
# [...]
else:
entree = ""
bonne_reponse()
prev_find = find
while prev_find == find:
find = random.randint(0,len(images)-1)
# [...]

如果您只想设置一个随机顺序并只显示每个图像一次,请使用random.shuffle:

image_indices = random.shuffle(list(range(len(images))))
index = 0
find = image_indices[index]
while run:
# [...]
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == pygame.KEYDOWN and input_active:
if event.key == pygame.K_RETURN:
if entree.lower() != joueurs[find].lower():
# [...]

else:
entree = ""
bonne_reponse()
index += 1
if index >= len(images):
index = 0
find = image_indices[index]
# [...]

最新更新