2048遊戲的邏輯

2021-06-28 01:34:01 字數 1039 閱讀 9488

今天從極客學院學習了一下android專案開發實戰-2048遊戲,寫下學習筆記。

2048遊戲是乙個4*4的方格布局,裡面隨機出現2的倍數如果同一行兩個挨著的方格數字相同可相加的這麼乙個遊戲。

首先先建立乙個4*4的方格,用的gridlayout,設定4列,初始化16個方格加到view裡,

private void addcards(int cardwidth, int cardheight) 

}}

在16個方格中隨機給其中2個賦值2或者4,2和4的出現比率是9:1。

private void addrandomnum() 

}point p = emptypoints.remove((int) (math.random() * emptypoints.size()));

cards[p.x][p.y].setnum(math.random() > 0.1 ? 2 : 4);

}

方格移動相加,分四種情況,分別是:向左,向右,向上,向下。

以向左為例子,當我們向左滑動,

假設第一行第四個格仔有數字為2,它左邊的三個格仔是空,那就意味著這個格仔可以移動到第一行最左邊的那個格仔,這個樣就需要走3步,0←1←2←3,從位置3到2的時候,我們假設2的是,那麼3的座標就是,那麼我們就設定為2並且清空,這樣原來的變成,3步就可以走到1的位置;

假設第一行的第三個格仔和第四個格仔都為2,第乙個和第二個格仔是空,還是以0,1,2,3為第一到第四個格仔,2移動到0,3移動到1,這時候就該相加了,這也是x--出現的意義。如果沒有x--,那麼我們的操作呈現的將是格仔0上為2,格仔1上為2,需要再滑一下才會相加。因為我們的x是從左往右遍歷的,如果沒有x--,就沒有辦法判斷右邊那個店是不是可以相加。其他三個方向也是這個道理。

for (int y = 0; y < 4; y++)  else if (cards[x][y].equals(cards[x1][y])) 

break;}}

}}

自動2048遊戲

前段時間公司開發了2048小遊戲,看見排行榜都是幾萬分數,奈何手殘就編寫了個程式來自動刷,使用指令碼語言編寫。思路為識別各個數字的顏色獲取數字位置,再計算上向左右最大分數,選其最大分數移動,結果測試最大分數也就6000左右。後來發現2048也是需要策略的,便從github選擇了2048ai,go版本...

遊戲原始碼2048

此為遊戲 並無介面 2048 include include include include int code 4 4 遊戲中的16個格仔 int temp 5 中間變數 int move 0 移動次數 int score 0 分數 void print void 顯示遊戲介面 else print...

2048遊戲開發(一)

2017 7 24 2048遊戲開發 一 完成複習時間 2017 7 25 0點 學習的知識 1 陣列 有序 資料相同的資料資料集合。儲存型別 auto,static 靜態儲存 陣列長度只能是常量!2 p 用來列印位址 3 sizeof arry sizeof arry 0 總長度 單個元素長度 陣...