Matlab猜数字游戏GUI界面设计

猜数字小游戏是本人以前非常喜爱的一个安卓手机小游戏,相信有不少小伙伴玩过。这个游戏的规则大致如下:

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文件即可。欢迎各位在下面留言讨论!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡伟成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值