# -*- coding: utf-8 -*-
#此版本,于2018年12月9日
#游戏类
class Game:
#一般游戏进程,从读取存档开始
def Process(self):
#初始回合数为0
self.rounds = 0
#初始Continue标记为True
self.Continue = True
#读取游戏
self.Read(self)
#当Continue标记为True时循环进行游戏
while self.Continue:
#创建一个玩家集合
self.player_set = set()
#初始化扑克牌
self.Card.InitCard(self)
#每轮的开始都将重置每名玩家的部分信息
for i in range(self.player_amount):
self.player_set.add(i)
self.player_list[i].banker = False
self.player_list[i].want = True
self.player_list[i].inboom = True
self.player_list[i].bet = 0
#下面两句是加牌操作,每名玩家1张
self.player_list[i].hand = [self.cards[0]]
del self.cards[0]
#进入叫庄环节
self.Banker(self,self.player_amount,self.player_set)
#游戏进程,从零开始
def Start(self):
#初始化扑克牌
self.Card.InitCard(self)
#初始化玩家
self.PlayerInit(self)
#牌点计算器,用于在创建扑克牌对象时提供每张牌的点数
#输入参数:{牌号}
def Calculate(rank):
#字典,数据来源
dictionary = {"A":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"J":0.5,"Q":0.5,"K":0.5}
#约定点数并返回
value = dictionary[rank]
return value
#玩家初始化
def PlayerInit(self):
while True:
try:
#输入玩家数量
self.player_amount = int(input(">>>欢迎来到全新的十点半Lite!\n>>>请您设定玩家数量,最低2人,最高4人:"))
#当玩家数量正确时执行子程序
if self.player_amount in (2,3,4):
self.__PlayerInit(self,self.player_amount)
break
#否则提示错误
else:
print("\n>>>不支持该数量的玩家哟,换个数试试吧!<<
#输入非数字时报错
except:
print("\n>>>系统监测到了错误,但是系统不知道怎么解决")
#玩家初始化子程序
#输入参数:{玩家数量}
def __PlayerInit(self,player_amount):
#创建空列表,用于放置玩家名
player_name = []
print("\n>>>本局游戏共有{}名玩家~!<<
#输入玩家名并添加到列表
for i in range(self.player_amount):
player_name.append(input("您好,{}号玩家!\n-请输入您的大名:".format(i + 1)))
#初始化游戏
self.InitGame(self,player_name,self.player_amount,2)
#初始化游戏,有三种初始化方法
#输入参数:{玩家名称列表,玩家数量,初始化方式}
def InitGame(self,player_name,player_amount,Action):
#Action参数小于3时执行游戏初始化
if Action < 3:
#创建玩家列表,玩家集合
self.player_list = []
self.player_set = set()
#给每位玩家添加初始数据
for i in range(self.player_amount):
self.player_list.append(self.Players(i,player_name[i],[self.cards[0]],False,True,True,0,100,0))
self.player_set.add(i)
#因为中间涉及到了发牌,所以要从牌堆删除发给玩家的牌
del self.cards[0]
#若Action等于2追加执行,进入叫庄环节
if Action == 2:
self.Banker(self,self.player_amount,self.player_set)
#Action参数等于3时不进行初始化,直接进入叫庄环节(成功读取到游戏数据)
if Action == 3:
self.Banker(self,self.player_amount,self.player_set)
#叫庄环节
#输入参数:{玩家数量,玩家集合}
def Banker(self,player_amount,player_set):
#进入叫庄意味着游戏正式开始,回合数将加1
self.rounds += 1