class Turkey: '这是一只好斗的小火鸡' def __init__(self, name, options): self.name = name self.money = 0 self.lastwinMoney = 0 self.winCount = 0 self.playCount = 0 self.continuousLoss = 0 #投注策略用到 self.continuousWin = 0 #投注策略用到 self.originBetting = options.betting self.currentBetting = options.betting self.gameCount = options.gameCount self.odds = options.odds self.maxBetting = options.maxBetting self.totalNumber = options.totalNumber self.numberBetting = options.numberBetting self.probability = self.probabilityOfWinningEachPeriod() stime = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S-%f') self.datafile = DataFile(r"E:\Git\turkeyGame\var\sample-" + stime + "-" + str(name) + ".xlsx") #子类继承 def probabilityOfWinningEachPeriod(self): '每次中奖的概率:可由子类重写' return self.numberBetting / self.totalNumber def isWin(self): '本期是否中奖,随机获取' return random.randint(0, 100) < (self.probability * 100) #策略接口 def setStrategy(self, strategy): self.strategy = strategy #止盈止损接口 def setPlayer(self, player): self.player = player def earnMeneyOnePeriod(self): '本期是否赚钱。中则加钱,不中则扣钱' if self.isWin(): self.winCount = self.winCount + 1 self.continuousWin = self.continuousWin + 1 self.continuousLoss = 0 makeMoney = self.currentBetting * self.odds - self.currentBetting * self.numberBetting else: self.continuousLoss = self.continuousLoss + 1 self.continuousWin = 0 makeMoney = -(self.currentBetting * self.numberBetting) self.lastwinMoney = makeMoney self.playCount = self.playCount + 1 self.money = self.money + makeMoney def saveStateEachPeriod(self): '记录每局输赢' self.datafile.write2xlsx(numberPeriod=self.playCount, money=self.money, lastwinMoney=self.lastwinMoney, betting=self.currentBetting, probability=self.probability, cost=self.currentBetting * self.numberBetting) def startStrategy(self): '启用策略,当某几期之后,亏钱时,增大赌注,默认是翻倍;' self.strategy.doStrategy() def playGameEachPeriod(self): self.earnMeneyOnePeriod() self.saveStateEachPeriod() self.startStrategy() def cleanGame(self): self.datafile.save2xlsx() self.datafile.close def startGame(self): self.player.play() self.cleanGame() return self.money