我正在为大学的Python课做一个实验室。 这些是说明。
“ 编写一个Python程序,该程序将模拟
卡
游戏。
在游戏中,每个都有两名玩家
10张卡面朝下。在每个回合中,每个玩家都将交出自己的最高牌。具有
该回合中最高的牌获胜,并且在该回合中所有玩过的牌。
赢得的卡是
添加到获胜者的
一堆纸牌。
有领带时
在回合中
,每个
玩家将
将他们的下一张卡片从堆中移到
确定该轮的获胜者。
如果玩家在比赛期间由于过多的联系而用完了纸牌
回合,玩家将获得新卡
直到确定该回合的赢家为止。
当玩家的纸牌用完时,游戏结束。游戏的赢家是仍然
游戏结束时还剩下纸牌。
一副纸牌可以用数字1表示
–
13,其中1是低A
,11是杰克,12是
女王,而13是国王。面部卡的数值为2到10。
适合
在这个游戏中没关系。
假设您正在撰写
游戏
2位玩家。使用整数变量来跟上
每个玩家手中的纸牌数量。镭
几乎不为每个生成卡值
轮换卡时玩家的手。
(即,请勿将它们存储在
时间在列表中。)
在本实验中,不必担心重复使用一轮赢得的卡值。代替
只是产生新的
每个回合中每个玩家的随机卡值。
确保输出每张纸牌的值以及每轮的赢家。如果
如果有平局,则输出应在回合中中继该事实。在游戏结束时,输出
获胜者,冠军
给玩家。“
我想大部分都已经弄清楚了。 但是,我找不到在while循环底部的领带。 它说要计算连续存在的平局数目,然后将所有这些卡发给最终的赢家,但我不确定如何。 当我运行这段代码时,它不断告诉我我有一个领带,并且是一个无限循环。 我只是想朝着正确的方向前进。
这是我的代码
import random
def main():
print("Welcome to the Game of War!")
p1_deck = 10
p2_deck = 10
while(p1_deck or p2_deck >0):
P1 = random.randrange(1,11)
P2 = random.randrange(1,11)
print("Player 1's card is", P1)
print("Player 2's card is", P2)
if(P1>P2):
print("Player 1 wins the round!")
p1_deck +=1
p2_deck -=1
print("Player 1's deck now has", p1_deck,"cards.")
print("Player 2's deck now has", p2_deck,"cards.")
elif(P2>P1):
print("Player 2 wins the round!")
p2_deck +=1
p1_deck -=1
print("Player 1's deck now has", p1_deck,"cards.")
print("Player 2's deck now has", p2_deck,"cards.")
else:
while(P1==P2):
print("It is a tie! To break the tie, another card must be turned over.")
if(p1_deck==0 and p2_deck==0):
p1_deck +=1
p2_deck +=1
P1 = random.randrange(1,11)
P2 = random.randrange(1,11)
print("Player 1's card is", P1)
print("Player 2's card is", P2)
if(P1>P2):
print("Player 1 wins the round!")
p1_deck +=1
p2_deck -=1
elif(P2>P1):
print("Player 2 wins the round!")
p2_deck +=1
p1_deck -=1
main()
答案 0 :(得分:0)
发生无限循环是因为P1
和P2
开始相等,但是您的条件语句解析为False
,所以P1
和P2
永远不会得到改变的机会。他们总是一样的。
尝试在内部print
循环之后添加while()
语句,以自己看看:
while(P1==P2):
print(f"P1: {P1}, P2: {P2}")
print(f"p1_deck: {p1_deck}, p2_deck: {p2_deck}")
#...
输出:
P1: 2, P2: 2
p1_deck: 10, p2_deck: 10
It is a tie! To break the tie, another card must be turned over.
# infinite loop...
考虑一下,即使您的P1
值不为零,也可能如何更新P2
和_deck
。或者,如果您期望_deck
的值为零,请关注为什么它们不为零。这足以使您在这里有一些动力。祝你好运!