【发布时间】:2022-01-17 22:32:35
【问题描述】:
我目前正在用 Python 做一个学生项目。
游戏本身:
-
用户选择想玩的玩家人数(最少1人)
-
用户为每个玩家分配一定数量的代币(就像一个生命系统)
-
然后,第一个玩家将从 1 到 6 “掷”3 个骰子。
-
计算 3 个骰子的总分,然后我们询问玩家是否想再次掷 1、2 或 3 个骰子。 (目标是尽可能接近或等于 21)。
-
可以连续掷几次骰子。 (其他投掷计入总数)
-
如果玩家的总分高于 21,则玩家将失去一个代币。
-
玩家可以通过指示 0 来停止轮到。
循环通过将手传递给第二个玩家来完成其工作。
当玩家完成比赛后,我们会查看比分。 21 或最接近的玩家在这一轮获胜,其他玩家必须给“银行”一个代币。 (所以超过 21 的玩家本轮将自动失去 2 个代币)。
当只剩下一名玩家的令牌时,游戏停止。
我的问题
我看不出如何在变量中存储玩家的总分和他们各自的代币。由于用户决定了玩家的数量,我无法预测变量。
我的代码
#Programme : Blackjack
#Auteur : Antoine Bauduffe MP
#Import
from random import randrange
#Variable(s) :
verifJoueur = False;
verifJeton = False;
verifRelance = False;
i = 1;
n = 1;
y = 1;
relance = 1;
scoreTotal = 0;
DN = 0;
ScoreJoueur = [];
#Interface :
print("\n");
print("<------------------------------------------------------------------->");
print("<---------------------------- BLACKJACK ---------------------------->");
print("<------------------------------------------------------------------->");
#Boucle demandant le nombre de joueur
while verifJoueur == False:
try:
nbJoueur = int(input("Veuillez indiquer le nombre de joueur : "));
int(nbJoueur);
if nbJoueur >= 1:
verifJoueur = True;
else:
print("\n")
print("[Un joueur est requis pour lancer une partie !]")
except ValueError:
print("\n")
print("[Indiquer un nombre de joueur correct !]");
#Boucle demandant le nombre de jeton par joueur
while verifJeton == False:
try:
nbJetonsParJoueur = int(input("Veuillez indiquer le nombre de jeton par joueur (Pas plus de 10) : "));
int(nbJetonsParJoueur);
if nbJetonsParJoueur >= 1 and nbJetonsParJoueur <= 10:
verifJeton = True;
else:
print("\n")
print("[Les joueurs ne peuvent pas avoir moins de 1 jeton ni plus de 10 jetons !]")
except ValueError:
print("\n")
print("[Indiquer un nombre de jeton correct !]");
#Résumé des paramètres
print("\n");
print("<------------------------------------------------------------------->");
print("Lancement d'une partie pour " + str(nbJoueur) + " joueur(s), possedant chacun " + str(nbJetonsParJoueur) + " jeton(s).");
print("<------------------------------------------------------------------->");
print("\n")
#Boucle des joueurs
while i <= nbJoueur:
print("<----------------------- Tour du joueur " + str(i) + " : ------------------------>");
print(str(n) + "°) Lancement de dés : ");
for x in range(0, 3):
DN = randrange(1, 7);
print("--> " + str(DN));
scoreTotal = scoreTotal + DN;
print("Total : " + str(scoreTotal));
#Boucle qui vérifié les relances ou non
while verifRelance == False:
try:
if scoreTotal > 21:
verifRelance = True;
print('\n')
print("<------------------------------------------------------------------->");
print("Votre score dépasse 21 ! Vous perdez un jeton !")
print("<------------------------------------------------------------------->");
print('\n');
print("<---------------- Fin du tour pour le joueur " + str(i) + " ---------------->");
print("<---------------- Score du joueur " + str(i) + " : " + str(scoreTotal) + " ---------------->");
print("\n");
break;
else:
relance = int(input("Relancer ? Indiquer le nombre de dés à relancer [0 pour ne pas relancer] : "));
int(relance);
if relance >= 0 and relance <= 3:
if relance == 0:
verifRelance = True;
print('\n');
print("<---------------- Fin du tour pour le joueur " + str(i) + " ---------------->");
print("<---------------- Score du joueur " + str(i) + " : " + str(scoreTotal) + " ---------------->");
print("\n");
break;
if relance == 1:
print("\n");
n = n + 1;
print(str(n) + "°) Lancement de dés : ");
DN = randrange(1, 7);
print("--> " + str(DN));
scoreTotal = scoreTotal + DN;
print("Total : " + str(scoreTotal));
if relance == 2:
print("\n");
n = n + 1;
print(str(n) + "°) Lancement de dés : ");
for x in range(0, 2):
DN = randrange(1, 7);
print("--> " + str(DN));
scoreTotal = scoreTotal + DN;
print("Total : " + str(scoreTotal));
if relance == 3:
print("\n");
n = n + 1;
print(str(n) + "°) Lancement de dés : ");
for x in range(0, 3):
DN = randrange(1, 7);
print("--> " + str(DN));
scoreTotal = scoreTotal + DN;
print("Total : " + str(scoreTotal));
else:
print("\n")
print("[Indiquer un nombre compris entre [0 - 3] !]")
except ValueError:
print("\n")
print("[Indiquer un nombre de dés valide !]");
# Réinitialisation pour le joueur suivant
n = 1
verifRelance = False;
scoreTotal = 0
i = i + 1;
#Résultat de la manche
print("\n");
print("<------------------------------------------------------------------->");
print("Chaque joueur à terminé son tour ...")
print("Voyons qui gagne cette manche !")
print("<------------------------------------------------------------------->");
如您所见,在我的代码中,我根本不管理令牌和总分,但有程序的一般方面。
提前感谢您的帮助。
【问题讨论】:
-
考虑使用玩家字典,您可以在其中动态添加任意数量的玩家并存储他们的相关信息。
-
感谢您的回复!好的,我会这样看,从未使用过,但它似乎确实能够解决我的问题。 (也感谢 Skully 编辑我的问题)