猜猜看
1、最终成果
界面显示:
1.1、主界面:
1.2、猜的界面
1.3猜对界面
1.3、猜错界面
程序的下载链接:http://pan.baidu.com/s/1i3CMmCd34,打开运行整个程序需要安装unity3d。代码文件在文件夹中,直接打开即可查看。exe文件下载链接:http://pan.baidu.com/s/1hqxVhrA
2、猜猜看心得体会:
做猜猜看这个应用,一开始觉得好像并不难,的确,一开始不难,做到后面才发现有些东西做不出来,因为需要的那个算法我做不出来,这个算法我想了很久,也尝试过很多自己的方法去写一下,但是做出来的效果很不好,感觉就是不如不写算法。先抛开算法不说,我写这个应用使用的是unity3d这个软件,目前来说,我接触的人中使用这个软件的人寥寥无几,这个软件是有很多好处的,首先它是一个游戏引擎,并且是一个成熟的引擎,然后就是它的功能非常的强大,你可以很方便地做一些事情。采用的语言是c#或者js,我用的是c#。用unity3d做猜猜看这个应用说简单也简单说难也难,因为它是全英文的,没有接触过的人想一两天就学会使用是不可能的。简单是你学会之后就思路就很明确。
3、猜猜看开发过程
开发猜猜看的总时间大概有一天到两天左右,算法做了很久也没做出来。
开发的大概过程,首先将图片资源先导入到资源文件夹中,方便以后使用,然后就是设计问题,每一张图片对应一个问题,每一个问题对应一个答案,首先是先从一堆图片中随机一张图片,然后把随机后的图片踢掉,再从剩下的图片中再随机一张图片,然后踢掉前面随机的两张图片,再从剩下到图片中随机一张,这样随机出来的图片就不会重复,然后是现实,首先是将第一张随机的图片从三个显示框中随机一个,把图片放进去,然后再把剩下的图片中随机一张放在一个随机框中,最后把剩下的最后一张图片放在最后的那个框中,显示图片就完成了,然后是问题和图片对应,在随机出来的三张图片中随机一张,把随机出来的那张匹配它的问题,最后那张图片就是答案,至于点击图片而显示答案的对错只要在图片的上一层加上一个透明的button就可以,这种方法简单实用,对应的button只要与图片对应起来就可以实现点击正确答案的时候会显示正确,点击错误答案的时候会显示错误。因为图片我一开始就设置好了,所有没有使用老师所给的图片,我觉得图片并不重要,主要还是思路是否正确。
4、开发的收获
开发这个猜猜看这个应用我知道了很多东西,第一,我会的东西还不够多,算法都做不出来实在有点失败,第二,我的英语能力还不够,因为我还不能完全看懂unity3d界面的所有英语显示。第三,我的编程能力还是不够,逻辑能力也不是很好,因为做这个应用的时候有时候完全不知道自己做到哪里了,或者下一步该怎样做了,这是逻辑能力不够好大表现。总的来说,收获了自己的不足,不足不一定是不好的,知道自己的不足,以后就知道该怎样做了。
5、主要代码:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
public class loadquestion : MonoBehaviour {
public Text questiontext;
//Dictionary<string, int> question = new Dictionary<string, int>();
string[] queationmessage = { "图中哪个是哈士奇", "图中哪个是藏獒", "图中哪个是松狮", "图中哪个是边境牧羊犬", "图中哪个是吉娃娃", "图中哪个是柴犬", "图中哪个是英国斗牛犬",
"图中哪个是萨摩耶犬","图中哪个是秋田犬","图中哪个是杜宾犬","图中哪个是博美犬","图中哪个是法国斗牛犬","图中哪个是腊肠犬","图中哪个是巴哥犬"
};
int[] answer = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
public Button[] button;
public Image[] image;
public Sprite[] sprite;
static int n;
public void judgeimage1()
{
if (n == 0)
{
Application.LoadLevel(2);
}
else {
Application.LoadLevel(1);
}
}
public void judgeimage2()
{
if (n == 1)
{
Application.LoadLevel(2);
}
else {
Application.LoadLevel(1);
}
}
public void judgeimage3()
{
if (n == 2)
{
Application.LoadLevel(2);
}
else {
Application.LoadLevel(1);
}
}
public void judgeimage1wrong()
{
Application.LoadLevel(1);
}
public void judgeimage2wrong()
{
Application.LoadLevel(1);
}
public void judgeimage3wrong()
{
Application.LoadLevel(1);
}
void Start () {
button[0].interactable = false;
button[1].interactable = false;
button[2].interactable = false;
}
public void onclick()
{
button[0].interactable = true;
button[1].interactable = true;
button[2].interactable = true;
int i = Random.Range(0, 13);
questiontext.text = queationmessage[i];
int m = answer[i];
int imagerandomnumber = Random.Range(0, 2);
n = imagerandomnumber;
image[imagerandomnumber].overrideSprite = sprite[i];
//随机图片的判断
if (imagerandomnumber == 0)
{
int imagerandomnumber1 = Random.Range(1, 2);
int i1 = Random.Range(0, 13);
while (i1 != i)
{
image[imagerandomnumber1].overrideSprite = sprite[i1];
int i2 = Random.Range(0, 13);
if (imagerandomnumber1 == 1 && i2 != i & i2 != i1)
{
image[2].overrideSprite = sprite[i2];
}
}
Debug.Log(i1);
}
if (imagerandomnumber == 1)
{
int[] remain = { 0, 2 };
int imagerandomnumber1 = Random.Range(0, remain.Length - 1);
int i1 = Random.Range(0, 13);
while (i1 != i)
{
image[remain[imagerandomnumber1]].overrideSprite = sprite[i1];
int i2 = Random.Range(0, 13);
if (remain[imagerandomnumber1] == 0 && i2 != i & i2 != i1)
{
image[2].overrideSprite = sprite[i2];
}
}
else
{
Debug.Log(i1);
}
}
if (imagerandomnumber == 2)
{
int imagerandomnumber1 = Random.Range(0, 1);
int i1 = Random.Range(0, 13);
while (i1 != i)
{
image[imagerandomnumber1].overrideSprite = sprite[i1];
int i2 = Random.Range(0, 13);
if (imagerandomnumber1 == 0 && i2 != i & i2 != i1)
{
image[1].overrideSprite = sprite[i2];
}
}
else
{
Debug.Log(i1);
}
}
}
void Update () {
}
}
6、 需要改进的地方
第一就是要加上算法,虽然现在我做不出来那个算法,但是以后我觉得我会做出来,做出来之后要加上。
第二就是加上新的功能,比如积分排名功能
第三就是把界面该一下,更加酷炫一点,同时加上音乐更好
第四就是需要加上数据库,因为一开始为了方便没有使用数据库,之后会加上数据库的。