android版《手工接水管》--unity3d制作的

这几天没事做,随便做了一个小demo,因为不会美术,所以就没有继续做下去,我的悲哀啊~~~
这是一个接水管的小demo,原本是flash游戏,下面看看我的例子吧~~~~



代码就一个脚本的,也没什么可看的,大家随便都可以做的,呵呵~~~
using UnityEngine;
using System.Collections;

public class TestGoto : MonoBehaviour {
	public GUISkin skin;
	float width;
	float height;
	public Texture up;
	public Texture down;
	public Texture right;
	public Texture left;
	public Texture up_down;
	public Texture right_left;
	int[] images;
	Vector4[] dires;
	int flag;
	int step;
	int coml;
	int row;
	int m;
	int n;
	bool isend;
	bool iswin;
	int[] TF;
	void Start () {
	   //width=80*(Screen.width/480);
	   width=Screen.width*0.12F;
	   height=width;
	   flag=0;
	   step=0;
	   row=4;
	   coml=8;
	   m=0;
	   n=0;
	   iswin=false;
	   images=new int[32];
	   dires=new Vector4[32];
	   TF=new int[32];
	   for(int k=0;k<=31;k++){
	     flag=Random.Range(1,7);  
	     images[k]=flag;
	   } 
		
	   //level 01
	}
	
	void OnGUI(){	   
	  
	   GUI.skin=skin;
	   GUI.Window(1,new Rect(0,0,Screen.width,Screen.height),ShowWindow,"");
	   
	   if(isend){
		   WinOrLose();	
	   }
	   
	}
	void ShowWindow(int windowID){
	   if(GUI.Button(new Rect(width*0.2F,0,width,height),"open")){	     
	         isend=true;	    
	   }
		for(int j=0;j<row;j++){
	       for(int i=0;i<coml;i++){  	      
	         if(GUI.Button(new Rect(i*width+width*0.2F,(j+1)*height,width,height),select(images[j*coml+i]))){
	             step+=1;
	             if(images[j*coml+i]<5){
	                 images[j*coml+i]+=1;
	                 if(images[j*coml+i]==5){
	                    images[j*coml+i]=1;
	                 }
	              }else{
	                 images[j*coml+i]+=1;
	                 if(images[j*coml+i]==7){
	                    images[j*coml+i]=5;
	                 }
	              }
	         }
	          
	         Vector4 dir;
	         if(select(images[j*coml+i])==up){
	             dir=new Vector4(1,1,0,0);
	         }else if(select(images[j*coml+i])==right){
	             dir=new Vector4(0,1,1,0);
	         }else if(select(images[j*coml+i])==down){
	             dir=new Vector4(0,0,1,1);
	         }else if(select(images[j*coml+i])==left){
	             dir=new Vector4(1,0,0,1);
	         }else if(select(images[j*coml+i])==up_down){
	             dir=new Vector4(1,0,1,0);
	         }else{
	             dir=new Vector4(0,1,0,1);
	         }
	         dires[j*coml+i]=dir;
			 //print(j*coml+i+":"+dires[j*coml+i]);
	       }  
	    }
	}
	Texture select(int n){
	    Texture image=new Texture();
	    switch(n){
	     case 1:
	        image=up;
	        break;
	     case 2:
	        image=right;
	        break;
	     case 3:
	        image=down;
	        break;
	     case 4:
	        image=left;
	        break; 
	     case 5:
	        image=up_down;
	        break; 
	      case 6:
	        image=right_left;
	        break;        
	   }
	   return image;
	}
	//判断输赢
	void WinOrLose(){
     switch(images[n*coml+m]){
		   //第一种类型的图片,向上+向右
		// if(dires[n*coml+m].x==1&&dires[n*coml+m].y==1){
		case 1: 
		     if(n==0){
		        if(m==0){			        
			        TF[n*coml+m]=1; 
					m++;
		        }    
		     }
		     else{
		        if(m<(coml-1)){
			         if(dires[(n-1)*coml+m].z==1&&dires[n*coml+(m+1)].w==1){
			             TF[n*coml+m]=1;
			             if(TF[(n-1)*coml+m]==1){
			                m++;
			             }
			             if(TF[n*coml+(m+1)]==1){
			                n--;
			             }
			         }
			     }
		     }
			    
		    break;
		  //第二种类型的图片 向上+向下
		// if(dires[n*coml+m].x==1&&dires[n*coml+m].z==1){
	      case 5: 
		      if(n==0){
		         if(m==0){			         
			        TF[n*coml+m]=1; 
					n++;
		         }   
		      }     
		      else if(n>0&&n<(row-1)){
		         if(dires[(n-1)*coml+m].z==1&&dires[(n+1)*coml+m].x==1){
		             TF[n*coml+m]=1;
		             if(TF[(n-1)*coml+m]==1){
		                n++;
		             }
		             if(TF[(n+1)*coml+m]==1){
		                n--;
		             }
		         }		 		         
		      }
		      else{
		          if(m==(coml-1)){
			           print("1:win!!!");
			           iswin=true;
		          }
		      }
		    break;
		   //第三种类型的图片 向上+向左
		// if(dires[n*coml+m].x==1&&dires[n*coml+m].w==1){
		case 4:
		     if(n>0&&m>0){
		         if(dires[(n-1)*coml+m].z==1&&dires[n*coml+(m-1)].w==1){
		            TF[n*coml+m]=1;
		             if(TF[(n-1)*coml+m]==1){
		                m--;
		             }
		             if(TF[n*coml+(m-1)]==1){
		                n--;
		             }
		         }		      
		     }
		 break;
		  //第四种类型的图片 向右+向下
		// if(dires[n*coml+m].y==1&&dires[n*coml+m].z==1){
		case 2: 
		     if(n<(row-1)&&m<(coml-1)){
		        if(dires[(n+1)*coml+m].x==1&&dires[n*coml+(m+1)].w==1){
		           TF[n*coml+m]=1;
		           if(TF[(n+1)*coml+m]==1){
		                m++;
		            }
		            if(TF[n*coml+(m+1)]==1){
		                n++;
		            }
		        }
		     }
		  
		  break;
		 //第五种类型的图片 向右+向左
		//  if(dires[n*coml+m].y==1&&dires[n*coml+m].w==1){
		case 6: 
		     if(m>0&&m<(coml-1)){
		        if(dires[n*coml+(m-1)].y==1&&dires[n*coml+(m+1)].w==1){
		           TF[n*coml+m]=1;
		           if(TF[n*coml+(m-1)]==1){
		                m++;
		            }
		            if(TF[n*coml+(m+1)]==1){
		                m--;
		            }
		        }
		     }
		   
		 break;
		 //第六种类型的图片 向下+向左
		//if(dires[n*coml+m].z==1&&dires[n*coml+m].w==1){
		case 3: 
			if(n==(row-1)&&m==(coml-1)){
		         print("2:win!!!");
		         iswin=true;
		     }
		     if(m>0&&n<(row-1)){
		        if(dires[n*coml+(m-1)].y==1&&dires[(n+1)*coml+m].x==1){
		           TF[n*coml+m]=1;
		           if(TF[n*coml+(m-1)]==1){
		                n++;
		            }
		            if(TF[(n+1)*coml+m]==1){
		                m--;
		            }
		        }
		     }
		    
		 break;
    }
			
	 if(iswin){
	   print("i win dlnuchunge");
	 }
	  print("n:"+n+"--m:"+m);
	  	
      for(int a=0;a<32;a++){
		print(a+":"+TF[a]);	  
	 }
  }
 
}














  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值