首页 > 其他分享 >记牌器

记牌器

时间:2024-05-23 13:07:36浏览次数:8  
标签:__ self face range import suite 记牌器

游戏规则

统计每位玩家出过的牌况,从而大概估计一下可能的赢面

代码实现

首先把这个规则用代码写出来
1.一共分花色和牌面,有54张牌
2.每次都进行记录,并加和
再在它基础上进行简单的可视化(主要是利用Easygui的界面)

g.ccbox()#选择框
g.msgbox()#提醒框

最后查缺补漏,看看有没有什么Bug
1.能够随时退出游戏
2.可以累计

利用pyinstaller -F -w -i xx.ico cal.py命令打包成exe文件

import easygui as g
import tkinter as tk
from enum import Enum
from tabulate import tabulate
import random
class Suite (Enum):#继承类
    SPADE,HEART,CLUN,DIAMOND=range(4)#定义符号常量0-3
#for i in Suite:
#    print(f'{i}:{i.value}')
suites='♠♥♣♦'#表示不同的花色
faces=['0','A','2','3','4','5','6','7','8','9','10','J','Q','K','\n']#牌面
num=[[0 for i in range(15) ] for j in range(5)]  
class card:
    def __init__(self,suite,face):
        self.suite=suite
        self.face=face
    def __repr__(self):
        return f'{suites[self.suite]}{faces[self.face]}'
    def __lt__(self,other):
        if self.face==other.face:
            return self.suite<other.suite
        return self.face<other.face
class cal:
    def __init__(self):
        self.cards=[]
    def cal(self,card):
        self.cards.append(card)
        print(card)
        num[card.suite][card.face]=1
        num[4][card.face]+=1
    def out(self):
        for i in range(5):
            for j in range(14):
                print(num[i][j],end=' ')
            print()
        return num
state=1
flag=0
while state==1 and flag!=2:
    cards=cal()
    num=[[0 for i in range(15) ] for j in range(5)] 
    state=g.ccbox('欢迎进入记牌器,轻而易举赢牌',choices=('开始记牌','结束记牌'))
    flag=0
    while state==1 and flag==0:
        suite=g.indexbox('记牌','loading',['♠','♥','♣','♦'])
        face=g.indexbox('记牌','loading',['0','A','2','3','4','5','6','7','8','9','10','J','Q','K'])
        cards.cal(card(suite,face))
        str1=''
        for i in range(5):
            for j in range(0,14):
                str1+=str(num[i][j])
                str1+=' '
                if(j==10):str1+=' '
            if i !=4:str1+=suites[i]
            str1+='\n'
        g.msgbox(' '.join(faces)+str1+' '.join(faces))
        flag=g.indexbox('局势','loading',['继续游戏','重新开始','结束记牌'])

标签:__,self,face,range,import,suite,记牌器
From: https://www.cnblogs.com/Aaryn/p/18208130

相关文章