[英]Python "Dice Game"
我想创建一个简单的游戏,其中两个玩家“互相掷骰子”。 获胜者是连续三次获得一个数字的人。 我尝试了很多不同的方法,但最终我总是在评估中挣扎。 如何确定哪个玩家连续 3 次获得一个特定数字? 谢谢你的建议!
import random
#Initialisieren der Variablen
wurf1_1 = 0
wurf2_1 = 0
gewuerfelt_s1 = []
gewuerfelt_s2 = []
n = 1
while (True):
#Bestimmen der Augenzahlen des Würfels
wurf1_1 = random.randint(1,6)
wurf2_1 = random.randint(1,6)
print("Spiel " + str(n) + ":\tSpieler 1: " + str(wurf1_1) + "; Spieler 2: " + str(wurf2_1))
gewuerfelt_s1.append(wurf1_1)
gewuerfelt_s2.append(wurf2_1)
wurf1_2 = random.randint(1,6)
wurf2_2 = random.randint(1,6)
n += 1
print("Spiel " + str(n) + ":\tSpieler 1: " + str(wurf1_2) + "; Spieler 2: " + str(wurf2_2))
if (wurf1_2 == gewuerfelt_s1[0]):
gewuerfelt_s1.append(wurf1_2)
wurf1_3 = random.randint(1,6)
n += 1
print("Spiel " + str(n) + ":\tSpieler 1: " + str(wurf1_3) + "; Spieler 2: " + str(wurf2_2))
if wurf1_3 == gewuerfelt_s1[1]:
print("Spieler 1 hat dreimal hintereinander die Zahl", gewuerfelt_s1[1], "gewürfelt. Sieger!")
break
else:
del gewuerfelt_s1[:]
continue
else:
del gewuerfelt_s1[:]
continue
不要从列表中删除元素。 您可以通过从末尾开始索引来检查列表中最近添加的元素
列表的最后一个元素是:
my_list[-1]
倒数第二个是:
my_list[-2]
因此,对于第二次滚动后的每一次滚动,您可以检查:
my_list[-1] == my_list[-2] == my_list[-3]
(不能评论,低代表)
首先,制作一个模拟骰子的函数,它应该返回一个介于 [1,6] 之间的整数,并且应该使用容易获得的(伪)随机函数生成。 完成后,声明变量,continous1、continous2、prev1、prev2。 如果当前回合与该玩家的 prev 相同,则 prev 变量将存储该玩家的 prev 骰子角色答案,从而增加连续计数。 第一个达到 3 的就是你的答案。 使用while循环来模拟这一点。
这是代码
import random
continous1 = 0
continous2 = 0
prev1 = 0
prev2 = 0
while continous1 != 3 and continous2 != 3:
person1 = random.randint(1,6)
person2 = random.randint(1,6)
if person1 == prev1:
continous1 += 1
else:
continous1 = 0
if person2 == prev2:
continous2 += 1
else:
continous2 = 0
prev1 = person1
prev2 = person2
# Note that even if both persons win the game at the same time, the first person will be chosen as the winner
if continous1 == 3:
print("Person 1 won the game")
else:
print("Person 2 won the game")
检查这个伪代码
PlayGame()
{
bool gameover = false;
int turns ;
player1_values = []
player2_values = []
While(!gameover)
{
player1_values.Add(getrandon(1,6));
player2_values.Add(getrandon(1,6));
bool player1_won = Check(player1_values);
if(!player1_won && player1_values.Count == 3)
player1_values.Clear();
bool player2_won = Check(player2_values);
if(!player1_won && player2_values.Count == 3)
player2_values.Clear();
gameover = player1_won || player2_won;
}
}
Check(values)
{
if(values.Count < 3)
return false;
int num = values[0];
for(int i = 1;i<3;i++)
{
if(values[i] != num)
return false;
}
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.