Nattefrost
31/01/2014, 18h32
Salut les canards codeurs, bon voilà le background :
Après quelques années d'errements j'ai repris les études, des études de programmation (dans une école privée).
Mon premier semestre vient de s'achever, lors de ce premier semestre j'ai fait un projet (un jeu de dame 1contre1 jouable par browser) et le langage utilisé était nodeJS.
Ayant un mois de coupure je me suis dit que si je programmais pas du tout ça le ferait pas. Il fallait donc que je fasse quelque chose de mes dix doigts et de mes neurones, et pourquoi pas dans un langage que je connais pas mais qui est accessible.
Du coup j'ai jeté mon dévolu sur python, une fois les différences de syntaxe de base avec nodeJS passées j'me met a faire des petits programmes "à la con" avec l'interpreteur et IDLE.
Dans le cas qui nous intéresse j'ai voulu faire un poker aux dés (pourquoi pas, comme dans the witcher).
Mon problème est au niveau de la manière de faire pour relancer les bons dés. Du coup j'ai fait une méthode sale qui consiste à mettre chaque eventualité dans un else if mais j'me rend bien compte qu'il y a certainement mieux. Avez vous des idées ? J'vous met le code plus bas.
tl;dr Comment rendre mon code plus court quand le programme propose quel dé relancer ? Je sais faire un truc qui fonctionnera mais c'est pas joli-joli.
import random
print("Le but est de faire une combinaison de poker avec les dés")
userInput = input("Lancez les dés en appuyant sur n'importe quelle touche, q pour quitter... ")
if(userInput != "q"):
d0 = random.randint(1, 6) # PREMIER LANCER AVEC LES CINQ DES
d1 = random.randint(1, 6)
d2 = random.randint(1, 6)
d3 = random.randint(1, 6)
d4 = random.randint(1, 6)
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
stop = False
count = 0
while(stop != True):
reroll = input("Quel dé voulez vous relancer (d0 d1 d2 d3 d4) ? Maximum trois relances ")
if(count == 3):
print("""Vous avez relancé trois fois, voici ce que vous avez""")
break # SORTIE DE BOUCLE
if(reroll == "d0" or reroll == "D0"): # ON COUVRE CHAQUE CAS
d0 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
elif(reroll == "d1" or reroll == "D1"):
d1 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
elif(reroll == "d2" or reroll == "D2"):
d2 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
elif(reroll == "d3" or reroll == "D3"):
d3 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
elif(reroll == "d4" or reroll == "D4"):
d4 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
else:
stop = True
print("""------------Vous n'avez pas rentré un dé valide, fermeture du programme------------""")
else:
print("Au revoir")
Après quelques années d'errements j'ai repris les études, des études de programmation (dans une école privée).
Mon premier semestre vient de s'achever, lors de ce premier semestre j'ai fait un projet (un jeu de dame 1contre1 jouable par browser) et le langage utilisé était nodeJS.
Ayant un mois de coupure je me suis dit que si je programmais pas du tout ça le ferait pas. Il fallait donc que je fasse quelque chose de mes dix doigts et de mes neurones, et pourquoi pas dans un langage que je connais pas mais qui est accessible.
Du coup j'ai jeté mon dévolu sur python, une fois les différences de syntaxe de base avec nodeJS passées j'me met a faire des petits programmes "à la con" avec l'interpreteur et IDLE.
Dans le cas qui nous intéresse j'ai voulu faire un poker aux dés (pourquoi pas, comme dans the witcher).
Mon problème est au niveau de la manière de faire pour relancer les bons dés. Du coup j'ai fait une méthode sale qui consiste à mettre chaque eventualité dans un else if mais j'me rend bien compte qu'il y a certainement mieux. Avez vous des idées ? J'vous met le code plus bas.
tl;dr Comment rendre mon code plus court quand le programme propose quel dé relancer ? Je sais faire un truc qui fonctionnera mais c'est pas joli-joli.
import random
print("Le but est de faire une combinaison de poker avec les dés")
userInput = input("Lancez les dés en appuyant sur n'importe quelle touche, q pour quitter... ")
if(userInput != "q"):
d0 = random.randint(1, 6) # PREMIER LANCER AVEC LES CINQ DES
d1 = random.randint(1, 6)
d2 = random.randint(1, 6)
d3 = random.randint(1, 6)
d4 = random.randint(1, 6)
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
stop = False
count = 0
while(stop != True):
reroll = input("Quel dé voulez vous relancer (d0 d1 d2 d3 d4) ? Maximum trois relances ")
if(count == 3):
print("""Vous avez relancé trois fois, voici ce que vous avez""")
break # SORTIE DE BOUCLE
if(reroll == "d0" or reroll == "D0"): # ON COUVRE CHAQUE CAS
d0 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
elif(reroll == "d1" or reroll == "D1"):
d1 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
elif(reroll == "d2" or reroll == "D2"):
d2 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
elif(reroll == "d3" or reroll == "D3"):
d3 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
elif(reroll == "d4" or reroll == "D4"):
d4 = random.randint(1, 6)
count = count + 1
print("D0 :",d0,"--D1 :", d1,"--D2 :", d2,"--D3 :", d3,"--D4 :", d4)
else:
stop = True
print("""------------Vous n'avez pas rentré un dé valide, fermeture du programme------------""")
else:
print("Au revoir")