亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

lua實現的2048小游戲

2024-07-21 23:04:24
字體:
來源:轉載
供稿:網友

lua實現的2048小游戲,只要可以運行lua腳本的環境下都可以玩。

 

復制代碼 代碼如下:

--[[=============================================================================
#     FileName: 2048.lua
#         Desc: lua console 2048
#       Author: hanxi
#        Email: hanxi.info@gmail.com
#     HomePage: http://www.hanxi.info
#      Version: 0.0.1
#   LastChange: 2014-04-28 11:05:09
#      History:
=============================================================================]]
local function initGrid(m,n)
    local grid = {}
    for i=1,m do
        if not grid[i] then
            grid[i] = {}
        end
        for j=1,n do
            grid[i][j] = 0
        end
    end
    return grid
end
local function printGrid(grid)
    local celllen = 8  -- 每個格子占用字符數
    local gridStrLines = {}
    table.insert(gridStrLines,"-------------------------------------")
    for i,row in ipairs(grid) do
        local line = {}
        for _,num in ipairs(row) do
            if num==0 then
                local pres = ""
                for tmp=1,celllen do
                    pres = pres .. " "
                end
                local s = string.format("%s",pres)
                table.insert(line,s)
            else
                local s = tostring(num)
                local l = string.len(s)
                local l = (celllen-l)/2
                local prel = math.floor(l)
                local sufl = math.ceil(l)
                local pres = ""
                for tmp=1,prel do
                    pres = pres .. " "
                end
                local sufs = pres
                if sufl>prel then
                    sufs = pres.. " "
                end
                local s = string.format("%s%s%s",pres,s,sufs)
                table.insert(line,s)
            end
        end
        local line = table.concat(line,"|")
        line = "|" .. line .. "|"
        table.insert(gridStrLines,line)
        table.insert(gridStrLines,"-------------------------------------")
    end
    local gridStr = table.concat(gridStrLines,"/n")
    print(gridStr)
end
local function randomGrid(grid)
    local m = #grid
    local n = #grid[1]
    for i=1,m do
        for j=1,n do
            local r = math.random(1,5)
            local num = 2^r
            grid[i][j] = num
        end
    end
end
local function getRandomZeroPos(grid)
    local m = #grid
    local n = #grid[1]
    local zeros = {}
    for i=1,m do
        for j=1,n do
            if grid[i][j]==0 then
                table.insert(zeros,{i=i,j=j})
            end
        end
    end
    if #zeros>0 then
        local r = math.random(1,#zeros)
        return zeros[r].i,zeros[r].j
    end
end
local function randomNum(grid)
    local i,j = getRandomZeroPos(grid)
    if i and j then
        local r = math.random()
        if r<0.9 then
            grid[i][j] = 2
        else
            grid[i][j] = 4
        end
        return i,j
    end
end
local function moveLeft(grid)
    print("==============moveLeft===============")
    local m = #grid
    local n = #grid[1]
    for i=1,m do
        local line = {}
        for j=1,n do
            if grid[i][j]~=0 then
                table.insert(line,grid[i][j])
            end
        end
        local k=#line
        for j=1,n do
            if j<=k then
                grid[i][j] = line[j]
            else
                grid[i][j] = 0
            end
        end
        for j=1,k-1 do
            if grid[i][j]==grid[i][j+1] then
                grid[i][j+1] = grid[i][j] + grid[i][j+1]
                for x=j,n-1 do
                    grid[i][x] = grid[i][x+1]
                end
                grid[i][n] = 0
            end           
        end
    end
end
local function moveRight(grid)
    print("==============moveRight==============")
    local m = #grid
    local n = #grid[1]
    for i=1,m do
        local line = {}
        for j=n,1,-1 do
            if grid[i][j]~=0 then
                table.insert(line,grid[i][j])
            end
        end
        local k = #line
        for j=n,1,-1 do
            if n-j+1<=k then
                grid[i][j] = line[n-j+1]
            else
                grid[i][j] = 0
            end
        end
        for j=n,n-k+2,-1 do
            if grid[i][j]==grid[i][j-1] then
                grid[i][j-1] = grid[i][j] + grid[i][j-1]
                for x=j,2,-1 do
                    grid[i][x] = grid[i][x-1]
                end
                grid[i][1] = 0
            end
        end
    end
end
local function moveUp(grid)
    print("===============moveUp================")
    local m = #grid
    local n = #grid[1]
    for j=1,n do
        local line = {}
        for i=1,m do
            if grid[i][j]~=0 then
                table.insert(line,grid[i][j])
            end
        end
        local k = #line
        for i=1,m do
            if i<=k then
                grid[i][j] = line[i]
            else
                grid[i][j] = 0
            end
        end
        for i=1,k-1 do
            if grid[i][j]==grid[i+1][j] then
                grid[i+1][j] = grid[i][j] + grid[i+1][j]
                for x=i,m-1 do
                    grid[x][j] = grid[x+1][j]
                end
                grid[m][j] = 0
            end           
        end
    end
end
local function moveDown(grid)
    print("==============moveDown===============")
    local m = #grid
    local n = #grid[1]
    for j=1,n do
        local line = {}
        for i=m,1,-1 do
            if grid[i][j]~=0 then
                table.insert(line,grid[i][j])
            end
        end
        local k = #line
        for i=m,1,-1 do
            if m-i+1<=k then
                grid[i][j] = line[m-i+1]
            else
                grid[i][j] = 0
            end
        end
        for i=m,m-k+2,-1 do
            if grid[i][j]==grid[i-1][j] then
                grid[i-1][j] = grid[i][j] + grid[i-1][j]
                for x=i,2,-1 do
                    grid[x][j] = grid[x-1][j]
                end
                grid[1][j] = 0
            end
        end
    end
end
local function canMove(grid)
    local m = #grid
    local n = #grid[1]
    for i=1,m do
        for j=1,n do
            if grid[i][j]==0 then
                return true
            end
            if (i<m and j<n)
            and (grid[i][j]==grid[i][j+1]
                or grid[i][j]==grid[i+1][j]) then
                return true
            end
        end
    end
    return false
end
local function main()
    local grid = initGrid(4,4)
    randomNum(grid)
    printGrid(grid)
    io.write("next step 'a'[←],'w'[↑],'s'[↓],'d'[→],'q'[exit] >> ")
    local input = io.read()
    while input~="q" do
        if input=="a" or input=="w" or input=="s" or input=="d" then
            if input=="a" then
                moveLeft(grid)
            elseif input=="w" then
                moveUp(grid)
            elseif input=="s" then
                moveDown(grid)
            elseif input=="d" then
                moveRight(grid)
            end
            randomNum(grid)
            printGrid(grid)
        else
            print("error input. please input 'a'[←] or 'w'[↑] or 's'[↓] or 'd'[→] or 'q'[exit]")
        end
        io.write("next step 'a'[←],'w'[↑],'s'[↓],'d'[→],'q'[exit] >> ")
        input = io.read()
    end
end
main()

 

以上就是本文所述的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
51色欧美片视频在线观看| 日韩在线观看免费网站| 成人观看高清在线观看免费| 日韩免费观看视频| 日韩小视频在线| 成人在线精品视频| 亚洲偷欧美偷国内偷| 久久亚洲成人精品| 性欧美亚洲xxxx乳在线观看| 日韩一区二区福利| 国产精品九九久久久久久久| 69av视频在线播放| 亚洲欧美一区二区三区情侣bbw| 日韩av色在线| 亚洲欧美另类自拍| 国产精品mp4| www.日韩av.com| 国产ts人妖一区二区三区| 日韩欧美在线视频免费观看| 国产女人18毛片水18精品| 欧美在线视频免费| 欧美激情一区二区三区久久久| 亚洲另类xxxx| 亚洲欧洲在线观看| 青青久久aⅴ北条麻妃| 性色av一区二区三区免费| 国产有码一区二区| 亚洲天堂开心观看| 福利一区福利二区微拍刺激| 国产精品男人的天堂| 欧美激情视频一区二区| 国产不卡av在线免费观看| 国产欧美一区二区三区视频| 日韩在线一区二区三区免费视频| 久久夜精品va视频免费观看| 欧美日韩aaaa| 久久这里只有精品99| 亚洲一区久久久| 欧美精品www在线观看| 爱福利视频一区| 久久精品国产亚洲7777| 日韩有码在线电影| 欧洲永久精品大片ww免费漫画| 欧美日韩另类字幕中文| 亚洲午夜国产成人av电影男同| 亚洲视频网站在线观看| 国产精品27p| 色偷偷噜噜噜亚洲男人的天堂| 国产精品久久久久久久7电影| 国产原创欧美精品| 国产精品夜色7777狼人| 国产精品三级久久久久久电影| 国产亚洲精品va在线观看| 欧美日韩激情网| 91wwwcom在线观看| 成人免费淫片aa视频免费| 国产精品999999| 国产精品白丝av嫩草影院| 国产一区二区三区四区福利| 91久久久精品| 国内精品久久影院| 国内精品久久影院| 欧美日韩亚洲精品内裤| 日韩在线视频网站| 欧美激情一区二区三区成人| 日韩欧美亚洲国产一区| 亚洲免费中文字幕| 午夜精品久久久久久99热| 亚洲毛茸茸少妇高潮呻吟| 国产精品96久久久久久又黄又硬| 亚洲网站在线看| 亚洲黄页视频免费观看| 欧洲精品毛片网站| 97精品免费视频| 亚洲高清福利视频| 精品成人av一区| 亚洲色在线视频| 韩国国内大量揄拍精品视频| 亚洲精品少妇网址| 欧美做受高潮1| 日韩欧美精品在线观看| 中文字幕亚洲一区二区三区| 日韩精品www| 中文字幕日韩欧美| 日韩av在线影视| 亚洲欧美在线磁力| 亚洲欧美另类中文字幕| 亚洲精品久久久久久久久| 久久综合国产精品台湾中文娱乐网| 国产精品亚洲综合天堂夜夜| 亚洲精品一区二区网址| 日本国产高清不卡| 国产欧美日韩免费看aⅴ视频| 国产精品久久久久77777| www.欧美精品| 国产欧美日韩最新| 亚洲欧美三级在线| 国产精品日韩在线播放| 九色91av视频| 揄拍成人国产精品视频| www欧美xxxx| 久久视频这里只有精品| 久久久精品久久久| 欧美激情一区二区三级高清视频| 色综合导航网站| 日韩av资源在线播放| 日本免费一区二区三区视频观看| 最近2019中文字幕第三页视频| 国产成人高潮免费观看精品| 欧美极品在线播放| 亚洲有声小说3d| 一夜七次郎国产精品亚洲| 欧美性猛交丰臀xxxxx网站| 国产精品视频地址| 成人福利免费观看| 久久久久久免费精品| 青青草国产精品一区二区| 久久精品国产96久久久香蕉| 欧美成人手机在线| 两个人的视频www国产精品| 91在线观看免费网站| 日韩中文字幕不卡视频| 日韩成人性视频| 在线日韩欧美视频| 亚洲色图狂野欧美| 欧美裸体男粗大视频在线观看| 欧美激情网站在线观看| 日韩一级裸体免费视频| 久久久91精品| 国产91av在线| 日本久久久久久久| 亚洲午夜激情免费视频| 性色av一区二区三区免费| 久久天天躁狠狠躁夜夜躁| 欧美成人激情在线| 国产精品美女主播| 狠狠躁夜夜躁久久躁别揉| 欧美日韩国产在线播放| 久久久亚洲精品视频| 久热99视频在线观看| 精品一区二区三区四区在线| 45www国产精品网站| 成人亚洲欧美一区二区三区| 亚洲人成亚洲人成在线观看| 日韩美女在线观看| 日本精品视频网站| 中文.日本.精品| 这里只有精品视频在线| 亚洲一级黄色片| 亚洲无线码在线一区观看| 国产精品福利无圣光在线一区| 亚洲性猛交xxxxwww| 日韩电视剧免费观看网站| 亚洲精品一二区| 亚洲国产精品热久久| 国产精品美女久久久久av超清| 色悠悠久久88| 国内外成人免费激情在线视频网站| 中文字幕日韩电影| 国产成人精品免高潮费视频| 7m第一福利500精品视频| 九九热在线精品视频| 国产www精品| 免费97视频在线精品国自产拍|