python 游戏(数字推理游戏Bagels)
1.游戏思路和流程图
实现功能:玩家猜测三位不一样的数字,猜错了有提示,提示分别为(位置错误数字正确),(位置和数字正确),(数字和位置都不正确)
游戏流程图

2. 使用模块和游戏提示
import random
def game_info():
print('欢迎来到数字推理游戏')
print('系统会随机抽取三位不相同的数字')
print('根据系统提示来推理出这3位数字')
3. 双选验证
def Double_choice(a,b,hint):
'''双选择验证函数
:param a 第一个选项值
:param b 第二个选项值
:param hint 选项信息
:return 返回输入值'''
choice=''
while choice.lower() !=a and choice.lower() !=b:
print(hint)
choice=input()
return choice
4. 用户输入限制
def number_limited(number):
'''用户输入限制
:param number 用户输入数字
:return 返回用户输入数字'''
#用户限制思路 检查必须是整数,限制3位数字,检查数字不能重复
while True:
if not number.isdigit():
print('请输入整数数字')
elif len(number)!=3:
print('请输入三位数字')
elif len(set(list(number)))!=3:
print('三个数字不能重复')
else:
break
number=input()
return number
5. 随机抽取数字函数
def random_number_list(count):
'''随机抽取数字
:param count 抽取数字的位数 最大不能超过10
:return 返回随机抽取的3位不重复数字'''
number_list=[]
random_list=[i for i in range(10)]
random.shuffle(random_list)#打乱顺序
for i in range(count):
random_number=random.choice(random_list)
random_list.remove(random_number)
number_list.append(str(random_number))
return number_list
6. 数字判断提示
def judge_prompt(user_list,number_list):
'''数字判断提示
:param user_list 用户数字列表
:param number_list 随机数字列表
:return True 猜对了 False猜错了'''
#判断思路,先判断都相等,有几个数字是数字和位置对的,没有的话查找数字对的,在没有的话就是都猜错了
pico=0 #数字对了位置不对
fermi=0 #位置数字对了
if user_list==number_list:
return True
for i in range(len(user_list)):
if user_list[i]==number_list[i]:
fermi+=1
elif user_list[i] in number_list:
pico+=1
if fermi:
print('猜中了数字和位置(%d个)'%fermi)
if pico:
print('猜中了数字没有猜中位置(%d个)' % pico)
if not fermi and not pico:
print('没有一个数字和位置是对的')
return False
7. 游戏判断核心
def game_start():
'''游戏判断核心'''
number_list = random_number_list(count=3)
count=9
while count:
print('猜猜看(%d次机会)'%count)
user_number=number_limited(input())
if judge_prompt(list(user_number),number_list):
break
count-=1
if count==0:
print('你输了,这个数字是%s'%''.join(number_list))
else:
print('玩家获胜,这个数字是%s'%''.join(number_list))
8. 游戏外壳
def game_shell():
'''外壳程序'''
game_info() # 游戏开始提示
game_start()
while True:
message='你想在玩一次吗(Y or N)'
again_flag=Double_choice('y','n',message)
if again_flag=='n':
break
game_start()
9. 运行游戏
game_shell()
python学习途径
本游戏参考书本 <<Python游戏编程快速上手>>
python 游戏(数字推理游戏Bagels)的更多相关文章
- 用python玩推理游戏还能掌握基础知识点,有趣又充实,你不试试吗?
可能更多的人依然还在苦苦的学python各种知识点,但其实同样很多人,玩着游戏就把python学会了. 用python玩推理游戏,是这份python教程中的12个游戏的其中之一. 有关这份Py ...
- python猜数字游戏快速求解解决方案
#coding=utf-8 def init_set(): r10=range(10) return [(i, j, k, l) for i in r10 for j in r10 for k in ...
- 简单的猜数字小游戏--Python
猜数字小游戏: #coding=utf-8 import random answer =random.randint(1,100) #生成随机数 n=int (input("Please ...
- Python制作的射击游戏
如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线.] 你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作 ...
- 零基础入门学习python--第二章 用Python设计第一个游戏
知识点汇总1. 什么是BIF? BIF(Built-in Functions)内置函数,共68个,可直接调用,方便程序员快速编写脚本程序.输入dir(__builtins__)即可查看所有内置函数,h ...
- Java基础知识强化之IO流笔记70:Properties练习之 如何让猜数字小游戏只能玩5次的案例
1. 使用Properties完成猜数字小游戏只能玩5次的案例: 2. 代码实现: (1)猜数字游戏GuessNumber: package cn.itcast_08; import java.uti ...
- 洛谷P1118 数字三角形游戏
洛谷1118 数字三角形游戏 题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直 ...
- 用Python设计第一个游戏 - 零基础入门学习Python002
用Python设计第一个游戏 让编程改变世界 Change the world by program 有些鱼油可能会说,哇,小甲鱼你开玩笑呐!这这这这就上游戏啦?你不打算给我们讲讲变量,分支,循环,条 ...
- 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词
一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...
随机推荐
- Mysql引擎innodb_pool的作用
innodb_buffer_pool的简介: InnoDB主索引是聚簇索引,索引与数据共用表空间,对于InnoDB而言,数据就是索引,索引就是数据.InnoDB缓存机制和MyISAM缓存机制的最大区别 ...
- October 11th 2017 Week 41st Wednesday
If you don't know where you are going, you might not get there. 如果你不知道自己要去哪里,你可能永远到不了那里. The reward ...
- 《面向对象程序设计》六 GUI
git传送门 我这无药可救的拖延症和懒癌orz 主界面 文件读取界面 提示界面 最初选择vs+mfc,发现许多自动生成的代码读不懂(不须懂),尝试qt后感觉人生迎来了希望,看了推荐的视频与教程稍微了解 ...
- Java集合和泛型
集合 常用的集合有ArrayList,TreeSet,HashMap,HashSet. ArrayList 最常用的集合,每次插入都在后面追加元素. TreeSet 以有序状态保持并可防止重复.当你需 ...
- 028、HTML 标签1列表、图片、表格
内容简单看一下理解就行了. HTML 是用来描述网页的一种语言.就是用来编写网页的语言 内容:换行.分割,标签属性,编码方式设置,字体标签,特殊符号,列表.图片.表格标签############### ...
- JQuery 为radio赋值问题
今天用jquery 为radio赋值,从百度查了一下方法: $("input[name='radioName'][value=2]").attr("checked&quo ...
- HTML标签之marquee
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zkn_CS_DN_2013/article/details/25229719 <html> ...
- android studio InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClass annota
如果 你的项目中使用了注解插件 比如butterknife 升级3.1之后打包编译 出现以下错误提示 InnerClass annotations are missing correspondi ...
- ethereum/EIPs-725
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-725.md eip title author discussions-to status ...
- MP实战系列(十七)之乐观锁插件
声明,目前只是仅仅针对3.0以下版本,2.0以上版本. 意图: 当要更新一条记录的时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录时,获取当前version 更新时,带上这个version ...