猜数字小游戏是本人以前非常喜爱的一个安卓手机小游戏,相信有不少小伙伴玩过。这个游戏的规则大致如下:
1.点击“开始游戏”,系统会随机生成1个四位数,每个位数不重复,如3810;
2.玩家必须在7次内根据系统提示猜出结果,否则游戏失败。如用户输入“1234”,则结果返回为0A2B,其中A表示数字相同且位置相同,B表示数字相同但位置不同;如用户输入为3567,则结果返回为1A0B。玩家每猜一次,系统给出一个结果:XAYB。
3.用户根据给出的“XAYB”的结果,反复输入猜测的数字,最终在7次内猜出结果。若超出七次,则游戏失败。
本人对于这个游戏乐此不疲,个人也非常喜欢编程,在Matlab编程方面也有十几年的经验了。因此,出于个人的兴趣所致,基于Matlab的GUI界面开发了一个程序,可完美实现这个小游戏功能。我所写的代码包括3个文件,1个fig文件和2个m文件,只需要运行test05.m这个文件即可。为了方便理解,我添加了1个说明文件和2个游戏界面的截图。
游戏的初始界面如下,运行test05.m即可出现。
点击“开始游戏”,系统随机生成四位数。
然后用户在下面的方框中可输入猜测的数字,如1234;然后点击“猜”。系统即会在下面的列表框中展示猜测结果。本人运行一次游戏的结果如下。
从上面可以看出来,本次生成的随机数字是5267。
第1次,猜测的是1234,结果为1A0B,表示这4个数字里面只有1个数字对且位置对。
第2次,猜测的是5678,结果为1A2B,表示这4个数字里面有3个数字对,但只有1个位置对。
根据前两次的结果,可以知道1234里面有1个,5678里面有3个。
第3次,猜测的是1678,结果为0A2B,表示这4个数字里面有2个数字对,但位置都不对。
所以,1肯定没有,234里面有1个;678里面有2个,但位置不对;5出现在第1个位置;
第4次,猜测的是5278,结果为2A1B,表示这4个数字里面有3个数字对,但只有2个位置对,其中包括数字5。
这里可以做一个假设,假设278里面是2对,那么2一定是位置对,那么78里面就只有1个对且位置不对;结合前面的678里面有2个,所以6一定有,而且6在第3或第4个位置。我综合这些信息,做了一个猜测,猜测78里面有7。
第5次,猜测5267,运气不错,直接对了!这里当然是有运气成分的!
正常来说,七次一般都能猜对的。
以上就是我编写的小游戏的介绍,下面简单说明一下我编程的思路。
1.利用Matlab,设计好游戏的GUI界面;(我用的是Matlab2012b版本,输入guide即可打开)
2.代码中对应了2个按钮,第1个是“开始游戏”,第2个是“猜”。我需要针对这两个按钮分别设定相应的代码操作。
2.1开始游戏
随机生成一个不重复的四位数,这个可以利用randperm函数实现(感兴趣的可以看我后面放的代码下载链接)。
由于这个四位数后面一直需要用上,所以需要申明全局变量,可以用global来实现。
另外,因为猜测次数上限为7次,所以这里我另外定义了一个猜测次数的全局变量。
2.2猜
读取用户猜测的四位数,利用自己编写的函数XAYB_calculate.m,对比这两个四位数,返回“XAYB”的字符串,同时,猜测次数+1。
将每次猜测的结果,汇总为一个长的字符串,填入下面的listbox。
当猜测次数超过7次时,显示“游戏失败”。
当猜测次数在7次以内猜对时,显示“游戏成功”。
以上就是代码的全部思路,希望大家多多支持。
所有资源的下载链接请点击:Matlab猜数字游戏GUI界面设计(不是免费,希望能给一些支持,都是我自己编写的;如果我的思路能给你们一些启发那也是好的)。如果想自己基于这个进行修改也是可以的,只需要用Matlab的guide打开test05.fig,即可自行设置GUI界面,再编写对应的test05.m文件即可。欢迎各位在下面留言讨论!
PS:本人即为CSDN博主「hwc_yzt」
————————————————
版权声明:本文为CSDN博主「hwc_yzt」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38919810/article/details/124504535