国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python版的文曲星猜數字游戲代碼

2019-11-25 18:38:56
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

# -*- coding: utf-8 -*-

import random

#數字類
class NumberItem:

    #數字個數
    _GUESS_NUMBER_COUNT_ = 4

    def __init__(self):
        self._num_ = []

    #長度是否標準   
    def IsFormat(self):
        return self._num_.__len__() == self._GUESS_NUMBER_COUNT_

    #生成隨機數   
    def RestRandomNumber(self):
        allNum = range(10)
        for index in range(self._GUESS_NUMBER_COUNT_):
            self._num_.append(allNum.pop(random.randrange(10-index)))

    #校驗輸入數       
    def CheckNumber(self, input_number):
        result = NumberCheckResult()

        for index in range(self._GUESS_NUMBER_COUNT_):
            if (input_number._num_[index] == self._num_[index]):
                result.Add_A()
            elif(input_number._num_[index] in self._num_):
                result.Add_B()

        return result

    #返回字符串     
    def GetNumber(self):
        return self._num_

   
#競猜結果 xAxB   
class NumberCheckResult:
    def __init__(self):
        self._guess_A_ = 0
        self._guess_B_ = 0

    def GetCheckResult(self):
        return '%d A %d B' % (self._guess_A_, self._guess_B_)

    def Add_A(self):
        self._guess_A_ += 1

    def Add_B(self):
        self._guess_B_ += 1

   
#競猜歷史項   
class GuessHisItem:
    def __init__(self):
        self._guessNum_ = NumberItem()
        self._guessResult_ = NumberCheckResult()

    def ShowItem(self):
        print self._guessNum_.GetNumber() , ' - ' , self._guessResult_.GetCheckResult()

#游戲類
class GuessNumberGame():

    #機會次數
    _MAX_GUESS_TIMES_ = 8

    def __init__(self):
        self.ResetGameDate()

    #重置游戲數據   
    def ResetGameDate(self):
        self._guessNum_ = NumberItem()
        self._guessHis_ = []

    def GetGuessTimes(self):
        return self._guessHis_.__len__()

    #輸入字符串的格式轉換
    def ChangeInputNumberFormat(self, numberStr):
        parseNum = NumberItem()
        if (numberStr.isdigit()):
            for eachNum in numberStr:
                parseNum._num_.append(int(eachNum))

        return parseNum

   
    #打印競猜歷史
    def ShowGuessHis(self):
        print ''
        print '你已經猜了 %d次, 總共%d次機會' % (self.GetGuessTimes(), self._MAX_GUESS_TIMES_)
        print ''

        for eachItem in self._guessHis_:
            eachItem.ShowItem()
        print ''

    def ShowHelp(self):
        print ''
        print '輸入 /'help/' 顯示命令列表.'
        print '輸入 /'his/' 顯示競猜歷史'
        print '輸入 /'cheat/' 顯示作弊結果'
        print '輸入 /'quit/' 結束游戲'
        print ''

    def ShowCheat(self):
        print ''
        print '要猜的數字是 ', self._guessNum_.GetNumber()
        print ''

       
    def StartOneGame(self):

        self.ResetGameDate()

        print '開始猜數字游戲!'

        self._guessNum_.RestRandomNumber()

        print '隨機號碼 [*' + ',*'*(self._guessNum_._GUESS_NUMBER_COUNT_-1) + ']已經生成,你有%d次機會!' % self._MAX_GUESS_TIMES_

        #猜中標志
        guess_result = False
        quit_flag = False

        while (self.GetGuessTimes() < self._MAX_GUESS_TIMES_
               and guess_result != True and quit_flag != True):

            print '你還剩%d次機會,輸入你猜的數字:' % (self._MAX_GUESS_TIMES_- self.GetGuessTimes())
            input_str = raw_input();

            if (input_str == 'help'):
                self.ShowHelp()
            elif(input_str == 'his'):
                self.ShowGuessHis()
            elif(input_str == 'cheat'):
                self.ShowCheat()
            elif(input_str == 'quit'):
                quit_flag = True
            else:
                #轉換輸入并校驗
                hisItem = GuessHisItem()

                hisItem._guessNum_ = self.ChangeInputNumberFormat(input_str)
                if (hisItem._guessNum_.IsFormat() != True):
                    print '數字格式錯誤, 重新輸入!'
                else:

                    #競猜歷史
                    hisItem._guessResult_ = self._guessNum_.CheckNumber(hisItem._guessNum_)
                    self._guessHis_.append(hisItem)

                    hisItem.ShowItem()

                    #猜中
                    if (hisItem._guessResult_._guess_A_ == NumberItem._GUESS_NUMBER_COUNT_):
                        guess_result = True
                        print '恭喜,你猜中了數字' , self._guessNum_.GetNumber() , ' 用了%d次機會' % self.GetGuessTimes()
                    elif(self.GetGuessTimes() == self._MAX_GUESS_TIMES_ ):
                        print ''
                        print '挑戰失敗,你已經猜了%d次,' % self.GetGuessTimes(), '正確的數字是', self._guessNum_.GetNumber()

        return quit_flag
                       

    def StartGame(self):
        quit_flag = False
        while(quit_flag != True):

            quit_flag = self.StartOneGame()

            if (quit_flag != True):
                print ''
                print '再玩一局?(Y/N)'
                input_str = raw_input();

                if (input_str != 'Y'):
                    quit_flag = True

        print '再見!'

       
###### MAIN #######

if __name__ == '__main__':

    game = GuessNumberGame()
    game.StartGame()       

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 牙克石市| 顺义区| 腾冲县| 义乌市| 涞源县| 温泉县| 准格尔旗| 同心县| 巴彦淖尔市| 彭泽县| 安多县| 潞城市| 金寨县| 衢州市| 潮州市| 徐州市| 财经| 合阳县| 开化县| 大兴区| 栖霞市| 阳曲县| 盐边县| 南平市| 三台县| 和政县| 绵竹市| 剑河县| 苍南县| 河源市| 噶尔县| 大邑县| 周宁县| 武邑县| 陵水| 永州市| 东乌珠穆沁旗| 略阳县| 石柱| 平安县| 巴彦淖尔市|