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文件即可。歡迎各位在下面留言討論!
總結
以上是生活随笔為你收集整理的Matlab猜数字游戏GUI界面设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何防止头文件被重复包含或引用?
- 下一篇: Java读取数据库中的数据