天天看點

scratch小遊戲2048

大家好久不見..這段時間太忙一直沒有時間碼字

scratch小遊戲2048
scratch小遊戲2048
scratch小遊戲2048

,讓大家久等了,今天給大家帶來的是scratch版的2048。這篇推文有點難,大家慢慢看,可以加我微信(cyz20092347)擷取源程式。廢話不多說,視訊見

是的,就是這樣,幾年前很火的小遊戲2048,遊戲的規則很簡單,你需要控制所有方塊向同一個方向運動,兩個相同數字方塊撞在一起之後合并成為他們的和,每次操作之後會随機生成一個2或者4,最終得到一個“2048”的方塊就算勝利了。

一、流程梳理

  1. 需要4*4的格子
  2. 開始時會有三個随機的數字(2、4)出現在不同的位置
  3. 按方向鍵控制對應的移動

格子這裡很簡單,不建議大家直接去使用網上的圖檔,因為後面數字的移動需要通過坐标去完成,隻需要通過畫筆畫出線條就行了,這個之前的五子棋已經講過啦,不會的可以去翻翻,我們将格子的大小設定為80。

scratch小遊戲2048

二、數字初始化

接下來我們就要讓數字随機的出現在螢幕中,但是這步需要解決三個問題:a、數字的造型

b、三個随機數字,随機為2、4

c、位置随機,且每一個數字位置不同

首先解決a問題,我們可以通過scratch的造型編輯添加數字造型。在添加時,需注意所有的方格大小一緻且角色中心位置保持一緻。且造型名改為“造型+數字”友善後面使用

scratch小遊戲2048
scratch小遊戲2048

接下來解決b問題數字随機範圍,因為最開始的數字隻會是2或4,那怎麼樣可以通過随機數得到呢,我們可以使用2*1到2的随機數,然後存到對應的清單中儲存,方面後面使用

scratch小遊戲2048

最後1個也就是問題c位置的随機且位置不重複,我們就需要将每一個數字的坐标記錄下來存到清單,然後判定清單中是否有重複:如果沒有,則添加進清單,換成合适造型移動到對應的位置,印章;如果重複則再重新添加新的随機位置

scratch小遊戲2048

三、方向移動控制

這裡邏輯比較複雜,以上按鍵為例:當我按上按鍵時,所有的數字會向上移動,但是肯定會有個先後順序,我們暫且規定,上方的數字先進行移動。那麼問題又來了,我怎麼确定數字所在位置的高低呢?那就需要對數列Y進行排序呢,由大到小進行排列。

scratch小遊戲2048

又因為數列Y表示的是格子的坐标,為了保證坐标的準确性,在修改數列Y時,也得依據數列Y的序号更改數列X及已存在坐标數列,和存儲數字的數列

scratch小遊戲2048

排序後接下來,就是對序号1的數字進行移動了,那麼此時還需要判定,是否數字已處于最上方1格:如果是則不移動,跳轉到序号2數字;如果不是則需要将數字擦除後移動到上一格。我們可以在目前角色造型裡在建立一個有着白色矩形的造型,這樣就可以遮蓋住數字。移動到上一個也很簡單,在原Y坐标的基礎上加80(格子大小),然後添加到對應的清單中,并保證清單順序不變。

scratch小遊戲2048

移動到上方後就可以顯示了嗎?不不,還需要判斷移動到的格子内是否有數字:如果有則繼續判斷數字是否一緻,如果沒有則印章

scratch小遊戲2048

那怎麼判斷數字是否一緻呢?一緻時,那麼會數字數列中會存在相同的數字,且相同數字的兩個序号對應的坐标也相同。那麼我們可以先找到

scratch小遊戲2048

我們判定的坐标,然後在找到和坐标相同數字的序号

scratch小遊戲2048

為什麼是第一個?因為我們是從Y的高低進行依次判定的,移到上方後碰到數字,那麼肯定是在序号在前。找到後再判定兩個序号對應的數字數列是否相同:相同則表示兩個數字可以相加然後印章,不同則需要回退到原來位置印章。

scratch小遊戲2048

數字相加時,需要将上方的數字改為

scratch小遊戲2048

,然後重新圖章,重新更改數字數列,删除下方數字對應的所有清單項

scratch小遊戲2048

回退時,需要恢複到原來的坐标位置,更改好之前的對應數列,換成對應造型,圖章

scratch小遊戲2048

四、新增數字

當數字移動後,就會有新的數字出來,但是此時也需要注意,數字大大小範圍,以及出現的位置,以及當數字有16個時,就不會有新的數字出現了。

好了,此篇推文就講到這了,更多的是幫大家梳理思路,大家不用照着我上圖檔寫,我有些程式子產品沒放全

scratch小遊戲2048

,如果大家對程式有疑問或者想擷取源程式可以加我微信交流哦,喜歡可以幫忙點個在看

scratch小遊戲2048

繼續閱讀