ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python学习demo01 创建牌->洗牌->发牌->整理牌

2021-12-18 15:02:42  阅读:181  来源: 互联网

标签:10 Python self player demo01 ---------------------------------------------------


"""
启动后输入玩家数量和扑克牌副数,创建牌->洗牌->发牌->整理牌
"""

import random

puke = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2']
pukeType = ['♠', '♥', '♣', '♦']

class Puke:
    def __init__(self, player: int, count: int):
        self.player = player
        self.count = count
        self.puke = []
        self.player_pk = []
        self.create_puke()
        self.xi_pai()
        self.fa_pai()
        self.sorted_pk()

    # 生成牌
    def create_puke(self):
        print('-------------------------------开始生成扑克----------------------------')
        for i in range(0, self.count):
            print('正在生成第%d副扑克' % (i + 1))
            for j in range(0, len(pukeType)):
                for k in range(0, len(puke)):
                    self.puke.append(str(j) + str(k))
        print('生成扑克完成,共%d' % len(self.puke))
        self.print_pk('生成的扑克:', self.puke)

    # 洗牌
    def xi_pai(self):
        random.shuffle(self.puke)
        self.print_pk('洗牌后的扑克:', self.puke)

    # 发牌
    def fa_pai(self):
        # 创建玩家位置
        for i in range(0, self.player):
            self.player_pk.append([])

        print('开始发牌')
        for index, pk in enumerate(self.puke):
            self.player_pk[index % self.player].append(pk)

        for i in range(0, self.player):
            self.print_pk("第%d手上的牌" % (i + 1), self.player_pk[i])
            print("第%d手上的有%d张牌" % (i + 1, len(self.player_pk[i])))
        print('--------------------------------发牌结束-------------------------------')

    # 整理玩家手上的牌
    def sorted_pk(self):
        print('--------------------------------开始整理玩家手上的牌-------------------------------')
        for i in range(0, self.player):
            self.print_pk("整理前第%d手上的牌" % (i + 1), self.player_pk[i])
            self.player_pk[i].sort(key=lambda elem: int(elem[1:]))
            self.print_pk("整理后第%d手上的牌" % (i + 1), self.player_pk[i])
        print('--------------------------------整理牌完成-------------------------------')


    # 打印类
    def print_pk(self, hint: str, lists: list):
        print('-------------------------------------------------------------')
        print(hint)
        for index, value in enumerate(lists):
            # 使用类似java的三目运算  true的结果 if 条件 else false结果
            print(str(pukeType[int(value[0: 1])]) + str(puke[int(value[1:])]),
                  end=('' if index != len(lists) - 1 else '\r\n'))

测试调用代码

from Puke import Puke

if __name__ == '__main__':
    print('---------------------Welcome!!---------------------')
    try:
        player = int(input('请输入玩家数:'))
        count = int(input('请输入使用几副扑克:'))
    except ValueError:
        print('---------------------自动退出,请输入正确的数字!!!----------------------')
        exit()
    # print('player:' + player + "" + count)
    print('欢迎%d位玩家,共%d副扑克。' % (player, count))
    puke = Puke(player, count)

输出结果:


---------------------Welcome!!---------------------
请输入玩家数:4
请输入使用几副扑克:1
欢迎4位玩家,共1副扑克。
-------------------------------开始生成扑克----------------------------
正在生成第1副扑克
生成扑克完成,共52
-------------------------------------------------------------
生成的扑克:
♠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
-------------------------------------------------------------
洗牌后的扑克:
♦10♣J♥9♣4♠5♣5♥Q♠A♥A♣10♠7♠4♦A♠8♠Q♣Q♥8♦7♣3♣9♠2♦K♥2♦2♦6♠3♠K♠10♣8♠9♥10♣K♥4♦3♠6♥5♥K♦4♦9♣A♦J♣6♥6♣2♥J♣7♥3♦8♠J♦Q♦5♥7
开始发牌
-------------------------------------------------------------
第1手上的牌
♦10♠5♥A♦A♥8♠2♦6♣8♥4♥K♦J♥J♠J
第1手上的有13张牌
-------------------------------------------------------------
第2手上的牌
♣J♣5♣10♠8♦7♦K♠3♠9♦3♦4♣6♣7♦Q
第2手上的有13张牌
-------------------------------------------------------------
第3手上的牌
♥9♥Q♠7♠Q♣3♥2♠K♥10♠6♦9♥6♥3♦5
第3手上的有13张牌
-------------------------------------------------------------
第4手上的牌
♣4♠A♠4♣Q♣9♦2♠10♣K♥5♣A♣2♦8♥7
第4手上的有13张牌
--------------------------------发牌结束-------------------------------
--------------------------------开始整理玩家手上的牌-------------------------------
-------------------------------------------------------------
整理前第1手上的牌
♦10♠5♥A♦A♥8♠2♦6♣8♥4♥K♦J♥J♠J
-------------------------------------------------------------
整理后第1手上的牌
♥4♠5♦6♥8♣8♦10♦J♥J♠J♥K♥A♦A♠2
-------------------------------------------------------------
整理前第2手上的牌
♣J♣5♣10♠8♦7♦K♠3♠9♦3♦4♣6♣7♦Q
-------------------------------------------------------------
整理后第2手上的牌
♠3♦3♦4♣5♣6♦7♣7♠8♠9♣10♣J♦Q♦K
-------------------------------------------------------------
整理前第3手上的牌
♥9♥Q♠7♠Q♣3♥2♠K♥10♠6♦9♥6♥3♦5
-------------------------------------------------------------
整理后第3手上的牌
♣3♥3♦5♠6♥6♠7♥9♦9♥10♥Q♠Q♠K♥2
-------------------------------------------------------------
整理前第4手上的牌
♣4♠A♠4♣Q♣9♦2♠10♣K♥5♣A♣2♦8♥7
-------------------------------------------------------------
整理后第4手上的牌
♣4♠4♥5♥7♦8♣9♠10♣Q♣K♠A♣A♦2♣2
--------------------------------整理牌完成-------------------------------

Process finished with exit code 0
 

标签:10,Python,self,player,demo01,---------------------------------------------------
来源: https://blog.csdn.net/xiaoyi848699/article/details/122012302

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有