您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Python版的文曲星猜数字游戏代码

2024/3/30 0:40:02发布20次查看
复制代码 代码如下:
# -*- 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()                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()
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product