如何解决如何防止我的程序连续两次向我显示相同的图像? 主要
我是 pygame 的新手,我基本上是在创建一个问答游戏,你必须在其中猜测,只需看看他们的脸,他们的名字。问题是同一个玩家可以连续出现两次,我不知道如何阻止它。如果需要,这是我的程序。任何帮助表示赞赏。谢谢!
导入pygame、随机、时间
主要
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,(181,195,199))
text_reponse = font.render("Valides : " + str(bonne_reponses),(99,247,141))
text_erreur = font.render("Erreurs : " + str(erreurs),(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]
# [...]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。