Python写个益智小游戏来锻炼大脑,都来试试看能写出来否?

最近一段时间,我感觉自己大脑出现了衰退的症状,说话口误逐渐增多,也常常忘记事情。

前两天在 B 站上看到一个两人玩的小游戏,叫做 “珠玑棋” ,发现这对锻炼大脑有一些好处。无奈找不到人一起玩,于是我决定用 Python 写一个简单的程序来自己玩。

游戏规则

珠玑棋的规则非常简单。它分为两方:攻击方和防守方。具体流程如下:

防守方写一个4位数字,每位数字不能重复

攻击方有10次猜测的机会,在每次机会里面,攻击方可以说出一个4位数,让防守方检查。

定义两个字母 A 和 B

攻击方说出的4位数里面,每有任何一位或者多位的数字和位置都对,则 A+1。例如防守方的答案是1234,攻击方的答案是6274,那么就是2A

在第4步检查以后,如果攻击方剩下的数字里面,有一位或者多位数字,在防守方剩下的数字里面,但位置不对,则 B+1。例如防守方的数字是1234,攻击方的数字是4190,就是2B。

防守方给出 A 和 B 的值,攻击方根据这两个值修正自己的猜测数。如果10次内猜对了,那么攻击方胜利。如果超过10次都猜不对,则防守方胜利。

特别说明,在匹配数字的时候,首先检查数字和位置都对的情况。检查完成以后,再检查数字对位置不对的情况。并且这个时候,是攻击方的剩余数字从左至右依次到防守方的剩余数字中检查。每检查一个数字,就把这个数字从攻击方和防守方的数字里面同时剔除。所以对于防守方的数字1234,如果攻击方的数字为4437,那么检查结果应该是1A1B。因为一开始把数字3剔除了,攻击方剩余447,防守方剩余124.然后攻击方的第一个4和防守方的4匹配上了以后也会剔除。变成攻击方剩余47,防守方剩余12.此时防守方已经没有4了。

在这个游戏规则里面,防守方的作用仅仅是检查结果而已,并没有攻防对抗,所以我们可以用程序来代替防守方。

Python 实现

首先我们来生成防守方的4位数字。由于4位数字不相等,所以我们使用 Python 的随机数来生成:

由于要检查的数据通过 input 输入,所以为了保持类型一致,我们都使用字符串来表示。

运行效果如下图所示:

接下来,让玩家连续进行10次尝试,每次输入一个4位数:

运行效果如下图所示:

图片

接下来,首先检查位置和数字都正常的情况:

这里,使用来同时迭代和,从而实现逐位一一对应检查。

下面再来处理数字对,但位置不对的情况:

这个代码就比较简单了。把剩下的数字一个一个到答案剩下的数字里面去查询,如果找到了,B 就加1。然后从答案里面删除这个数字。接着查找 guess 的下一个数字。

完整的代码如下图所示:

图片

如果10次猜测都失败了,运行效果如下图所示:

图片

如果才对了,运行效果如下图所示:

图片

计算过程如下图所示:

图片

至此,珠玑棋的命令行版本就完成了。希望这个小游戏能帮助大家锻炼一下大脑。

 

 关于Python技术储备
?Python学习路线汇总
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。


?Python必备开发工具  

  ?精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

  温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

?Python学习视频600合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

   ?实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。


?100道Python练习题
检查学习结果。 
?面试刷题

 在这里插入图片描述
在这里插入图片描述

 结束语

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码【免费获取】。 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>