# -*- 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版的文曲星猜数字游戏代码相关推荐

  1. python之穿越火线游戏代码_python开发的小球完全弹性碰撞游戏代码

    #python tkinter #python version 3.3.2 from tkinter import * ''' 判断 两个小球 { 圆心:A(x1,y1) 半径:r X轴速度:Vax ...

  2. python中用函数货币转换代码_python将人民币转换大写的脚本代码

    代码如下: def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( format_word.__len__() – ...

  3. python抢购火车票源代码_Python动刷新抢12306火车票的代码(附源码)

    摘要:这篇Python开发技术栏目下的"Python动刷新抢12306火车票的代码(附源码)",介绍的技术点是"12306火车票.Python.12306.附源码.火车票 ...

  4. python拍7游戏代码_Python基础语法-7(小游戏)

    代码太长?内容太复杂? 不用担心!往下看↓ 知道为什么python简洁,省力么? 就是因为python有很多写好的工具箱可以直接调用,我们只要开头给一个命令,在我们的代码 就可以直接使用它的功能了,这 ...

  5. python求n的阶乘代码_python计算n的阶乘的方法代码

    python中n的阶乘的算法? 1 math.factorial(x) 用python计算n的阶乘的方法.(含示例代码) 2. reduce函数 用python计算n的阶乘的方法. python里怎么 ...

  6. python对话框代码_Python、tkinter、复杂对话框和代码结构

    当实现复杂的对话框(即,具有大约10个或更多窗口小部件的对话框,尤其是在多个框架中排列时),创建需要许多tkinter调用,当代码保持在单个方法中时,代码可能会变得越来越复杂(难以读取和维护).一般来 ...

  7. python 大智慧365 数据格式_Python爬取365好书中小说代码实例

    需要转载的小伙伴转载后请注明转载的地址 需要用到的库 from bs4 import BeautifulSoup import requests import time 获取小说的每个章节的名称和章节 ...

  8. php翻牌游戏代码,H5响应式网页翻牌小游戏代码

    H5响应式网页翻牌小游戏代码 body { margin: 0; padding: 0; } .tile { display: block; float: left; border-radius: 5 ...

  9. python简单好看的代码_Python新手写出漂亮的爬虫代码1

    初到大数据学习圈子的同学可能对爬虫都有所耳闻,会觉得是一个高大上的东西,仿佛九阳神功和乾坤大挪移一样,和别人说"老子会爬虫",就感觉特别有逼格,但是又不知从何入手,这里,博主给大家 ...

最新文章

  1. Winograd,GEMM算法综述(CNN中高效卷积实现)(上)
  2. 年底了,游戏大作连连
  3. Java二叉树的构建与遍历
  4. node创建web服务器代码示例
  5. php 调用java webservice
  6. Java中Array和ArrayList之间的9个区别
  7. echarts折线图相关
  8. 用JavaScript语言判断一个三位数是否为水仙花数
  9. 適合.net開發人員的UML自由軟件
  10. JDK8新特性(四)之方法引用
  11. 计算机硬件及组成原理pdf百度云,计算机组成原理整理版本.pdf
  12. mnist手写数字识别与优化
  13. CFS三层内网环境 渗透流程
  14. starbound服务器文件,starbound星界边境开新档并从老存档转移物资的方法_快吧单机游戏...
  15. 【华为OD机试真题 JS】统计射击比赛成绩
  16. 前端 查看页面在不同分辨率下效果
  17. 如何获取window10中的开机图片(聚焦壁纸 )
  18. 如何安装群晖系统,改成NAS?
  19. 【线性代数】行列式的性质
  20. win7/8/10系统好用的视频剪辑软件对比

热门文章

  1. html点击按钮弹出窗口_电脑桌面总是弹出广告怎么办?教你2种方法,轻松解决...
  2. python find函数 和index的区别_python中index()与find()的区别
  3. mysql order 关键字_PHP数据库MySQL Order By 关键词 - PHP教程
  4. zeppelin安装使用
  5. Apache Flink 零基础入门(十七)Flink 自定义Sink
  6. 十一在家都逛哪些技术网站?(程序员必备58个网站汇总)
  7. 你们需要的数据集,都给准备好了!
  8. python编写函数求斐波那契数列的某一项_求解一道Python编程题
  9. fanuc roboguide_ROBOGUIDE码垛简单工作站的创建
  10. C语言科技感图片,科技感与运动范十足,几何C黑棚图曝出,年轻消费者又多了新选择...