1. 程式人生 > >Android小遊戲------猜數字

Android小遊戲------猜數字

今天剛剛完成猜數字遊戲的設計與製作,到最後的完善整個過程。

首先,說明一下游戲規則:首先規定猜一個4位數,輸出結果會以 “X A X B”的形式表示出來。其中,”X A“代表有X個數字猜對了,並且在正確的位置上;”X B“代表有X個數字猜對了,但不在正確的位置上。由此,直至玩家猜出最終結果。

關於製作一個APP首先需要的就是UI設計,在此首先貼出最終遊戲介面,如下所示:

 

在這個APP中,我採用簡約的風格(個人偏好)。因此整個介面就是白底黑框和黑字。那麼,由圖可知,該UI佈局包含了1個EditText,1個Button和2個TextView。EditText作為玩家的輸入,Button確定玩家輸入並進行一系列的資料處理操作,中間較大的TextView用於顯示遊戲結果,最下面的TextView用於遊戲規則的說明。整個所使用到的View以及其功能由以上作簡要敘述。

那麼接下來就是對UI進行佈局排放,在此使用的是線性佈局,排放方式為垂直。那麼在這之中需要巢狀一個線性佈局用來排放第一行的EditText和Button,在巢狀的線性佈局中,排放方式為水平。排放方式依據此方式,那麼接下來就是對細節部分進行修飾,如EditText、Button和TextView的邊框設計,在這,需要在drawable資料夾下新建一個xml檔案,本文中命名為:bian.xml。在該xml中主要是對shape屬性進行修改,在這之中新增stroke(邊框屬性)屬性,並且為了避免View中內容太靠近邊緣,同時新增padding屬性,具體設定如下:

<?xml version="1.0" encoding="utf-8"?>

由UI可以看出EditText其實是圓角邊框,因此需要在bian.xml屬性檔案的基礎上新增corner屬性,具體設定如下:

<?xml version="1.0" encoding="utf-8"?>

並且最後在最外層的線性佈局將背景設定成白色。

通過UI發現,中間用於顯示的TextView佔了整個螢幕較大的位置,在此就是螢幕空間的分配問題。因此呼叫weight屬性對內嵌LinearLayout和2個TextView進行設定。在此APP中我以1:10:1的比例進行空間分配。到此為止,UI的介面佈局設計基本完成。

那麼現在是遊戲進行的邏輯設計了,首先得到EditText輸入的內容,然後首先進行非法操作判斷,如輸入超過4位或低於4位,輸入包含非數字等其他非法操作,當玩家操作了非法操作時進行提醒設定。然後對玩家正確輸入的內容進行判斷,首先判斷有多少A,這個比較簡單隻需要遍歷一遍輸入字串與答案進行比較就行了。其次,判斷有多少B。在這裡首先進行的是排除正確的數字,然後依據類似排序的方法在答案中剩餘的數字依次比較玩家輸入的內容中剩餘的數字,當判斷有數字正確時,則在玩家輸入內容中將相應數字刪除,依次判斷下一個,直至找出總共有多少B。基本的遊戲邏輯順序由上述所述。

但是不能讓玩家無止境的猜下去,當玩家猜了一定的數字時,若仍沒有猜中,則判斷玩家輸,並彈出對話方塊詢問玩家是否重玩。若玩家在限定次數內猜中了數字,則顯示勝利對話方塊,並詢問玩家是否繼續遊戲。當玩家選擇重玩或者繼續遊戲時,則需要將玩家已使用的次數清零。

至此,整個猜數字的APP製作完成。由於該遊戲邏輯比較簡單,相關程式碼就不貼了。但是,在製作的過程中仍遇到了些許的問題。

1、在設定了顯示TextView的邊框後,當玩家猜對了數字時,該TextView內會黑屏,但是在猜對數字時將輸入框內的內容清空時,該問題便不再存在。或者不設定邊框,那麼玩家猜中數字後也不會出現該問題。具體原因小編實在不知為何,若有朋友知道,請一定要告訴我。

2、線上性佈局中,對於第一行我是根據權值來給EditText和Button設定寬度的,但會存在,EditText的右邊界和Button的左邊界重合的情況,由於線性佈局中無法像相對佈局中的設定,因此我在這2個View之間新增了一個空白的TextView據此來分開EditText和Button。

遊戲大致內容如下。若有朋友有更好的針對猜數字遊戲的製作,歡迎分享,讓小編多多學習。