2048小遊戲編寫思路

2021-10-07 09:59:14 字數 1650 閱讀 5295

有點難

關鍵知識點

下面請各位讀者先學習一下該遊戲中涉及到的幾個關鍵知識點,有了這些必備條件,我們才好講解 2048 遊戲的設計思路。

1) 改變文字顏色

2048小遊戲的整體的設計思路是:

遊戲介面初始化,共有 4 行 4 列,總計 16 個位置,遊戲開始時,在任意的兩個位置上,隨機產生數字 2 或 4(產生 2 的機率更大一些);

玩家可通過 w\a\s\d 或者鍵盤方向鍵來控制所有數字的移動,遊戲過程中,要符合 2048 遊戲的基本規則;

在2048 遊戲中,數字移動和合併為遊戲的核心,在遊戲過程中,無論數字向那個方向移動,其實現所用的演算法都是相同的。

這裡我們用 「左移」 操作來給大家講解演算法的實現過程。

如上圖所示,若這種情況下玩家進行「左移」操作,我們首先拿最後一行來具體分析原始碼中的實現過程(左移執行 move_left()函式)。

首先,我們用變數 k 表示座標為 (4,1) 位置存放的資料,然後用變數 i 從(4,2)開始遍歷,到有數字的位置就停止,一直到此行的最後位置(4,4),如下圖所示:

在 i 移動的過程中,我們統一做以下操作:

如果 k 指向位置沒有數字:則將 i 位置的數字直接移動到 k 所指向的位置,同時消除 i 位置處的數字。k位置不動,i 向後移動;

採用以上規則,第一次執行,k=2,同時 i=2,符合第 1 條,做相應改變之後,如下圖所示:

繼續執行,此時 k 位置無數字,i=4,符合第 3條,改變之後,如下圖所示:

此時,由於 i 超出了指定的遍歷區間,所以此次移動任務結束。以上是第 4 行移動的過程。

同理可見,第 2 行中,i 可從座標(2,2)位置向後移動,但是一直沒有數字,所以不需任何移動;

第 3 行中,第一次執行,k 處無數字, i 指向的是最後的數字 4,按照第 3 條規則,直接將 4 移動到 k 處,此行移動就結束了。

所以,在實現左移操作的實現時,我們只需要遍歷每一行,在每行的遍歷過程中,巢狀遍歷每乙個非 0 數,根據以上規則,做相應移動即可。

舉一反三,上移、下移、右移,都是如此實現。具體實現過程,可見源**中 move_left()、move_right()、move_up()、move_down() 函式的**實現。

遊戲結束的判斷標誌

我們設計的 2048 遊戲,由於其並不是產生 2048 即為結束標誌,所以對於此遊戲來說,玩家甚至可合併處 4096 、8192、16384 等。

遊戲一旦開始,唯一的正常結束標誌就是:16 個格仔全部被數字占用,且無論做哪種方向的移動,數字之間都無法完成合併,此時,遊戲無法繼續,視為結束的標誌。

所以,在遊戲的執行過程中,我們只需要判斷以下兩種狀態:

基於vue編寫的2048小遊戲

具體幹了件什麼事情 要實現如圖所示的小遊戲。規則是有16個格仔,初始時會有兩個格仔上安放了兩個數字,每次可以選擇上下左右其中乙個方向去滑動,每滑動一次,所有的數字方塊都會往滑動的方向靠攏外,系統也會在空白的地方隨即出現乙個數字方塊,相同數字的方塊在靠攏,相撞時會相加。不斷的疊加最終拼湊出8192這個...

js實現2048小遊戲

頁面class hidden id end id endspan id table colspan 4 id s1 id s2 id s3 id s4 id s5 id s6 id s7 id s8 id s9 id s10 id s11 id s12 id s13 id s14 id s15 id...

小專案 2048小遊戲

很久之前,在學完c語言的時候,老師留下了乙個作業,問大家有沒有玩過2048,讓自己做乙個2048的小專案,然後就各種查閱資料,自己做了乙個小小的2048小遊戲,用w s a d實現上下左右的移動,下面是 實現部分。實現 include include include includeint code ...