1. 程式人生 > >lua實現一個2048小遊戲

lua實現一個2048小遊戲

用lua寫了個在consle上執行的2048,這裡簡單說下是如何實現的。(原始碼地址:http://download.csdn.net/detail/c_boy_lu/9393255 1.實現一個簡單的遊戲迴圈 遊戲迴圈實際上是一個死迴圈,只有在退出遊戲的時候,終止迴圈。
  • 初始化
  • 更新    
               邏輯更新                    顯示更新
  • 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):輸出玩家的操作資訊,判斷是否進行更新(如果,玩家輸入的資訊是有效資訊,則進行操作,否則不進行操作)
2)這裡就是遊戲所有的邏輯了:根據方向進行移動,消除,建立新的元素:
--邏輯更新
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