日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
AIR Android:編寫(xiě)主類(lèi)Main(2)

編寫(xiě)主類(lèi)Main

成都創(chuàng)新互聯(lián)公司專(zhuān)注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、蓬安網(wǎng)絡(luò)推廣、小程序制作、蓬安網(wǎng)絡(luò)營(yíng)銷(xiāo)、蓬安企業(yè)策劃、蓬安品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供蓬安建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

在翻轉(zhuǎn)周邊棋子時(shí),由于要驗(yàn)證棋子的真實(shí)性,代碼稍顯煩瑣。總的說(shuō)來(lái),就是先獲取上下兩個(gè)棋子的id,以及左右存在的棋子的id,然后對(duì)棋子進(jìn)行翻轉(zhuǎn)。

翻轉(zhuǎn)完畢后,判斷棋子是否全部變白的代碼也很簡(jiǎn)單。代碼如下:

 
 
  1.        var grid:Grid;  
  2.         for ( var i:uint = 0, len:uint = grids.length; i < len; i++)  
  3.         {  
  4.                 grid = grids[i];  
  5.                 //只要發(fā)現(xiàn)有一個(gè)棋子不是白色,則表明游戲還沒(méi)有結(jié)束  
  6.                 if( grid.isWhite() == false )  
  7.                 {  
  8.                        //只要一個(gè)為false,則表示游戲還沒(méi)有結(jié)束  
  9.                 }  
  10.         }          

我們的游戲只有一關(guān),因此用戶過(guò)關(guān)就意味著游戲結(jié)束。gameOver函數(shù)中,使用了一個(gè)文本框來(lái)顯示提示信息,由于和程序邏輯沒(méi)有聯(lián)系,這里略去不提。

至此,主程序的主要代碼介紹完畢,完整的代碼見(jiàn)代碼清單2-4。

代碼清單2-4 FlipIt項(xiàng)目的Main.as文件

 
 
  1. package  
  2. {  
  3.   import flash.display.Sprite;  
  4.   import flash.display.StageScaleMode;  
  5.   import flash.display.StageAlign;  
  6.   import flash.events.Event;  
  7.   import flash.events.MouseEvent;  
  8.   import flash.text.TextField;  
  9.   import flash.text.TextFormat;  
  10.   import flash.text.TextFormatAlign;  
  11.     
  12.   [SWF(backgroundColor="#B6B5C1")]  
  13.   public class Main extends Sprite   
  14.   {      
  15.     //使用常量增強(qiáng)程序的靈活性和可讀性  
  16.     private const BLACK:Boolean = false;  
  17.     private const WHITE:Boolean = true;      
  18.     private const GRID_RADIUS:int = 30;      
  19.     private var grid_container:Sprite;  
  20.     private var game_tip:TextField;  
  21.       
  22.     //在數(shù)組元素的類(lèi)型確定的情況下,盡量使用Vector,而不用Array,性能更佳  
  23.     private var grids:Vector. = new Vector.();      
  24.     private var column_number:uint;  
  25.       
  26.     public function Main():void   
  27.     {  
  28.       init();        
  29.     }  
  30.       
  31.     private function init():void  
  32.     {  
  33.       //設(shè)置舞臺(tái)屬性,為了自動(dòng)適應(yīng)屏幕尺寸,必須設(shè)置  
  34.       stage.scaleMode = StageScaleMode.NO_SCALE;  
  35.       stage.align = StageAlign.TOP_LEFT;        
  36.       //創(chuàng)建棋子容器  
  37.       grid_container = new Sprite();  
  38.       addChild(grid_container);        
  39.       //創(chuàng)建文本框,用來(lái)顯示游戲結(jié)果  
  40.       game_tip = new TextField();  
  41.       var tf:TextFormat = new TextFormat("Droid Serif", 24);  
  42.       tf.align = TextFormatAlign.CENTER;  
  43.       game_tip.defaultTextFormat = tf;  
  44.       game_tip.width = stage.stageWidth;  
  45.       game_tip.y = 500;  
  46.       game_tip.selectable = false;  
  47.       addChild(game_tip);              
  48.       //創(chuàng)建棋盤(pán)  
  49.       createMap();        
  50.       //將棋盤(pán)屏幕居中放置  
  51.       grid_container.x = (stage.stageWidth - grid_container.width) / 2;        
  52.       grid_container.y = 120;          
  53.       //利用事件流的冒泡機(jī)制,只監(jiān)聽(tīng)容器的鼠標(biāo)單擊事件  
  54.       grid_container.addEventListener(MouseEvent.CLICK, onClickHandler);  
  55.     }  
  56.       
  57.     private function createMap():void  
  58.     {  
  59.       var gameMap:Array = new Array();        
  60.       gameMap[0] = [BLACK, WHITE, WHITE, BLACK];  
  61.       gameMap[1] = [WHITE, BLACK, BLACK, WHITE];  
  62.       gameMap[2] = [WHITE, BLACK, BLACK, WHITE];  
  63.       gameMap[3] = [BLACK, WHITE, WHITE, BLACK];  
  64.         
  65.       //列數(shù)  
  66.       column_number = 4;  
  67.       //總行數(shù)  
  68.       var rowCount:uint = gameMap.length;  
  69.       //臨時(shí)變量  
  70.       var rowArray:Array;  
  71.       var i:uint, len:uint;  
  72.       var grid:Grid;  
  73.       //棋子的間距  
  74.       var space:int = 10;        
  75.       //根據(jù)數(shù)組創(chuàng)建棋盤(pán)  
  76.       for ( var row:uint = 0; row < rowCount; row++)  
  77.       {  
  78.         //獲取每一行的數(shù)據(jù)  
  79.         rowArray = gameMap[row];  
  80.         len = rowArray.length;          
  81.         for ( i = 0; i < len; i++)  
  82.         {  
  83.           //創(chuàng)建Grid,并賦予初始值。GRID_RADIUS常量定義了棋子的尺寸  
  84.           grid = new Grid(rowArray[i], GRID_RADIUS);  
  85.           //計(jì)算出棋子在棋盤(pán)上的編號(hào)  
  86.           grid.id = row * column_number + i;  
  87.           //設(shè)置棋子的坐標(biāo)  
  88.           grid.x = i * (GRID_RADIUS*2 + space);  
  89.           grid.y = row * (GRID_RADIUS*2 + space);  
  90.           grid_container.addChild(grid);  
  91.           //按照編號(hào)將棋子保存在數(shù)組中,待以后查找  
  92.           grids[grid.id] = grid;  
  93.         }  
  94.       }        
  95.     }  
  96.       
  97.     private function onClickHandler(e:MouseEvent):void  
  98.     {  
  99.       e.stopImmediatePropagation();  
  100.       var grid:Grid = e.target as Grid;  
  101.       //只有單擊的對(duì)象是棋子才執(zhí)行后面的代碼  
  102.       if ( grid == null) return;  
  103.       //翻轉(zhuǎn)當(dāng)前單擊的棋子  
  104.       grid.doFlip();  
  105.       //同時(shí)翻轉(zhuǎn)周?chē)?個(gè)棋子  
  106.       var ids:Array = new Array(grid.id - column_number, grid.id + column_number);  
  107.       //如果棋子是在最左端,則左邊是空的,反之左邊存在棋子  
  108.       if ( grid.id % column_number != 0 )  
  109.       {  
  110.         ids.push(grid.id - 1);  
  111.       }  
  112.       //如果棋子是在最右端,則右邊是空的,反之右邊存在棋子  
  113.       if ( grid.id % column_number != (column_number-1) )  
  114.       {  
  115.         ids.push(grid.id + 1);  
  116.       }  
  117.         
  118.       var totalGrid:int = grids.length;  
  119.         
  120.       for ( var i:uint = 0, len:uint = ids.length; i < len; i++)  
  121.       {  
  122.         var index:int = ids[i];  
  123.           
  124.         if (index <0 || index >= totalGrid) continue;  
  125.           
  126.         grid = grids[index];  
  127.         //上面或下面的棋子可能不存在,需要判斷  
  128.         if ( grid != null )  
  129.         {  
  130.           grid.doFlip();  
  131.         }  
  132.       }        
  133.       if ( isAllWhite() )  
  134.       {  
  135.         //game over  
  136.         gameOver();  
  137.       }  
  138.     }  
  139.       
  140.     private function gameOver():void  
  141.     {  
  142.         grid_container.removeEventListener(MouseEvent.CLICK, onClickHandler);  
  143.       game_tip.text = "順利過(guò)關(guān)!";  
  144.     }  
  145.       
  146.     private function isAllWhite():Boolean  
  147.     {  
  148.       var grid:Grid;  
  149.       for ( var i:uint = 0, len:uint = grids.length; i < len; i++)  
  150.       {  
  151.         grid = grids[i];  
  152.         if( grid.isWhite() == false )  
  153.         {  
  154.           return false;  
  155.         }  
  156.       }  
  157.       return true;  
  158.     }      
  159.   }    
  160. }

網(wǎng)站題目:AIR Android:編寫(xiě)主類(lèi)Main(2)
分享路徑:http://www.dlmjj.cn/article/dpgjjsd.html