手机
当前位置:查字典教程网 >脚本专栏 >python >Python版的文曲星猜数字游戏代码
Python版的文曲星猜数字游戏代码
摘要:复制代码代码如下:#-*-coding:utf-8-*-importrandom#数字类classNumberItem:#数字个数_GUES...

复制代码 代码如下:

# -*- 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()

【Python版的文曲星猜数字游戏代码】相关文章:

Python MD5文件生成码

python登录QQ邮箱发信的实现代码

Python 文件重命名工具代码

python的id()函数介绍

Python 初始化多维数组代码

python 字符串格式化代码

Python 文件操作实现代码

用python实现的去除win下文本文件头部BOM的代码

python 数据加密代码

python远程登录代码

精品推荐
分类导航