zoukankan      html  css  js  c++  java
  • 简单游戏:九宫双片互换游戏

    先上结果:

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    
    public class SudokuGame  {
     
    	public List<SudokuItem>   items ;
    
    	public void  Init()
    	{
    		items = getNewList (); 
    	}
    
    	SudokuItem preItem ;
     
    	public void  changeItem(   SudokuItem curItem )
    	{
    		if (preItem == null) {
    			preItem = curItem ;
    			return ;
    		}
    
    		if (curItem == preItem) {
    			Debug.Log("curItem == preItem");
    			preItem = curItem ;
    			return ;
    		}
    		SudokuItem tempItem = preItem;
    		int preIndex = items.IndexOf (preItem);
    		int curIndex = items.IndexOf (curItem); 
    
    
    		Debug.Log ("-----" + preIndex + "---" + curIndex);
     
    
    		items [preIndex] = curItem;
    		items [curIndex] = tempItem;
     
    
    		preItem = null;
    	}
    
    	public bool  checkMatch()
    	{
    		for (int i = 0; i < 9; i ++) {
     			if( items[i].index != i )
    			{
    				Debug.Log(i);
    				return false ;
    			}
    		}
    
    		return true;
    	}
    
    
    
    	 List<SudokuItem> getNewList()
    	{
    		List<SudokuItem> list = new List<SudokuItem> ();
    
    		for (int i = 0; i < 9; i ++) {
    			SudokuItem  item = new SudokuItem() ;
    			item.index = i ; 
    			list.Add( item ) ;
    		}
    
    		//return ShuffleItem(list);
    		return list;
    	}
    
    
    	public void  ShuffleItem(  )
    	{
    		List<SudokuItem> newlist = new List<SudokuItem> ();
    
    		for (int i = 0; i < 9 ; i ++) {
    			SudokuItem  item =  items[Random.Range( 0 , items.Count)] ;
    			items.Remove( item ) ;
    			newlist.Add( item ) ;
    
    		}
    
    		items = newlist;
     
    	}
    
    	void log()
    	{
    		log (items);
    	}
    
    	void  log(List<SudokuItem>   list )
    	{ 
    		for (int i = 0; i < 9 ; i ++) { 
    			Debug.Log("index:" + i  + "   listIndex:" + list[i].index  );
    		}
    		 
    	}
    
    }
    
    
    public class  SudokuItem
    {
    	/// <summary>
    	/// 0-9
    	/// </summary>
    	public int  index ;
     
     
    	public Texture2D  texture ;
    }
     
    
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    
    public class SudokuView : MonoBehaviour {
    
    	SudokuGame game  ;
    
    	List< GameObject>   goItems  ;
    
    
    	public Texture2D  HoldImage ;
    
    	// Use this for initialization
    	void Start () {
    		game = new SudokuGame ();
    		game.Init ();
    
    		//initView
    		InitView ();
    	}
    	
    	// Update is called once per frame
    	void Update () {
    	
    	}
    
    	void InitView()
    	{
    		int with = 64;
    		int space = 5;
    
    		GameObject  prefab = Resources.Load("Prefab_ItemTexture") as GameObject ;
    
    		List<Texture2D> pics = getPicsByImage (HoldImage);
    
    		goItems = new List<GameObject> ();
    
    		for (int i = 0; i <  game.items.Count; i ++) {
    
    			SudokuItem  curItem = game.items[i] ;
    
    			GameObject  go = NGUITools.AddChild( gameObject , prefab ) ;
    			//go.GetComponent<UISprite>().spriteName = curItem.picName ;  
    
    			go.GetComponent<UITexture>().mainTexture =  pics[i] ;
    			curItem.texture = pics[i] ;
    
    			go.GetComponent<SudokuItemView>().InitView( curItem , 
    			                      delegate(SudokuItem  item) {
    				//Debug.Log( item.index);
    
    				this.game.changeItem( item ) ;
    				this.ReflashView();
     
    				if( this.game.checkMatch() )
    				{
    					Debug.Log("wwwwwwwwwwwww");
    				} else
    				{
    					Debug.Log("fffffffffff");
    
    				}
    			});
    
    			go.transform.localPosition = new Vector3(  (with + space) * (i%3) , -(with +  space) * (i/3) ,  0 ) ;
    			goItems.Add(  go  ) ;
    		}
    
    		game.ShuffleItem ();
    		ReflashView();
    	}
    
    
    	void ReflashView()
    	{
    		//Debug.Log ("xx");
    		for (int i = 0; i <  goItems.Count; i ++) {
    			
    			SudokuItem curItem = game.items [i]; 
    			//Debug.Log("---A-" + curItem.view.GetComponent<UISprite> ().spriteName );
    			//curItem.view.GetComponent<UISprite> ().spriteName = curItem.picName;  
    			//goItems[i].GetComponent<UISprite>().spriteName = curItem.picName ;
    			goItems[i].GetComponent<UITexture>().mainTexture =  curItem.texture ;
    
    			goItems[i].GetComponent<SudokuItemView>().refleshView( curItem);
    			//Debug.Log("---B-" + curItem.view.GetComponent<UISprite> ().spriteName );
    		}
    	}
    
    
    	List<Texture2D>  getPicsByImage( Texture2D   image)
    	{
    		List<Texture2D>   pics = new List<Texture2D> ();
    		
    		for (int i = 2 ; i >= 0; i --) {
    			for( int  j = 0 ; j <3 ; j++ )
    			{
    				Color[] pixels = image.GetPixels ( j * 64 , i* 64 , 64, 64);
    				//Color[] pixels = image.GetPixels (64 ,  0 , 64, 64);
    				//Debug.Log (pixels.Length);
    				
    				Texture2D tt = new Texture2D (64, 64);
    				tt.SetPixels (pixels);
    				tt.Apply (); 
    				
    				pics.Add( tt) ;
    			}
    		}
    		
    		return pics;
    	}
    }
    
    using UnityEngine;
    using System.Collections;
    using System;
    
    public class SudokuItemView : MonoBehaviour {
    
    	public UILabel  lbIndex ;
    
    	// Use this for initialization
    	void Start () {
    	
    	} 
    	
    	// Update is called once per frame
    	void Update () {
    	
    	}
    
    	SudokuItem  item ;
    	Action<SudokuItem>  back ;
    
    	public void refleshView(SudokuItem  item )
    	{
    		this.item = item;
    		lbIndex.text = item.index.ToString();
    	}
    
    	public void InitView( SudokuItem  item  , Action<SudokuItem>  back )
    	{
    		this.item = item;
    		this.back = back;
    		lbIndex.text = item.index.ToString();
    	}
    
    
    	void OnClick()
    	{ 
    		back (item);
    
    	}
    }
    
  • 相关阅读:
    求CRC校验和的低位和高位的两种方式
    求数组的长度 C
    C语言判断文件是否存在(转)
    Android使用JNI实现Java与C之间传递数据(转)
    字节流、字符串、16进制字符串转换__Java(转)
    字符串参数传递与返回值(转)
    JNI数据类型(转)
    十进制的数转换成十六进制的数 (转)
    C语言字符串长度(转)
    字符串截取函数--C语言(转)
  • 原文地址:https://www.cnblogs.com/didiaodexi/p/4875203.html
Copyright © 2011-2022 走看看