Matlab猜数字游戏GUI界面设计
猜數(shù)字小游戲是本人以前非常喜愛(ài)的一個(gè)安卓手機(jī)小游戲,相信有不少小伙伴玩過(guò)。這個(gè)游戲的規(guī)則大致如下:
1.點(diǎn)擊“開始游戲”,系統(tǒng)會(huì)隨機(jī)生成1個(gè)四位數(shù),每個(gè)位數(shù)不重復(fù),如3810;
2.玩家必須在7次內(nèi)根據(jù)系統(tǒng)提示猜出結(jié)果,否則游戲失敗。如用戶輸入“1234”,則結(jié)果返回為0A2B,其中A表示數(shù)字相同且位置相同,B表示數(shù)字相同但位置不同;如用戶輸入為3567,則結(jié)果返回為1A0B。玩家每猜一次,系統(tǒng)給出一個(gè)結(jié)果:XAYB。
3.用戶根據(jù)給出的“XAYB”的結(jié)果,反復(fù)輸入猜測(cè)的數(shù)字,最終在7次內(nèi)猜出結(jié)果。若超出七次,則游戲失敗。
本人對(duì)于這個(gè)游戲樂(lè)此不疲,個(gè)人也非常喜歡編程,在Matlab編程方面也有十幾年的經(jīng)驗(yàn)了。因此,出于個(gè)人的興趣所致,基于Matlab的GUI界面開發(fā)了一個(gè)程序,可完美實(shí)現(xiàn)這個(gè)小游戲功能。我所寫的代碼包括3個(gè)文件,1個(gè)fig文件和2個(gè)m文件,只需要運(yùn)行test05.m這個(gè)文件即可。為了方便理解,我添加了1個(gè)說(shuō)明文件和2個(gè)游戲界面的截圖。
游戲的初始界面如下,運(yùn)行test05.m即可出現(xiàn)。
?點(diǎn)擊“開始游戲”,系統(tǒng)隨機(jī)生成四位數(shù)。
然后用戶在下面的方框中可輸入猜測(cè)的數(shù)字,如1234;然后點(diǎn)擊“猜”。系統(tǒng)即會(huì)在下面的列表框中展示猜測(cè)結(jié)果。本人運(yùn)行一次游戲的結(jié)果如下。
?從上面可以看出來(lái),本次生成的隨機(jī)數(shù)字是5267。
第1次,猜測(cè)的是1234,結(jié)果為1A0B,表示這4個(gè)數(shù)字里面只有1個(gè)數(shù)字對(duì)且位置對(duì)。
第2次,猜測(cè)的是5678,結(jié)果為1A2B,表示這4個(gè)數(shù)字里面有3個(gè)數(shù)字對(duì),但只有1個(gè)位置對(duì)。
根據(jù)前兩次的結(jié)果,可以知道1234里面有1個(gè),5678里面有3個(gè)。
第3次,猜測(cè)的是1678,結(jié)果為0A2B,表示這4個(gè)數(shù)字里面有2個(gè)數(shù)字對(duì),但位置都不對(duì)。
所以,1肯定沒(méi)有,234里面有1個(gè);678里面有2個(gè),但位置不對(duì);5出現(xiàn)在第1個(gè)位置;
第4次,猜測(cè)的是5278,結(jié)果為2A1B,表示這4個(gè)數(shù)字里面有3個(gè)數(shù)字對(duì),但只有2個(gè)位置對(duì),其中包括數(shù)字5。
這里可以做一個(gè)假設(shè),假設(shè)278里面是2對(duì),那么2一定是位置對(duì),那么78里面就只有1個(gè)對(duì)且位置不對(duì);結(jié)合前面的678里面有2個(gè),所以6一定有,而且6在第3或第4個(gè)位置。我綜合這些信息,做了一個(gè)猜測(cè),猜測(cè)78里面有7。
第5次,猜測(cè)5267,運(yùn)氣不錯(cuò),直接對(duì)了!這里當(dāng)然是有運(yùn)氣成分的!
正常來(lái)說(shuō),七次一般都能猜對(duì)的。
以上就是我編寫的小游戲的介紹,下面簡(jiǎn)單說(shuō)明一下我編程的思路。
1.利用Matlab,設(shè)計(jì)好游戲的GUI界面;(我用的是Matlab2012b版本,輸入guide即可打開)
2.代碼中對(duì)應(yīng)了2個(gè)按鈕,第1個(gè)是“開始游戲”,第2個(gè)是“猜”。我需要針對(duì)這兩個(gè)按鈕分別設(shè)定相應(yīng)的代碼操作。
2.1開始游戲
隨機(jī)生成一個(gè)不重復(fù)的四位數(shù),這個(gè)可以利用randperm函數(shù)實(shí)現(xiàn)(感興趣的可以看我后面放的代碼下載鏈接)。
由于這個(gè)四位數(shù)后面一直需要用上,所以需要申明全局變量,可以用global來(lái)實(shí)現(xiàn)。
另外,因?yàn)椴聹y(cè)次數(shù)上限為7次,所以這里我另外定義了一個(gè)猜測(cè)次數(shù)的全局變量。
2.2猜
讀取用戶猜測(cè)的四位數(shù),利用自己編寫的函數(shù)XAYB_calculate.m,對(duì)比這兩個(gè)四位數(shù),返回“XAYB”的字符串,同時(shí),猜測(cè)次數(shù)+1。
將每次猜測(cè)的結(jié)果,匯總為一個(gè)長(zhǎng)的字符串,填入下面的listbox。
當(dāng)猜測(cè)次數(shù)超過(guò)7次時(shí),顯示“游戲失敗”。
當(dāng)猜測(cè)次數(shù)在7次以內(nèi)猜對(duì)時(shí),顯示“游戲成功”。
以上就是代碼的全部思路,第一次發(fā)文希望小伙伴們多多支持。
所有資源的下載鏈接請(qǐng)進(jìn)入全部Matlab的GUI代碼(不是免費(fèi),希望能給一些支持,都是我自己編寫的;如果我的思路能給你們一些啟發(fā)那也是好的)。小伙伴們?nèi)绻胱约夯谶@個(gè)進(jìn)行修改也是可以的,只需要用Matlab的guide打開test05.fig,即可自行設(shè)置GUI界面,再編寫對(duì)應(yīng)的test05.m文件即可。歡迎各位在下面留言討論!
總結(jié)
以上是生活随笔為你收集整理的Matlab猜数字游戏GUI界面设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何防止头文件被重复包含或引用?
- 下一篇: java服务器向客户端发消息_socke