Example #1
0
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