Cccf$ 发表于 2022-11-16 11:43:45

Python 课后作业-发牌-斗地主生成器

两次课后作业让我想要皮一下,
请大家想象一下小甲鱼,不二如是和鱼C小狮美三人一起斗地主的和谐场景,
嘿嘿~画面太美,
我从观摩中练习了字典使用和洗牌算法,掌握了sorted()key参数与lambda表达式的‘联动’
------斗👲地🎴主👲生🎴成👲器------
明牌:
♦3 ♦4 ♦5 ♦6 ♦7 ♦8 ♦9 ♦10 ♦J ♦Q ♦K ♦A ♦2
♥3 ♥4 ♥5 ♥6 ♥7 ♥8 ♥9 ♥10 ♥J ♥Q ♥K ♥A ♥2
♣3 ♣4 ♣5 ♣6 ♣7 ♣8 ♣9 ♣10 ♣J ♣Q ♣K ♣A ♣2
♠3 ♠4 ♠5 ♠6 ♠7 ♠8 ♠9 ♠10 ♠J ♠Q ♠K ♠A ♠2
🌙 ☀

打乱:
[['🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴'],
['🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴'],
['🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴', '🎴']]

地主牌: ['🎴', '🎴', '🎴']
请输入第一位游戏玩家名称:小甲鱼
请输入第二位游戏玩家名称:不二如是
请输入第三位游戏玩家名称:鱼C小狮美

【不二如是】叫地主

发牌<( ̄︶ ̄)↗
[小甲鱼]拿到的牌是:&#127769; ♥3 ♣8 ♠Q ♥8 ♠6 ♣2 ♦10 ♠9 ♥7 ♠7 ♦8 ♠K ♣9 ♠3 ♣3 ♠A

[不二如是]拿到的牌是:♥6 ♦6 ♠10 ♦Q ☀ ♣4 ♦4 ♣10 ♦7 ♣J ♣Q ♥Q ♦9 ♣7 ♠5 ♥J ♠4 ♦3 ♣6 ♦A

[鱼C小狮美]拿到的牌是:♥10 ♥5 ♥4 ♣A ♥2 ♥K ♦5 ♠2 ♥9 ♠8 ♣5 ♦J ♠J ♦K ♦2 ♥A ♣K

对&#127924;:
[小甲鱼]拿到的牌是:&#127769; ♣2 ♠A ♠K ♠Q ♦10 ♣9 ♠9 ♦8 ♥8 ♣8 ♠7 ♥7 ♠6 ♣3 ♠3 ♥3

[不二如是]拿到的牌是:☀ ♦A ♥Q ♣Q ♦Q ♥J ♣J ♣10 ♠10 ♦9 ♣7 ♦7 ♣6 ♦6 ♥6 ♠5 ♠4 ♦4 ♣4 ♦3

[鱼C小狮美]拿到的牌是:♦2 ♠2 ♥2 ♥A ♣A ♣K ♦K ♥K ♠J ♦J ♥10 ♥9 ♠8 ♣5 ♦5 ♥5 ♥4


源代码:
import random

cards = ["♦A", "♦2", "♦3", "♦4", "♦5", "♦6", "♦7", "♦8", "♦9", "♦10", "♦J", "♦Q", "♦K",
         "♥A", "♥2", "♥3", "♥4", "♥5", "♥6", "♥7", "♥8", "♥9", "♥10", "♥J", "♥Q", "♥K",
         "♣A", "♣2", "♣3", "♣4", "♣5", "♣6", "♣7", "♣8", "♣9", "♣10", "♣J", "♣Q", "♣K",
         "♠A", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7", "♠8", "♠9", "♠10", "♠J", "♠Q", "♠K",
         "☀", "&#127769;"]
cardsvalues = {"♦A":14, "♦2":15, "♦3":3, "♦4":4, "♦5":5, "♦6":6, "♦7":7, "♦8":8, "♦9":9, "♦10":10, "♦J":11, "♦Q":12, "♦K":13,
               "♥A":14, "♥2":15, "♥3":3, "♥4":4, "♥5":5, "♥6":6, "♥7":7, "♥8":8, "♥9":9, "♥10":10, "♥J":11, "♥Q":12, "♥K":13,
               "♣A":14, "♣2":15, "♣3":3, "♣4":4, "♣5":5, "♣6":6, "♣7":7, "♣8":8, "♣9":9, "♣10":10, "♣J":11, "♣Q":12, "♣K":13,
               "♠A":14, "♠2":15, "♠3":3, "♠4":4, "♠5":5, "♠6":6, "♠7":7, "♠8":8, "♠9":9, "♠10":10, "♠J":11, "♠Q":12, "♠K":13,
               "☀":17, "&#127769;":16}

def show_cards():
    print('------斗&#128114;地&#127924;主&#128114;生&#127924;成&#128114;器------')
    print('明牌:')
    all_cards = ["♦3", "♦4", "♦5", "♦6", "♦7", "♦8", "♦9", "♦10", "♦J", "♦Q", "♦K", "♦A", "♦2",
               "♥3", "♥4", "♥5", "♥6", "♥7", "♥8", "♥9", "♥10", "♥J", "♥Q", "♥K", "♥A", "♥2",
               "♣3", "♣4", "♣5", "♣6", "♣7", "♣8", "♣9", "♣10", "♣J", "♣Q", "♣K", "♣A", "♣2",
               "♠3", "♠4", "♠5", "♠6", "♠7", "♠8", "♠9", "♠10", "♠J", "♠Q", "♠K", "♠A", "♠2",
               "&#127769;", "☀"]

    all_cards = all_cards[::-1]

    for i in range(54):
      print(all_cards.pop(), end=' ')
      if (i+1) % 13 == 0:
            print()
    print()
    print('\n打乱:')
    print([['&#127924;']*17 for i in range(3)])
    print('\n地主牌:',['&#127924;' for i in range(3)])




def fy_shuffle(x, n=1):
    for i in range(n):
      target = list(x)
      result = []
      while target:
            r = random.randint(0, len(target)-1) # 步骤2
            result.append(target.pop(r)) # 步骤3

    return result

def dealCards():
    a = input("请输入第一位游戏玩家名称:")
    b = input("请输入第二位游戏玩家名称:")
    c = input("请输入第三位游戏玩家名称:")

    r = {}
    r, r, r = [], [], []

    new_cards = fy_shuffle(cards, 3)

    for i in range(17):
      r.append(new_cards.pop())
      r.append(new_cards.pop())
      r.append(new_cards.pop())

    d = random.sample((a, b, c), 1)
    print(f"\n【{d}】叫地主\n")
    print('发牌<( ̄︶ ̄)↗')
    r.extend((new_cards.pop(), new_cards.pop(), new_cards.pop()))

    print(f"[{a}]拿到的牌是:{' '.join(r)}\n")
    print(f"[{b}]拿到的牌是:{' '.join(r)}\n")
    print(f"[{c}]拿到的牌是:{' '.join(r)}")

    r = sorted(r,key=lambda x : cardsvalues)[::-1]
    r = sorted(r,key=lambda x : cardsvalues)[::-1]
    r = sorted(r,key=lambda x : cardsvalues)[::-1]

    print('\n对&#127924;:')
    print(f"[{a}]拿到的牌是:{' '.join(r)}\n")
    print(f"[{b}]拿到的牌是:{' '.join(r)}\n")
    print(f"[{c}]拿到的牌是:{' '.join(r)}")

show_cards()   
dealCards()



嘉岳呀 发表于 2022-11-16 11:58:41

建议用代码格式发代码

Cccf$ 发表于 2022-11-17 09:29:41

嘉岳呀 发表于 2022-11-16 11:58
建议用代码格式发代码

第一次发没经验{:10_285:}
页: [1]
查看完整版本: Python 课后作业-发牌-斗地主生成器