lua實現一個2048小遊戲
阿新 • • 發佈:2018-12-31
用lua寫了個在consle上執行的2048,這裡簡單說下是如何實現的。(原始碼地址:http://download.csdn.net/detail/c_boy_lu/9393255)
1.實現一個簡單的遊戲迴圈
遊戲迴圈實際上是一個死迴圈,只有在退出遊戲的時候,終止迴圈。
2.遊戲中的邏輯 a. 玩法:遊戲開始的時候,會在棋盤上隨機產生一個可消除的元素,每次操作後,如果,棋盤上有空餘的位置,則產生一個新的可消除的元素。消除的規則是,玩家進行上下左右的操作,棋盤中的元素根據玩家的操作上下左右移動,同時,同一方向上相同的元素消除,組成一個新的元素。 b.邏輯:遊戲的邏輯分為三部分: 1)得到玩家發出的指令(上,下,左,右) 2)根據指令進行移動和消除 3)顯示當前棋盤的狀態 1)讀取玩家的輸入,得到玩家的操作: local direc = tonumber(io.read()):讀取玩家輸入的數字 local isUpdata = printInpuInfo(direc):輸出玩家的操作資訊,判斷是否進行更新(如果,玩家輸入的資訊是有效資訊,則進行操作,否則不進行操作)
2)這裡就是遊戲所有的邏輯了:根據方向進行移動,消除,建立新的元素:
3)顯示棋盤當前的狀態
- 初始化
- 更新
- sleep
print("=========2048=========") --main loop print("Direction:Up = 1") print("Direction:Down = 2") print("Direction:Left = 3") print("Direction:Right = 4") --init 初始化 createNewCell() show() while (true) do --control print("Please enter a direction:") local direc = tonumber(io.read()) local isUpdata = printInpuInfo(direc) if isUpdata then --logic updataLogic(direc) --show show() end --reset clean times local max = width * height for i = 1,max do cell_clean_times[i] = 0 end --sleep sleep(0.5) end
2.遊戲中的邏輯 a. 玩法:遊戲開始的時候,會在棋盤上隨機產生一個可消除的元素,每次操作後,如果,棋盤上有空餘的位置,則產生一個新的可消除的元素。消除的規則是,玩家進行上下左右的操作,棋盤中的元素根據玩家的操作上下左右移動,同時,同一方向上相同的元素消除,組成一個新的元素。 b.邏輯:遊戲的邏輯分為三部分: 1)得到玩家發出的指令(上,下,左,右) 2)根據指令進行移動和消除 3)顯示當前棋盤的狀態 1)讀取玩家的輸入,得到玩家的操作: local direc = tonumber(io.read()):讀取玩家輸入的數字 local isUpdata = printInpuInfo(direc):輸出玩家的操作資訊,判斷是否進行更新(如果,玩家輸入的資訊是有效資訊,則進行操作,否則不進行操作)
--邏輯更新 function updataLogic(direction) print("updata logic") --clean cell if direction == UP then moveUp() cleanUp() moveUp() elseif direction == DOWN then moveDown() cleanDown() moveDown() elseif direction == LEFT then moveLeft() cleanLeft() moveLeft() elseif direction == RIGHT then moveRight() cleanRight() moveRight() end --create new cell createNewCell() end
3)顯示棋盤當前的狀態
--顯示更新
function show()
print("updata show")
showChessBoard()
end
原始碼地址:http://download.csdn.net/detail/c_boy_lu/9393255