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

首頁(yè) > 開發(fā) > 綜合 > 正文

lua+love2d制作的2048游戲

2024-07-21 23:04:24
字體:
供稿:網(wǎng)友

使用lua和love2d編寫的pc版2048游戲,適用于linux和windows平臺(tái)。依賴love2d游戲引擎,love2d需0.9及以上版本。

core.lua

 

復(fù)制代碼 代碼如下:

core = {}
core.block = {}
core.score = 0
core.best = 0
love.filesystem.setIdentity("2048")
local function get_best()
    if not love.filesystem.exists("best") then
        core.best = 0
        return
    end
    core.best = love.filesystem.read("best")
    core.best = tonumber(core.best)
end
function core.initial()
    core.block = {}
    local pos1 = love.math.random(1, 16)
    local pos2
    while true do
        pos2 = love.math.random(1, 16)
        if pos2 ~= pos1 then break end
    end
    local val
    val = love.math.random()
    if val < 0.8 then val = 2 else val = 4 end
    core.block[pos1] = val
    val = love.math.random()
    if val < 0.8 then val = 2 else val = 4 end
    core.block[pos2] = val
    core.score = 0
end
function core.set_best()
    if core.score > core.best then
        core.best = core.score
        local ret, err = love.filesystem.write("best", core.best)
    end
end
function core.tblclone(t1, num)
    local t2 = {}
    for i = 1, num do
        t2[i] = t1[i]
    end
    return t2
end
function core.isfull(testtbl)
    local block
    if testtbl then block = testtbl else block = core.block end
    for i = 1, 16 do
        if not block[i] then return false end
    end
    return true
end
local function combine(lstart, lend, lstep, rstart, rend, rstep, flag, testtbl)
    local index
    local tflag, block
    if testtbl then
        tflag = true
        block = testtbl
    else
        block = core.block
    end
    local cflag = false
    for i = lstart, lend, lstep do
        for j = rstart, rend, rstep do
            if flag == "up" then index = (i - 1) * 4 + j
            elseif flag == "down" then index = (i + 1) * 4 + j
            elseif flag == "left" then index = i * 4 + j - 1
            else index = i * 4 + j + 1 end
            if block[index] and block[i * 4 + j] and
            block[index] == block[i * 4 + j] and
            block[index] < 2048 then
                cflag = true
                if tflag then return cflag end
                block[index] = 2 * block[i * 4 + j]
                block[i * 4 + j] = nil
                core.score = core.score + block[index]
            end
        end
    end
    return cflag
end
local function move(lstart, lend, lstep, rstart, rend, rstep, flag)
    local mflag = false
    local index, kstart, kend, kstep
    for i = lstart, lend, lstep do
        for j = rstart, rend, rstep do
            if flag == "up" then
                kstart = 0
                kend = i - 1
                kstep = 1
            elseif flag == "down" then
                kstart = 3
                kend = i + 1
                kstep = -1
            elseif flag == "left" then
                kstart = 1
                kend = j - 1
                kstep = 1
            else
                kstart = 4
                kend = j + 1
                kstep = -1
            end
            for k = kstart, kend, kstep do
                if flag == "up" or flag == "down" then index = k * 4 + j
                else index = i * 4 + k end
                if not core.block[index] and core.block[i * 4 + j] then
                    core.block[index] = core.block[i * 4 + j]
                    core.block[i * 4 + j] = nil
                    mflag = true
                    break
                end
            end
        end
    end
    return mflag
end
local function do_tsk(lstart, lend, lstep, rstart, rend, rstep, flag, testtbl)
    if testtbl then return combine(lstart, lend, lstep, rstart, rend, rstep, flag, testtbl) end
    local mret = move(lstart, lend, lstep, rstart, rend, rstep, flag)
    local cret = combine(lstart, lend, lstep, rstart, rend, rstep, flag)
    if not mret and not cret then return false end
    core.score = core.score + 1
    move(lstart, lend, lstep, rstart, rend, rstep, flag)
    return true
end
function core.up_move(testtbl)
    return do_tsk(1, 3, 1, 1, 4, 1, "up", testtbl)
end
function core.down_move(testtbl)
    return do_tsk(2, 0, -1, 1, 4, 1,"down", testtbl)
end
function core.left_move(testtbl)
    return do_tsk(0, 3, 1, 2, 4, 1, "left", testtbl)
end
function core.right_move(testtbl)
    return do_tsk(0, 3, 1, 3, 1, -1, "right", testtbl)
end
function core.new_block()
    local val = love.math.random()
    if val < 0.8 then val = 2 else val = 4 end
    local empty_tbl = {}
    for i = 1, 16 do
        if not core.block[i] then
            table.insert(empty_tbl, i)
        end
    end
    if #empty_tbl == 1 then
        return {index = empty_tbl[1], value = val}
    end
    local pos = love.math.random(1, #empty_tbl)
    return {index = empty_tbl[pos], value = val}
end
get_best()
return core

 

main.lua

 

復(fù)制代碼 代碼如下:

local core = require("core")
local block_pic = {}
local bk
local over_flag = false
local new_block = {flag = false}
local wH    --window height
local wW    --window weight
local bW    --block width
local startpos = {}
local delay = 0
function love.load()
    love.window.setFullscreen()
    wH = love.window.getHeight()
    wW = love.window.getWidth()
    bW = 0.8 * wH / 4
    bk = love.graphics.newImage("src/bk.jpg")
    for i = 1, 11 do
        block_pic[tostring(math.pow(2,i))] = love.graphics.newImage("src/"..tostring(math.pow(2,i))..".PNG")
    end
    love.graphics.setBackgroundColor(255, 255, 255)
    love.graphics.setNewFont(24)
    love.graphics.setColor(255, 255, 255)
    core.initial()
end
local function draw_block(index, value)
    local line = math.modf((index - 1)/4)
    local row = (index - 1) % 4
    local pic_index = tostring(value)
    love.graphics.draw(block_pic[pic_index], 0.1 * wH + row * bW, 0.1 * wH + line * bW, 0, bW/block_pic[pic_index]:getWidth(), bW/block_pic[pic_index]:getHeight())
end
function love.draw()
    local scorestr = "SCORE:/n"..core.score.."/nBEST:/n"..core.best
    love.graphics.draw(bk, 0, 0, 0, wW/bk:getWidth(), wH/bk:getHeight())
    love.graphics.setColor(255, 255, 255)
    love.graphics.rectangle("line", 0.1 * wH, 0.1 * wH, 0.8 * wH, 0.8 * wH)
    for i = 1, 16 do
        if core.block[i] then
            draw_block(i, core.block[i])
        end
    end
    if new_block.flag then
        if delay < 10 then delay = delay + 1
        else
            draw_block(new_block.index, new_block.value)
            core.block[new_block.index] = new_block.value
            new_block.flag = false
            delay = 0
        end
    end
    love.graphics.print(scorestr, wH, wH * 0.1)
    if over_flag then
        love.graphics.setColor(0, 0, 255)
        love.graphics.rectangle("fill", 0.25 * wW, 0.25 * wH, 0.5 * wW, 0.5 * wH)
        love.graphics.setColor(255,255,255)
        love.graphics.print(scorestr, 0.45 * wW, 0.45 * wH)
    end
end
function love.mousepressed(x, y, button)
    if button == 'l' then
        startpos.x = x
        startpos.y = y
    end
end
function love.mousereleased(x, y, button)
    if button == 'l' then
        if over_flag then
            over_flag = false
            core.initial()
            return
        end
        local x_dis = x - startpos.x
        local y_dis = y - startpos.y
        local ret
        if y_dis < 0 and math.abs(y_dis) > math.abs(x_dis) then
            ret = core.up_move()
        elseif y_dis > 0 and math.abs(y_dis) > math.abs(x_dis) then
            ret = core.down_move()
        elseif x_dis < 0 and math.abs(x_dis) > math.abs(y_dis) then
            ret = core.left_move()
        elseif x_dis > 0 and math.abs(x_dis) > math.abs(y_dis) then
            ret = core.right_move()
        end
        if not ret then return end
        new_block = core.new_block()
        if not new_block then return end
        new_block.flag = true
        local testtbl = core.tblclone(core.block, 16)
        testtbl[new_block.index] = new_block.value
        if core.isfull(testtbl) then
            if core.up_move(testtbl) or core.down_move(testtbl) or core.left_move(testtbl) or core.right_move(testtbl) then
                return
            end
            core.set_best()
            over_flag = true
        end
    end
end

 

以上便是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。也希望通過這幾個(gè)2048小游戲的代碼,能給到大家一些幫助

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产一区二区电影| 欧美成人免费大片| 在线国产网址| 黄频在线免费观看| 天天摸天天干天天操| 91精品国产美女浴室洗澡无遮挡| 欧美最猛性xxxxx免费| 91网址在线观看| 无码无套少妇毛多18pxxxx| 亚洲视频在线免费| 久久精品国产亚洲av麻豆| 亚洲欧洲在线观看av| 最新版天堂资源中文官网| 国产农村妇女精品久久| 97人妻精品一区二区免费| 不许穿内裤随时挨c调教h苏绵| 美女爆乳18禁www久久久久久| 鲁一鲁一鲁一鲁一av| 中文字幕麻豆| 久久亚洲国产成人亚| 在线欧美一级视频| 97视频在线观看免费| 国产成人精品av在线| 久久99亚洲精品| 国产xxxxxx久色视频在| 五月天激情小说综合| 欧美码中文字幕在线| 韩国19禁主播vip福利视频| 特大黑人巨人吊xxxx| 丁香婷婷综合激情五月色| 欧美大胆一级视频| 日韩精品免费一区二区夜夜嗨| 亚洲国产午夜伦理片大全在线观看网站| 九九九九九九精品| 欧美乱妇高清无乱码免费| 成人春色在线观看免费网站| 99热精品一区二区| 欧美日韩一卡二卡| 亚洲欧美国产一区二区三区| 超清av在线| 大片在线观看网站免费收看| 久久av国产紧身裤| 香蕉视频黄色在线观看| 国产校园另类小说区| 99精品在线免费观看| 日韩电影中文字幕在线| 国产精成人品localhost| 少妇性饥渴无码a区免费| 亚洲综合在线做性| 两个人看的免费完整在线观看| 日本高清久久天堂| 亚洲最黄网站| 呦呦在线视频| 久久午夜视频| 有没有片在线看www| 色戒汤唯在线观看| 日韩高清在线不卡| 国产日韩影视精品| 日韩久久免费av| 国产爆初菊在线观看免费视频网站| 国产www视频在线观看| zztt21.su黑料网站| 欧美日韩免费观看一区| 国产不卡视频一区| 亚洲 欧美 日韩 国产综合 在线| jlzzjlzz欧美| 精品蜜桃传媒| 亚洲无中文字幕| 国产精品美女久久久久久免费| 成年人网站大全| 综合自拍亚洲综合图不卡区| 欧美激情一二三区| 99高清免费国产自产拍| 免费在线视频欧美| 高清wwwwxxxx| 日韩黄色av| 国产日韩欧美日韩大片| 好男人www社区在线视频夜恋| 黄色成人小视频| 性欧美暴力猛交69hd| 午夜精品久久久久久久蜜桃app| 乱馆动漫1~6集在线观看| 久久天堂夜夜一本婷婷麻豆| 国产无套粉嫩白浆在线2022年| 国产免费观看高清视频| 国产中文字幕视频| 麻豆视频传媒入口| 日本在线免费中文字幕| 国产清纯白嫩初高中在线观看性色| 伊人成人在线观看| 116极品美女视频在线观看| av大片免费在线观看| 欧美三级资源在线| 电影午夜精品一区二区三区| 亚洲色图13p| 欧美另类videos黑人极品| 久久99精品国产.久久久久久| 大肉大捧一进一出好爽动态图| wwwxxxx国产| 天堂中文а√在线| 亚洲高清资源| 妖精视频一区二区三区免费观看| 性欧美丰满熟妇xxxx性久久久| 亚洲电影第三页| 亚洲丝袜在线观看| 亚洲 欧洲 日韩| 超碰国产在线| 五月天婷亚洲天综合网鲁鲁鲁| 午夜精品成人在线| 牛牛精品在线| 综合 欧美 亚洲日本| 国产l精品国产亚洲区久久| 日本视频网站在线观看| 97超碰在线免费观看| 精品一区二区三区电影| 国产精品.xx视频.xxtv| 日韩综合一区二区| 色综合天天综合狠狠| 蜜桃无码一区二区三区| 亚洲欧美自拍偷拍色图| 青青草在线免费观看| 欧美人妻精品一区二区免费看| 亚洲激情视频网| 92看片淫黄大片看国产片| av在线播放亚洲| 69堂免费精品视频在线播放| 人妻少妇一区二区| 97精品视频在线看| 中文成人在线| 久久精品视频久久| 这里只有久久精品| 女人被狂躁c到高潮| 日韩不卡免费视频| 国语自产精品视频在线看抢先版图片| 51ⅴ精品国产91久久久久久| 精品一区二区三区电影| 成人黄色片在线| 明星国产一级毛片范冰冰视频| 麻豆tv在线播放| 亚洲不卡中文字幕无码| 久久久久国产精品免费免费搜索| 精品久久久久久久久久岛国gif| 亚州av电影免费在线观看| 欧美一区二视频| 1024精品久久久久久久久| 制服丝袜激情欧洲亚洲| 欧美一区二区三区啪啪| 免费观看黄色一级视频| 国产综合精品视频| 欧美国产在线电影| 免费观看黄网站| 香蕉成人av| 91玉足脚交嫩脚丫在线播放| 日本一区二区三区四区在线观看| 亚洲免费影视| 午夜国产在线观看| 久久影视中文粉嫩av| 中文字幕欧美激情| 亚洲自拍偷拍欧美| 91精品国产沙发| 欧美日韩中文字幕一区| 欧美又大又粗又长| 高清不卡一区二区| 日韩中文字幕在线视频观看| 国产片高清在线观看| 2020国产精品小视频| 91社区在线高清| 国产在视频一区二区三区吞精| 国产精品美女av| 国产精品视频精品| 欧美日韩直播| 欧美乱大交xxxxx| 日本不卡一二三区黄网| 国产视频99| 日韩欧美精品一区二区| 亚洲一级爰片777777| 欧美午夜一区二区三区免费大片| 茄子视频成人免费观看| 欧美一级久久久| 中文字幕理伦片免费看| 破处女黄色一级片| 91免费看网站| 欧美裸体视频| 日本一区二区三区高清不卡| 久久久久久久久蜜桃| 成人午夜又粗又硬又大| 久久电影院7| 精品久久久久久久久久岛国gif| 一个人免费观看日本www视频| 99久久久国产精品免费调教网站| 国产成人一区二区三区免费看| 国语对白一区二区| 欧美成人一区二区三区高清| 影音先锋久久精品| 黄色三级视频在线播放| 美女亚洲一区| 国产精品日日爱| 超碰超碰超碰超碰超碰| 爱情岛论坛亚洲品质自拍视频网站| 蜜桃免费网站一区二区三区| 久久久久看片| 亚洲免费成人| 亚洲免费一级片| 国产伦精品一区二区三区四区视频_| 91九色鹿精品国产综合久久香蕉| 奇门遁甲1982国语版免费观看高清| 国产精品毛片久久久久久久| 日韩不卡视频在线观看| 黄色免费网址大全| 麻豆精品国产91久久久久久| 欧美一级三级| 中文字幕欧美日韩va免费视频| 中文字幕你懂得| 日韩午夜电影av| 欧美成人精品二区三区99精品| 欧美一区二区三区四区在线观看| 国产绿帽一区二区三区| 国产精品va在线观看视色| 拔插拔插华人永久免费| 国产久一一精品| 777久久精品| 成人免费福利在线| 欧美中文字幕不卡| 日本小视频在线免费观看| 粗大黑人巨茎大战欧美成人| 天天干天天干天天| 亚洲精品成人久久| 男同互操gay射视频在线看| 久久精子c满五个校花| 欧美日韩第一页| 黄页网址大全在线观看| av今日在线| www.xxxx精品| 国产精品青草综合久久久久99| 亚洲精品在线影院| 久久网站热最新地址| gogo久久日韩裸体艺术| 无码人妻丰满熟妇区毛片蜜桃精品| 亚洲高清在线视频| 中文字幕精品久久| 久久精品亚洲人成影院| 国产卡1卡2卡三卡在线| 91超碰在线观看| 天堂在线免费观看视频| 亚洲免费av高清| 亚洲香蕉中文网| 欧美zozo| 精品国产91久久久久久| 午夜精品一区二区三区三上悠亚| 国产做受高潮69| 男人网站在线观看| 夜夜爽视频导航| 欧美大片免费播放器| 农村妇女一区二区| 性欧美大战久久久久久久| 99热在线免费观看| 侵犯稚嫩小箩莉h文系列小说| 欧美亚洲免费| 免费高清视频在线观看| eeuss影院在线观看第一页| 国产亚洲亚洲国产一二区| 久久综合久中文字幕青草| 91成人福利视频| 成人6969www免费视频| 九九热中文字幕| 亚洲成人电视网| 英国三级经典在线观看| 在线播放国产一区二区三区| 97超碰青青草| 一本色道无码道dvd在线观看| 高清视频欧美一级| 亚洲精品无码一区二区| 免费人成福利播放| 蜜臀av在线| 嫩草研究院在线| 在线一级视频| 日本不卡一区二区| 国产精品啪啪啪视频| 久久久久久久电影一区| 在线观看视频免费一区二区三区| va婷婷在线免费观看| 亚洲精品欧洲| 久久精品国产综合| a在线视频播放观看免费观看| 午夜精品一区二| 中文字幕一区二区三区乱码图片| 人妻无码久久一区二区三区免费| 麻豆成人久久精品二区三区红| 一本色道久久加勒比精品| 国产精品一区免费在线| 中文天堂最新版本在线观看| 欧美性潮喷xxxxx免费视频看| 九一成人免费视频| 久久久久久久久久久妇女| va视频在线观看| 91色在线播放| 一区二区三区在线播放欧美| 伊人av成人| 亚洲国产一区二区精品专区| 日本中文字幕影院| 久久综合九色综合97_久久久| 欧美成人精品三级在线观看| 337p日本欧洲亚洲大胆精品| 九七电影院97理论片久久tvb| 椎名由奈jux491在线播放| 国产精品69毛片高清亚洲| 欧美另类极品videosbest视频| 精品视频一区二区在线观看| 男人的天堂在线免费视频| 欧洲精品一区色| 97人人爽人人喊人人模波多| 国内精品免费视频| 日本午夜一区二区| 欧美色图一区| 自拍视频网站| 国产麻豆9l精品三级站| 日韩美女视频在线观看| 日韩精品小视频| 午夜国产小视频| 欧美日韩岛国| 色在线观看视频| 二区中文字幕| 国产精品毛片一区二区| 亚洲伦理一区二区| 中文字幕中文字幕在线中文字幕三区| 亚洲啪啪aⅴ一区二区三区9色| 成人午夜在线播放| 亚洲第一视频|