我正在帮助我的前任老师,并且需要有关此代码的帮助。我正在编写一个制作30张独特卡片的python程序。 10是红色,10是黑色,10是黄色。我只在代码中使用了红色,以便于调试。我需要使它们具有我认为可以正常工作的功能,但随后我需要分发它们并在末尾显示它们,但是玩家的手不能彼此相同,并且自己的手不能重复(就像您在游戏中那样)的实际版本)。所以我需要设置一个检查系统。我真的找不到问题,不胜感激,因为这很容易解决,或者超出了我自己的范围。感谢您的阅读。
P.S 我知道每个人都有两只牌手,但这是在牌手赢得一场比赛时增加的,所以我可以比较谁拥有最多的牌以及最终得到的牌。
我尝试使用不同的循环对其进行更改,并用伪代码编写它并进行比较,但不知道发生了什么。
{import sys, random, time
this = sys.modules[__name__]
def redCardGen():
for i in range(0,11, 1):
setattr(this, 'R%s' % i, 'Red Card %s' % i)
def blackCardGen():
for i in range(0,11, 1):
setattr(this, 'B%s' % i, 'Black Card %s' % i)
def yellowCardGen():
for i in range(0,11, 1):
setattr(this, 'Y%s' % i, 'Yellow Card %s' % i)
redCardGen()
blackCardGen()
yellowCardGen()
breaker = 0
player1Hand = []
player2Hand = []
WinnnerDeck = []
WinnerDeck2 = []
Red = [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10]
play = input("Would you like to play the game?: ")
if(play == "yes"):
print("Okay, then lets play!")
else:
exit()
for i in range(0,6, 1):
player1Hand.append(random.choice(Red))
player2Hand.append(random.choice(Red))
breaker1 = 0
while(breaker1 == 0):
if (player1Hand != 5):
player1Hand.append(random.choice(Red))
player2Hand.append(random.choice(Red))
elif ((len(set(player1Hand))==1) and (len(set(player2Hand))==1)):
player1Hand.pop()
player2Hand.pop()
player1Hand.append(random.choice(Red))
player2Hand.append(random.choice(Red))
elif ((len(set(player1Hand and player2Hand)) == 1)):
player1Hand.pop()
player2Hand.pop()
player1Hand.append(random.choice(Red))
player2Hand.append(random.choice(Red))
else:
breaker1 = 1
print(player1Hand)
print(player2Hand)}
没有错误,所以我认为这不是语法问题,而是逻辑错误。 我的预期结果是有两只随机拿牌的玩家牌,但没有一张是一样的。
答案 0 :(得分:1)
使用random.shuffle()分配卡片的示例:
import random
deck = ["R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "R10"]
random.shuffle(deck)
player1_hand = deck[:5]
player2_hand = deck[5:10]
print(player1_hand)
print(player2_hand)
返回:
['R4', 'R2', 'R10', 'R5', 'R1']
['R7', 'R8', 'R9', 'R3', 'R6']
答案 1 :(得分:0)
如果要模拟一副纸牌,最好有一个代表它的列表,以便可以对其进行洗牌并使用从顶部绘制纸牌(并将其删除)的功能:>
import random
cardDeck = [C+str(n+1) for C in "RBY" for n in range(10)]
player1Hand = []
player2Hand = []
# deal cards
random.shuffle(cardDeck)
for _ in range(5):
player1Hand.append(cardDeck.pop())
player2Hand.append(cardDeck.pop())
print(player1Hand) # ['Y3', 'B10', 'Y5', 'R2', 'Y8']
print(player2Hand) # ['Y10', 'B6', 'Y1', 'R9', 'R7']
这种方法将使从卡组中抽出更多卡片变得更加容易,而不必担心重复。