2048是继FlappyBird之后另一个比较热的轻量级的手游,简单易玩。最近要离职原先的公司——因为我想做游戏,虽然玩游戏不是很多,但还是热爱开发游戏,因此就想去一家游戏公司,感觉对老板有一点愧疚和感激,愿原公司发展越来越好,用灰太狼的话讲,我还会回来的,哈哈!即将入职新公司,听说压力会很大,加班无止境,加班其实我到不怕,乘年轻,还有拼劲,加班算什么,其实只要自己能做出东西,感觉有成就感,倒还是喜欢花更多的时间去做东西,最近处于过渡期,写写之前公司的工作小结,还不是很忙,今天花了一个多小时,自己想了一下2048的算法,然后将其实现,可能算法不是那么优,还望批评交流!

效果图


实现的还比较粗糙,贴出主要逻辑代码,仅供参考,欢迎给出更优算法!


usingUnityEngine;usingSystem.Collections;publicclassNewBehaviourScript:MonoBehaviour{publicUILabelvalueLabel;boolgameover=false;voidStart(){gameover=false;valueLabel=GameObject.Find("ValueLabel").GetComponentInChildren<UILabel>();valueLabel.text="GameStart";valueLabel.color=Color.green;}//UpdateiscalledonceperframevoidUpdate(){if(!gameover){if(Input.GetKeyDown(KeyCode.D)){moveR();CreateNumber();}elseif(Input.GetKeyDown(KeyCode.A)){moveL();CreateNumber();}elseif(Input.GetKeyDown(KeyCode.W)){moveU();CreateNumber();}elseif(Input.GetKeyDown(KeyCode.S)){moveD();CreateNumber();}}}voidmoveU(){for(inti=1;i<=4;i++){boolflag=false;for(intj=2;j<=4;j++){for(intk=j-1;k>=1;k--){//获取当前元素GameObjectgo=GameObject.Find("L"+(k+1).ToString()+i.ToString());print("当前对象"+go.name);UILabelI=go.GetComponentInChildren<UILabel>();//获取下一个元素GameObjectgoNext=GameObject.Find("L"+k.ToString()+i.ToString());print("下一个对象"+goNext.name);UILabelINext=goNext.GetComponentInChildren<UILabel>();//比较代码if(I.text!=""){if(INext.text==""){INext.text=I.text;I.text="";}elseif(I.text==INext.text){if(!flag){inta=int.Parse(INext.text)+int.Parse(I.text);INext.text=a.ToString();I.text="";flag=true;}}}}}}}voidmoveD(){for(inti=1;i<=4;i++){boolflag=false;for(intj=3;j>=1;j--){for(intk=j+1;k<=4;k++){//获取当前元素GameObjectgo=GameObject.Find("L"+(k-1).ToString()+i.ToString());print("当前对象"+go.name);UILabelI=go.GetComponentInChildren<UILabel>();//获取下一个元素GameObjectgoNext=GameObject.Find("L"+k.ToString()+i.ToString());print("下一个对象"+goNext.name);UILabelINext=goNext.GetComponentInChildren<UILabel>();//比较代码if(I.text!=""){if(INext.text==""){INext.text=I.text;I.text="";}elseif(I.text==INext.text){if(!flag){inta=int.Parse(INext.text)+int.Parse(I.text);INext.text=a.ToString();I.text="";flag=true;}}}}}}}voidmoveL(){for(inti=1;i<=4;i++){boolflag=false;for(intj=2;j<=4;j++){for(intk=j-1;k>=1;k--){//获取当前元素GameObjectgo=GameObject.Find("L"+i.ToString()+(k+1).ToString());print("当前对象"+go.name);UILabelI=go.GetComponentInChildren<UILabel>();//获取下一个元素GameObjectgoNext=GameObject.Find("L"+i.ToString()+k.ToString());print("下一个对象"+goNext.name);UILabelINext=goNext.GetComponentInChildren<UILabel>();//比较代码if(I.text!=""){if(INext.text==""){INext.text=I.text;I.text="";}elseif(I.text==INext.text){if(!flag){inta=int.Parse(INext.text)+int.Parse(I.text);INext.text=a.ToString();I.text="";flag=true;}}}}}}}voidmoveR(){for(inti=1;i<=4;i++){boolflag=false;for(intj=3;j>=1;j--){for(intk=j+1;k<=4;k++){//获取当前元素GameObjectgo=GameObject.Find("L"+i.ToString()+(k-1).ToString());print("当前对象"+go.name);UILabelI=go.GetComponentInChildren<UILabel>();//获取下一个元素GameObjectgoNext=GameObject.Find("L"+i.ToString()+k.ToString());print("下一个对象"+goNext.name);UILabelINext=goNext.GetComponentInChildren<UILabel>();//比较代码if(I.text!=""){if(INext.text==""){INext.text=I.text;I.text="";}elseif(I.text==INext.text){if(!flag){inta=int.Parse(INext.text)+int.Parse(I.text);INext.text=a.ToString();I.text="";flag=true;}}}}}}}voidCreateNumber(){intcount=0;boolflag=false;for(inti=1;i<=4;i++){if(!flag){for(intj=1;j<=4;j++){GameObjectgo=GameObject.Find("L"+i.ToString()+j.ToString());UILabellabel=go.GetComponentInChildren<UILabel>();if(label.text==""){intr=Random.Range(1,10);if(r<=5){intvalue=Random.Range(1,5);if(value<4)label.text="2";elselabel.text="4";flag=true;break;}}else{if(++count==16){valueLabel.text="GameOver";valueLabel.color=Color.red;gameover=true;}}}}elsebreak;}}}

欢迎关注我的微博