Unity3d脚本Android水管工游戏的简单脚本


    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[] p_w_picpaths; 
        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; 
           p_w_picpaths=new int[32]; 
           dires=new Vector4[32]; 
           TF=new int[32]; 
           for(int k=0;k<=31;k++){ 
             flag=Random.Range(1,7);   
             p_w_picpaths[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(p_w_picpaths[j*coml+i]))){ 
                     step+=1; 
                     if(p_w_picpaths[j*coml+i]<5){ 
                         p_w_picpaths[j*coml+i]+=1; 
                         if(p_w_picpaths[j*coml+i]==5){ 
                            p_w_picpaths[j*coml+i]=1; 
                         } 
                      }else{ 
                         p_w_picpaths[j*coml+i]+=1; 
                         if(p_w_picpaths[j*coml+i]==7){ 
                            p_w_picpaths[j*coml+i]=5; 
                         } 
                      } 
                 } 
   
                 Vector4 dir; 
                 if(select(p_w_picpaths[j*coml+i])==up){ 
                     dir=new Vector4(1,1,0,0); 
                 }else if(select(p_w_picpaths[j*coml+i])==right){ 
                     dir=new Vector4(0,1,1,0); 
                 }else if(select(p_w_picpaths[j*coml+i])==down){ 
                     dir=new Vector4(0,0,1,1); 
                 }else if(select(p_w_picpaths[j*coml+i])==left){ 
                     dir=new Vector4(1,0,0,1); 
                 }else if(select(p_w_picpaths[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 p_w_picpath=new Texture(); 
            switch(n){ 
             case 1: 
                p_w_picpath=up; 
                break; 
             case 2: 
                p_w_picpath=right; 
                break; 
             case 3: 
                p_w_picpath=down; 
                break; 
             case 4: 
                p_w_picpath=left; 
                break;  
             case 5: 
                p_w_picpath=up_down; 
                break;  
              case 6: 
                p_w_picpath=right_left; 
                break;         
           } 
           return p_w_picpath; 
        } 
        //判断输赢 
        void WinOrLose(){ 
         switch(p_w_picpaths[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++; 
                    }     
                 }  //Unity3D教程手册:www.unitymanual.com  
                 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; 
                      } 
                  }  //Unity3D教程手册:www.unitymanual.com  
                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--; 
                        } 
                    } 
                 } 
              //Unity3D:www.unitymanual.com  
             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]);    
         } 
      } 
   
    }