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【https://www.yuanrenxue.com/】 由一群工作十余年的老程序员结合实际工作经验所写的Python教程。

python 游戏(数字推理游戏Bagels)的更多相关文章

  1. 用python玩推理游戏还能掌握基础知识点,有趣又充实,你不试试吗?

    可能更多的人依然还在苦苦的学python各种知识点,但其实同样很多人,玩着游戏就把python学会了.     用python玩推理游戏,是这份python教程中的12个游戏的其中之一. 有关这份Py ...

  2. 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 ...

  3. 简单的猜数字小游戏--Python

    猜数字小游戏: #coding=utf-8 import random   answer =random.randint(1,100) #生成随机数 n=int (input("Please ...

  4. Python制作的射击游戏

    如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线.] 你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作 ...

  5. 零基础入门学习python--第二章 用Python设计第一个游戏

    知识点汇总1. 什么是BIF? BIF(Built-in Functions)内置函数,共68个,可直接调用,方便程序员快速编写脚本程序.输入dir(__builtins__)即可查看所有内置函数,h ...

  6. Java基础知识强化之IO流笔记70:Properties练习之 如何让猜数字小游戏只能玩5次的案例

    1. 使用Properties完成猜数字小游戏只能玩5次的案例: 2. 代码实现: (1)猜数字游戏GuessNumber: package cn.itcast_08; import java.uti ...

  7. 洛谷P1118 数字三角形游戏

    洛谷1118 数字三角形游戏 题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直 ...

  8. 用Python设计第一个游戏 - 零基础入门学习Python002

    用Python设计第一个游戏 让编程改变世界 Change the world by program 有些鱼油可能会说,哇,小甲鱼你开玩笑呐!这这这这就上游戏啦?你不打算给我们讲讲变量,分支,循环,条 ...

  9. 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词

    一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...

随机推荐

  1. [Python_6] Python 配置 MySQL 访问

    0. 说明 Python 访问 MySQL 数据库,需要安装 MySQL 的 Python 插件. 1. 安装 MySQL 插件 pip install PyMySQL 2. 编写代码 # -*-co ...

  2. 【转】Java学习---集合框架那些事

    [原文]https://www.toutiao.com/i6593220692525711885/ Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 ...

  3. C++设计模式 ==> 装饰(者)模式

    简介 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象.装饰模式使用对象嵌套的思想,实现对一个对象动态地进行选择性的属 ...

  4. JAVA随机数之多种方法从给定范围内随机N个不重复数

    一.JAVA中生成随机数的方式 1.在j2se中使用Math.random()令系统随机选取一个0~1之间的double类型小数,将其乘以一个数,比如25,就能得到一个0~25范围内的随机数,这个在j ...

  5. pyspider爬取数据存入mysql--2.测试数据库能否连通

    做一个简单的测试,看数据能否存入mysql 1 #!/usr/bin/env python 2 # -*- encoding: utf-8 -*- 3 # Created on 2017-10-26 ...

  6. Android 关于Activity的四种启动模式的简单介绍

    Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standar ...

  7. ceph 池管理

    存储池的概念:比如有10个1T的硬盘,作为一个集群,那就可以在这个集群里划分几个池,给不同的组件使用 问题描述: 删除pool的时候提示下面的错误: ceph osd pool delete test ...

  8. 3-51单片机ESP8266学习-AT指令(学会刷固件)

    前言:体验一下刷固件(给单片机更新程序) 上一篇链接  http://www.cnblogs.com/yangfengwu/p/8757036.html 源码链接:https://pan.baidu. ...

  9. Theano3.7-练习之堆叠消噪自动编码器

    来自:http://deeplearning.net/tutorial/SdA.html#sda Stacked Denoising Autoencoders (SdA) note:这部分需要读者读过 ...

  10. MVC bundle的使用总结

    在我们的项目里面充斥着很多静态文件,为了追求模块化.插件化很多静态文件都被设计成模块的方式或者被分解,在需要的时候在通过组合的方式在UI层上使用:这就带来一个问题,文件多了会影响浏览器加载页面的速度, ...