貪吃蛇的演算法分析(1) (轉)
貪吃蛇的演算法分析(1):namespace prefix = o ns = "urn:schemas--com::office" />
James @
貪吃蛇是一款非常經典的遊戲。它有很多演算法,這裡詳細分析一種比較優秀的演算法。
首先介紹下主要用到的七個類:
l WormMain:最主要的類,控制所有其它類的執行和銷燬。
l WormPit:處理鍵盤輸入事件並例項化Worm類和WormFood類的。
l Worm:抽象了貪吃蛇的屬性和動作
l WormFood:抽象了食物的屬性和動作
l Wormre:用來紀錄分數的類
l WormLink:抽象了蛇身上的一段,儲存了這段的座標、方向和所有狀態。
l WormException:處理異常類
基本概念介紹
節:一條蛇可以看成有許多正方形的“小格子”拼湊成,我把它稱作節。節是蛇身上最小的單位。
段:當許多節連成一條直線,我稱它為段。上圖的貪吃蛇只有一段,如果它拐彎就變成兩段。
連結串列:用來儲存每一段的狀態,連結串列的元素單位是段。且連結串列的最後一個元素表示蛇的頭部段。
座標系:MIDP中的座標以左上角那點為(0,0),向右則x遞增,向下則y遞增。
Worm類
一條完整的貪吃蛇是由一段一段組成的。連結串列中儲存的第一個元素是蛇的尾巴段,最後一個元素是蛇的頭部段。當蛇運動的時候,它頭部段增加一節而尾段減少一節。如果它吃到了食物,尾部段就不減少一節。也就是說,蛇是從頭部段開始長的。
下面的程式碼段顯示了Worm類儲存的各種屬性:
/* 貪吃蛇可能移動的方向 */
public final static byte DOWN = 2;
public final static byte LEFT = 4;
public final static byte RIGHT = 6;
public final static byte UP = 8;
// 貪吃蛇的當前方向
private byte currentDirection;
// 儲存貪吃蛇每一段的列表
private Vector wo= new Vector(5, 2);
// 是否需要狀態
private boolean needUpdate;
// 是否在運動中
private boolean moveOnNextUpdate;
// 是否吃到食物
private boolean hasEaten;
// 貪吃蛇的初始位置、長度和方向
private final static int INIT_X = 3;
private final static int INIT_Y = 8;
private final static int INIT_LEN = 8;
private final static byte INIT_DIR = RIGHT;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998954/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 貪吃蛇的演算法分析(3) (轉)演算法
- 貪吃蛇的演算法分析(4) (轉)演算法
- 貪吃蛇的演算法分析(2) (轉)演算法
- 貪吃蛇源程式 (轉)
- Shell寫的貪吃蛇遊戲(轉)遊戲
- 貪吃蛇jsJS
- 04 貪吃蛇
- 初試javascript :貪吃蛇啊 (轉)JavaScript
- 溫習資料演算法—貪吃蛇演算法
- Python:遊戲:貪吃蛇Python遊戲
- Java實現貪吃蛇Java
- 貪吃蛇c原始碼原始碼
- Python3 貪吃蛇Python
- python實現貪吃蛇Python
- jQuery 實現貪吃蛇遊戲jQuery遊戲
- C#貪吃蛇(WPF版)C#
- [譯] RxJS 遊戲之貪吃蛇JS遊戲
- OpenGL實現貪吃蛇程式碼
- C語言貪吃蛇原始碼C語言原始碼
- [原生JS][程式導向]貪吃蛇JS
- C語言實現桌面貪吃蛇C語言
- Python實現貪吃蛇大作戰Python
- js貪吃蛇遊戲程式碼例項JS遊戲
- canvas貪吃蛇遊戲程式碼例項Canvas遊戲
- 多執行緒的Python 教程--“貪吃蛇”執行緒Python
- 貪吃蛇大作戰JavaFx版完整原始碼Java原始碼
- javascript貪吃蛇小遊戲程式碼例項JavaScript遊戲
- html畫布製作貪吃蛇小遊戲HTML遊戲
- H5遊戲開發:貪吃蛇H5遊戲開發
- 自動玩貪吃蛇的小白痴機器人機器人
- canvas實現的貪吃蛇遊戲程式碼例項Canvas遊戲
- 基於51微控制器的貪吃蛇遊戲遊戲
- 用 Python 寫個貪吃蛇,保姆級教程!Python
- 開發Windows貪吃蛇遊戲——(一)前期準備Windows遊戲
- STM32最小系統板OLED貪吃蛇
- C語言小遊戲------貪吃蛇----小白專用C語言遊戲
- 手把手教你寫Android 貪吃蛇 遊戲Android遊戲
- Ubuntu下C語言實現貪吃蛇遊戲UbuntuC語言遊戲