初始化遊戲狀態資料
初始化遊戲狀態資料
為了初始化遊戲狀態,程式需要建立一個Piece[][]陣列,為此程式定義一個AbstractBoard抽象類,該抽象類的程式碼如下。
程式清單:codes\18\Link\src\org\crazyit\link\board\AbstractBoard.java
public abstract class AbstractBoard
{
// 定義一個抽象方法, 讓子類去實現
protected abstract List
Piece[][] pieces);
public Piece[][] create(GameConf config)
{
// 建立Piece[][]陣列
Piece[][] pieces = new Piece[config.getXSize()][config.getYSize()];
// 返回非空的Piece集合, 該集合由子類去建立
List
// 根據非空Piece物件的集合的大小來取圖片
List
notNullPieces.size());
// 所有圖片的寬、高都是相同的
int imageWidth = playImages.get(0).getImage().getWidth();
int imageHeight = playImages.get(0).getImage().getHeight();
// 遍歷非空的Piece集合
for (int i = 0; i < notNullPieces.size(); i++)
{
// 依次獲取每個Piece物件
Piece piece = notNullPieces.get(i);
piece.setImage(playImages.get(i));
// 計算每個方塊左上角的X、Y座標
piece.setBeginX(piece.getIndexX() * imageWidth
+ config.getBeginImageX());
piece.setBeginY(piece.getIndexY() * imageHeight
+ config.getBeginImageY());
// 將該方塊物件放入方塊陣列的相應位置處
pieces[piece.getIndexX()][piece.getIndexY()] = piece;
}
return pieces;
}
}
上面的程式中粗體字程式碼塊用於初始化Piece[][]陣列,初始化程式碼負責為各非空的Piece元素的beginX、beginY、image屬性賦值,其中beginX、beginY根據該方塊在二維陣列中的位置動態計算得到。
上面的程式中①號程式碼呼叫了createPieces(config,
pieces)抽象方法來建立一個List
由於連連看遊戲的初始狀態可能有很多種——比如橫向分佈的方塊、豎向分佈的方塊、矩陣排列的方塊、隨機分佈的方塊等,該程式為了考慮以後的擴充套件性,此處只是採用了模板模式:定義AbstractBoard抽象基類來完成通用的程式碼,而暫時無法確定、需要子類實現的方法定義成createPieces(GameConf config, Piece[][] pieces)抽象方法。
上面的程式中還用到了一個ImageUtil工具類,它的作用是自動搜尋/res/drawable-mdpi目錄下的圖片,並根據需要隨機地讀取該目錄下的圖片。後面會詳細介紹該工具類的用法。
本文節選自《瘋狂Android講義(含CD光碟1張)》一書。
圖書詳細資訊:http://space.itpub.net/?uid-13164110-action-viewspace-itemid-702318
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-703350/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript狀態資料JavaScript
- 理解資料狀態管理
- oracle資料庫狀態Oracle資料庫
- 資料庫訂單狀態資料庫
- 【YashanDB資料庫】yasboot查詢資料庫狀態時顯示資料庫狀態為off資料庫boot
- Oracle資料庫的靜默狀態和掛起狀態Oracle資料庫
- openguass 資料庫狀態查詢資料庫
- oracle資料庫例項狀態Oracle資料庫
- Flutter資料&狀態管理之[- InheritedWidget -]Flutter
- Oracle DG資料庫狀態轉換Oracle資料庫
- Vue同構(三): 狀態與資料Vue
- 物料主資料的維護狀態
- 資料庫啟動的不同狀態資料庫
- 檢視映象資料庫的狀態資料庫
- 3.4.2 將資料庫置於 Quiesced 狀態資料庫UI
- 達夢8資料庫的狀態模式資料庫模式
- oracle資料庫的靜默(Quiesce)狀態Oracle資料庫UI
- 前端提交資料後http狀態碼400前端HTTP
- HarmonyOS-基礎之狀態資料共享
- shutdown資料庫後提示資料庫處於running狀態資料庫
- Flutter - 資料共享,通訊,狀態管理 - 02 - ValueNotifierFlutter
- 主備資料庫狀態手工比對(一)資料庫
- 主備資料庫狀態手工比對(二)資料庫
- 資料庫共有三種狀態:quiesce、resrict、suspend資料庫UI
- 在INDEX 處於UNABLE 狀態下插入資料Index
- 如何檢視資料庫當前的狀態?資料庫
- oracle資料庫執行狀態監控SHELLOracle資料庫
- Oracle資料庫檢視使用者狀態Oracle資料庫
- Oracle 資料庫的各種狀態和模式Oracle資料庫模式
- Flutter - 資料共享,通訊,狀態管理 - 01 - InheritedWidgetFlutter
- 在 Laravel 的資料庫模型中使用狀態模式Laravel資料庫模型模式
- GBase8s 資料庫檢視狀態資料庫
- 達夢資料庫例項的狀態和模式資料庫模式
- 資料庫的三種狀態RESTRICT、QUIESCE和SUSPEND資料庫RESTUI
- 啟動、關閉與資料庫的特殊狀態資料庫
- 電子郵件營銷狀態–資料資訊圖
- 【DUAL】資料庫nomount狀態下DUAL的內容資料庫
- 動態陣列ArrayList的初始化,新增資料,與遍歷陣列