日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
AIRAndroid:編寫主類Main(1)

編寫主類Main

創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元肥鄉(xiāng)做網(wǎng)站,已為上家服務(wù),為肥鄉(xiāng)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

接下來(lái)編寫主類Main的代碼。按照之前的設(shè)計(jì),主程序主要有以下兩個(gè)功能:

創(chuàng)建棋盤

處理用戶的交互動(dòng)作

下面先來(lái)實(shí)現(xiàn)***個(gè)功能。

1.創(chuàng)建棋盤

上一節(jié)使用了二維矩陣來(lái)描述地圖數(shù)據(jù),其實(shí)編寫代碼沒那么復(fù)雜,直接用一個(gè)二維數(shù)組就可以實(shí)現(xiàn)這個(gè)功能,代碼如下:

 
 
  1. var gameMap:Array = new Array();    
  2. //每一行用一維數(shù)組來(lái)表示  
  3. gameMap[0] = [BLACK, WHITE, WHITE, BLACK];
  4. gameMap[1] = [WHITE, BLACK, BLACK, WHITE];
  5. gameMap[2] = [WHITE, BLACK, BLACK, WHITE];
  6. gameMap[3] = [BLACK, WHITE, WHITE, BLACK];

BLACK和WHITE是兩個(gè)常量,這樣看起來(lái)更直觀。利用數(shù)組,正好將地圖上的信息全面展示出來(lái),從中可以看到每個(gè)棋子的初始狀態(tài)及在棋盤上的位置,創(chuàng)建棋盤的工作就變得簡(jiǎn)單多了,如代碼清單2-2所示。

代碼清單2-2 創(chuàng)建棋盤

 
 
  1. column_number = 4;
  2.  var rowCount:uint = gameMap.length;
  3.  var rowArray:Array;
  4.  var i:uint, len:uint;
  5.  var grid:Grid;
  6.  //棋子的間距
  7.  var space:int = 10;
  8.  //根據(jù)數(shù)組創(chuàng)建棋盤
  9.  for ( var row:uint = 0; row < rowCount; row++)
  10.  {
  11.          //獲取每一行的數(shù)據(jù)
  12.          rowArray = gameMap[row];
  13.          len = rowArray.length;
  14.          for ( i = 0; i < len; i++)
  15.          {
  16.                  //創(chuàng)建Grid,并賦予初始值。GRID_RADIUS常量定義了棋子的尺寸
  17.                  grid = new Grid(rowArray[i], GRID_RADIUS);
  18.                  //計(jì)算出棋子在棋盤上的編號(hào)
  19.                  grid.id = row * column_number + i;
  20.                  //設(shè)置棋子的坐標(biāo)
  21.                  grid.x = i * (GRID_RADIUS*2 + space);
  22.                  grid.y = row * (GRID_RADIUS*2 + space);
  23.                  //將棋子放在一個(gè)容器中,方便管理
  24.                  grid_container.addChild(grid);
  25.                  //按照編號(hào)將棋子保存在數(shù)組中,待以后查找
  26.                  grids[grid.id] = grid;
  27.          }
  28.  }

在創(chuàng)建棋盤時(shí),使用數(shù)組grids保存了對(duì)所有棋子的引用,且棋子在數(shù)組中的索引和棋子在棋盤上的編號(hào)一一對(duì)應(yīng),這樣在查找周邊棋子時(shí),只需要計(jì)算出周邊棋子的id即可。

棋盤創(chuàng)建完畢后,接下來(lái)處理用戶交互動(dòng)作。

2.處理用戶交互動(dòng)作

由于所有的棋子都被放在同一個(gè)容器中,因此可以只對(duì)容器添加監(jiān)聽器,而不用監(jiān)聽每個(gè)棋子的鼠標(biāo)事件,如代碼清單2-3所示。

代碼清單2-3 處理用戶交互動(dòng)作

 
 
  1. grid_container.addEventListener(MouseEvent.CLICK, onClickHandler);
  2.  private function onClickHandler(e:MouseEvent):void
  3.  {
  4.          //由于沒有其他地方監(jiān)聽對(duì)象的鼠標(biāo)事件,因此中止冒泡事件   
  5.          e.stopImmediatePropagation();  
  6.          var grid:Grid = e.target as Grid;
  7.          //只有單擊對(duì)象是棋子才執(zhí)行后面的代碼
  8.          if ( grid == null) return;
  9.          //翻轉(zhuǎn)當(dāng)前單擊的棋子
  10.          grid.doFlip();
  11.          //翻轉(zhuǎn)周圍的四個(gè)棋子,用一個(gè)臨時(shí)數(shù)組存放周圍棋子的id
  12.          var ids:Array = new Array(grid.id - column_number, grid.id + column_number);
  13.          //如果棋子是在最左端,則左邊是空的,反之左邊存在棋子
  14.          if ( grid.id % column_number != 0 )
  15.          {
  16.                  ids.push(grid.id - 1);
  17.          }
  18.          //如果棋子是在最右端,則右邊是空的,反之右邊存在棋子
  19.          if ( grid.id % column_number != (column_number-1) )
  20.          {
  21.                  ids.push(grid.id + 1);
  22.          }
  23.          //記錄下棋子的總數(shù)
  24.          var totalGrid:int = grids.length;
  25.          //循環(huán)數(shù)組,翻轉(zhuǎn)周圍棋子      
  26.          for ( var i:uint = 0, len:uint = ids.length; i < len; i++)
  27.          {
  28.                  var index:int = ids[i];
  29.                  //上面或下面的棋子可能不存在,需要判斷,如果超過(guò)數(shù)組界限,則不存在
  30.                  if (index <0 || index >= totalGrid) continue;
  31.                  grid = grids[index];
  32.                  if ( grid != null )
  33.                  {
  34.                  grid.doFlip();
  35.                  }
  36.            }
  37.            //處理完棋子的翻轉(zhuǎn)后,***檢查當(dāng)前棋子是不是都變白了    
  38.            if ( isAllWhite() )
  39.            {
  40.                  //game over
  41.                  gameOver();
  42.            }
  43.  }

新聞名稱:AIRAndroid:編寫主類Main(1)
分享URL:http://www.5511xx.com/article/cdgcgph.html