在Python 3中钓鱼
下一个问题 因此,我有一个学生,他正在用Python 3开发一个自娱自乐的围捕游戏,他在抽牌方面遇到了问题。问题是,程序按顺序给每个玩家发相同的牌,即:玩家1得到4张黑桃,2张钻石,8张红桃,等等,玩家2得到相同,玩家3得到相同,等等 我们不确定如何让它在每次抽签时,针对每个玩家,重新循环代码的随机部分 谢谢! 首先是甲板模块,其次是游戏代码在Python 3中钓鱼,python,python-3.x,Python,Python 3.x,下一个问题 因此,我有一个学生,他正在用Python 3开发一个自娱自乐的围捕游戏,他在抽牌方面遇到了问题。问题是,程序按顺序给每个玩家发相同的牌,即:玩家1得到4张黑桃,2张钻石,8张红桃,等等,玩家2得到相同,玩家3得到相同,等等 我们不确定如何让它在每次抽签时,针对每个玩家,重新循环代码的随机部分 谢谢! 首先是甲板模块,其次是游戏代码 import random def MakeDeck(): deck = [] c = 0 values = ["Ace", "
import random
def MakeDeck():
deck = []
c = 0
values = ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"]
suits = ["Hearts", "Spades", "Diamonds", "Clubs"]
for v in values:
for s in suits:
deck.append([v,s])
random.shuffle(deck)
return deck
现在,游戏代码
import deck, random, time
fish_deck = deck.MakeDeck()
#for i in fish_deck:
# print(i[0]+" of "+i[1])
class fisherman():
name = ""
hand = []
sets = []
def ask(player1, player2):
pause = random.randint(2,5)
has = []
choose = randint(0,len(player1.hand)-1)
value = player1.hand[choose][0]
for card in player2.hand:
if card[0] == value:
has.append(card)
for card in has:
player2.hand.remove(card)
for card in has:
player1.hand.append(card)
return_string = player1.name+" asked "+player2.name+" for "+value+"s. "
print(return_string)
return_string = player2.name+" had "+str(len(has))+". "
print(return_string)
if len(has) == 0:
draw(player1)
return_string = player1.name+" had to go fish."
print(return_string)
def draw(player):
card = fish_deck.pop()
player.hand.append(card)
def set_check(player):
amount = {}
for card in player.hand:
if card[0] not in amount.keys():
amount[card[0]] = 1
if card[0] in amount.keys():
amount[card[0]] += 1
for count in amount.keys():
if amount[count] == 4:
print(player.name+" got a set of "+count+"s.")
player.sets.append(count)
player.hand[:] = [card for card in player.hand if card[0] == count]
john = fisherman()
john.name = "John"
tim = fisherman()
tim.name = "Tim"
sara = fisherman()
sara.name = "Sara"
kris = fisherman()
kris.name = "Kris"
def play(player1, player2, player3, player4, deck):
turn = 0
size = 7
dealt = 0
order = [player1, player2, player3, player4]
random.shuffle(order)
while dealt < size:
draw(order[0])
draw(order[1])
draw(order[2])
draw(order[3])
dealt += 1
while len(deck) != 0:
for player in order:
count = 0
hand = player.name+"'s hand: "
for card in player.hand:
if count < len(player.hand)-1:
hand += card[0]+" of "+card[1]+", "
count += 1
elif count == len(player.hand)-1:
hand += card[0]+" of "+card[1]+"."
print(hand)
count = 0
sets = player.name+"'s sets: "
for set in player.sets:
if count < len(player.sets)-1:
sets += set+"s, "
elif count == len(player.sets)-1:
sets += set+"s."
print(sets)
other_player = turn
while other_player == turn:
other_player = random.randint(0,3)
ask(order[turn], order[other_player])
set_check(order[turn])
if turn >= 3:
turn = 0
else:
turn += 1
time.sleep(10)
print("=========================================")
play(john, tim, sara, kris, fish_deck)
导入组,随机,时间
fish_deck=deck.MakeDeck()
#对于在fish_甲板上的i:
#打印(“+i[1]”中的i[0]+“)
类fisherman():
name=“”
手=[]
集合=[]
def ask(播放器1、播放器2):
pause=random.randint(2,5)
has=[]
choose=randint(0,len(player1.hand)-1)
value=player1.手动[选择][0]
对于player2.hand中的卡:
如果卡[0]==值:
has.append(卡片)
对于卡输入,有:
玩家2。手。移除(卡片)
对于卡输入,有:
玩家1.手牌.附加(卡片)
return_string=player1.name+“ask”+player2.name+“for”+value+“s”
打印(返回字符串)
return_string=player2.name+“had”+str(len(has))+”
打印(返回字符串)
如果len(has)==0:
抽签(球员1)
return\u string=player1.name+“不得不去钓鱼。”
打印(返回字符串)
def抽签(球员):
card=fish_deck.pop()
玩家.手牌.附加(牌)
def设置检查(播放器):
金额={}
对于player.hand中的卡:
如果卡[0]的金额不正确。密钥()
金额[卡[0]]=1
如果卡[0]的金额为.keys():
金额[卡[0]]+=1
对于数量计数。键():
如果金额[计数]==4:
打印(player.name+“获得了一组”+count+“s.”)
player.set.append(计数)
牌手[:]=[牌手中的牌对应牌手。牌手如果牌[0]==计数]
约翰=渔夫
john.name=“john”
蒂姆=渔夫()
tim.name=“tim”
莎拉=渔夫()
sara.name=“sara”
克里斯=渔夫()
kris.name=“kris”
def播放(播放者1、播放者2、播放者3、播放者4、甲板):
转动=0
尺寸=7
处理=0
顺序=[player1,player2,player3,player4]
随机。洗牌(顺序)
虽然尺寸较小,但:
绘图(顺序[0])
抽签(订单[1])
抽签(订单[2])
抽签(订单[3])
处理+=1
而len(甲板)!=0:
对于玩家顺序:
计数=0
手牌=玩家。姓名+““的手牌:”
对于player.hand中的卡:
如果计数=3:
转动=0
其他:
转弯+=1
时间。睡眠(10)
打印(“=======================================================”)
游戏(约翰、蒂姆、萨拉、克里斯、鱼)
所有fisherman
实例将共享相同的hand
引用,因为这些变量是类变量。如果希望它们是单个实例变量,请在\uuuu init\uuu
方法中创建它们
class fisherman():
def __init__(self):
self.name = ""
self.hand = []
self.sets = []
所有fisherman
实例将共享相同的hand
引用,因为这些变量是类变量。如果希望它们是单个实例变量,请在\uuuu init\uuu
方法中创建它们
class fisherman():
def __init__(self):
self.name = ""
self.hand = []
self.sets = []
所有fisherman
实例将共享相同的hand
引用,因为这些变量是类变量。如果希望它们是单个实例变量,请在\uuuu init\uuu
方法中创建它们
class fisherman():
def __init__(self):
self.name = ""
self.hand = []
self.sets = []
所有fisherman
实例将共享相同的hand
引用,因为这些变量是类变量。如果希望它们是单个实例变量,请在\uuuu init\uuu
方法中创建它们
class fisherman():
def __init__(self):
self.name = ""
self.hand = []
self.sets = []
与其发布整个代码,不如只发布解决问题所需的最低金额。与其发布整个代码,不如只发布解决问题所需的最低金额。与其发布整个代码,你应该试着只发布解决问题所需的最小数量。而不是发布整个代码,你应该试着只发布解决问题所需的最小数量。dang我的答案几乎相同。。。快一分钟+1和我的答案几乎一样。。。快一分钟+1和我的答案几乎一样。。。快一分钟+1和我的答案几乎一样。。。再快一分钟+1