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 ...
随机推荐
- 数据仓库四个特点(面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant))
1.面向主题. 数据仓库中的数据是按照一定的主题域进行组织. 主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关.而操作型数据库的数据组织面向事 ...
- C#程序如何捕捉未try/catch的异常——不弹“XXX已停止工作”报错框
诚意满满直接上代码: static void Main(string[] args) { //Main函数中增加此句 AppDomain.CurrentDomain.UnhandledExceptio ...
- C# Excel操作类 ExcelHelper
实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...
- 细数垃圾邮箱客户端 Live Mail 的BUG
以前用XP系统,里面自带的有outlook,使用中还行,不过bug也不少,常见的如 1.查找,邮件多了后,常常查找不到: 2.有时收件箱什么的突然空白,或部分邮件不见了(2G大小限制,超过了就不能做移 ...
- .netcore部署Linux并结合Nginx反向代理 get started
一..NetCore网站准备与发布 首先准备好一个ASP.NET Core Web应用程序,我这里就使用新建的示例站点作为demo演示,使用dotnet publish 命令发布网站. 或者使用VS的 ...
- leetcode62—Unique Paths
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
- Docker学习5-Services – 服务(未完待续)
扩展应用程序并启用负载平衡, 为此,必须在分布式应用程序的层次结构中提升一级:服务.在分布式应用程序中,应用程序的不同部分称为“服务”.例如,一个视频共享站点,它可能包含用于将应用程序数据存储在数据库 ...
- vxlan 简单理解 vs calico 网络模型
1.vxlan(virtual Extensible LAN)虚拟可扩展局域网,是一种overlay的网络技术,使用MAC in UDP的方法进 行封装,共50字节的封装报文头. 2.VTEP为虚拟机 ...
- [浅谈CSS核心概念] CSS元素类型和盒模型
元素类型 在CSS中,HTML标签元素分为三种类型: 块状元素 内联元素(也叫行内元素) 内联块状元素 它们之间的区别在于: 块级元素会独占一行,内联元素和内联块状元素则都会在一行内显示 块状元素和内 ...
- 将公钥部署到远程Git仓库(coding.net)
步骤: 1.下载git通用客户端并且安装. 2.右键,在弹出的对话框中选择Git Bash 3.创建本地ssha)在弹出的终端输入ssh-keygen -t rsa -C "username ...