今天刚刚完成猜数字游戏的设计与制作,到最后的完善整个过程。
首先,说明一下游戏规则:首先规定猜一个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属性,具体设置如下:
由UI可以看出EditText其实是圆角边框,因此需要在bian.xml属性文件的基础上添加corner属性,具体设置如下:
并且最后在最外层的线性布局将背景设置成白色。
通过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。
游戏大致内容如下。若有朋友有更好的针对猜数字游戏的制作,欢迎分享,让小编多多学习。