婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > lua+love2d制作的2048游戲

lua+love2d制作的2048游戲

熱門標簽:新岸線智能電銷機器人 漳州智云呼電話機器人 武漢外呼防封系統多少錢 個人怎么在地圖標注需要的店鋪 百度地圖標注早餐區域 怎么去除地圖標注 清朝地圖標注哈爾濱 地圖標注大廈 冀州市地圖標注

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

core.lua

復制代碼 代碼如下:

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

復制代碼 代碼如下:

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

以上便是本文的全部內容了,希望大家能夠喜歡。也希望通過這幾個2048小游戲的代碼,能給到大家一些幫助

您可能感興趣的文章:
  • lua實現的2048小游戲
  • Lua腳本語言簡明入門教程
  • Lua游戲開發教程之時區問題詳解

標簽:金昌 宣城 儋州 臺灣 天門 濰坊 德宏 天門

巨人網絡通訊聲明:本文標題《lua+love2d制作的2048游戲》,本文關鍵詞  lua+love2d,制作,的,2048,游戲,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《lua+love2d制作的2048游戲》相關的同類信息!
  • 本頁收集關于lua+love2d制作的2048游戲的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    av成人免费在线观看| 国产精品久久久久一区二区三区 | 亚洲一区二区中文在线| 波波电影院一区二区三区| 精品少妇一区二区| 国产一区二区调教| 精品久久久久久久久久久久久久久久久 | 国产精品久久久久久久第一福利| 久久国产人妖系列| 欧美岛国在线观看| 国产成人99久久亚洲综合精品| 日韩中文字幕不卡| 亚洲精品在线电影| 91麻豆文化传媒在线观看| 水野朝阳av一区二区三区| 久久精品在这里| 欧美二区乱c少妇| 久久久91精品国产一区二区三区| 成人激情午夜影院| 97久久超碰精品国产| 亚洲情趣在线观看| 国产欧美一区二区在线观看| 欧美日韩日本视频| 极品少妇xxxx精品少妇| 4438亚洲最大| 亚洲精品美国一| 国产精品对白交换视频| 日本成人在线不卡视频| 色系网站成人免费| 国产精品欧美久久久久一区二区| 日韩中文字幕亚洲一区二区va在线 | 91在线视频播放地址| 久久国产麻豆精品| 香蕉久久夜色精品国产使用方法 | www.欧美日韩| 国产精品一二三四| 91精品午夜视频| 91麻豆视频网站| 欧美不卡一区二区三区四区| 色天使色偷偷av一区二区| 欧美色手机在线观看| 精品国产乱码久久久久久图片| 欧美一区二区三区爱爱| 91精品免费在线观看| 日韩三级视频中文字幕| 欧美大黄免费观看| 日韩一级片在线播放| 欧美成人伊人久久综合网| 这里是久久伊人| 欧美激情资源网| 国产成人精品免费看| 久久综合色天天久久综合图片| 成人免费va视频| 亚洲成人免费观看| 国产欧美一区二区在线| 99视频超级精品| 亚洲国产精品影院| 精品国产污污免费网站入口| 91久久精品一区二区三| 男女视频一区二区| 色综合久久久网| 中文成人av在线| 久久av中文字幕片| 亚洲精品一线二线三线无人区| 国产日韩影视精品| 宅男噜噜噜66一区二区66| 天堂av在线一区| 99免费精品视频| 国产精品国产三级国产普通话蜜臀 | 欧美高清www午色夜在线视频| 久久这里都是精品| 中文字幕中文在线不卡住| 最近日韩中文字幕| 国产精品区一区二区三| 日韩视频一区二区三区| 91一区在线观看| 欧美色图免费看| 一区二区在线观看免费视频播放| 精品一区二区三区免费观看| 亚洲国产美女搞黄色| 亚洲免费视频成人| 一区二区三区日本| 亚洲线精品一区二区三区八戒| 亚洲精品一二三| 麻豆成人91精品二区三区| 狠狠色丁香婷婷综合久久片| 国产精品亚洲一区二区三区妖精| 国产自产2019最新不卡| 成熟亚洲日本毛茸茸凸凹| av成人老司机| 91丝袜美腿高跟国产极品老师| 国产精品国产三级国产aⅴ无密码| 亚洲伦理在线免费看| 日日噜噜夜夜狠狠视频欧美人| 日本最新不卡在线| 久久66热re国产| 国产精品18久久久久久vr| 欧美日韩专区在线| 97精品国产露脸对白| 国产精品一线二线三线精华| 国产精品久久一卡二卡| 欧美精品 日韩| 欧美日韩一区在线观看| 乱一区二区av| 夜夜嗨av一区二区三区| 国产日韩欧美综合一区| 日韩欧美一区在线观看| 欧美日韩成人在线一区| 972aa.com艺术欧美| 成人动漫一区二区| 国产伦精品一区二区三区视频青涩 | 久久日韩粉嫩一区二区三区| 成人av资源在线| 精品伦理精品一区| 免费成人在线观看视频| 91精品欧美一区二区三区综合在| 中文字幕av一区二区三区免费看| 国产美女一区二区三区| 日本一区二区三区视频视频| 懂色av一区二区夜夜嗨| 国产精品嫩草99a| 成人性生交大片免费 | 亚洲三级在线免费| 91片在线免费观看| 最新国产精品久久精品| bt7086福利一区国产| 亚洲一区中文日韩| 日韩一区二区在线看片| 成人激情小说网站| 一区二区高清视频在线观看| 欧美午夜在线观看| 欧美aⅴ一区二区三区视频| 久久人人爽爽爽人久久久| 91浏览器打开| 精品制服美女丁香| 免费在线观看一区| 久久婷婷综合激情| 欧美一a一片一级一片| 日日噜噜夜夜狠狠视频欧美人| 国产欧美精品一区aⅴ影院| 激情文学综合插| 亚洲精品国产高清久久伦理二区| 日韩精品中文字幕在线一区| 69成人精品免费视频| 成人h动漫精品一区二区| 日韩国产精品91| 曰韩精品一区二区| 日本一区二区电影| 欧美一区二区三区思思人| 91麻豆国产福利在线观看| 国产精品一区在线观看乱码| 天天综合网 天天综合色| 亚洲一区在线视频观看| 一区二区三区精品在线| 精品久久久久久久人人人人传媒| 国产精品亚洲午夜一区二区三区| 日本一区中文字幕 | 欧美激情综合网| 久久久99精品久久| 国产精品免费网站在线观看| 中文字幕欧美三区| 日本一区二区三区四区| 国产精品美女久久久久久2018 | 91丨九色丨黑人外教| 成人激情图片网| 色哟哟在线观看一区二区三区| 成人av电影在线观看| 国产成人精品免费网站| 风间由美一区二区av101| 色综合天天狠狠| 日本韩国精品在线| 精品视频在线免费看| 日韩一级高清毛片| 午夜免费久久看| 欧美日韩aaaaa| 欧美成人a∨高清免费观看| 精品国产一二三区| 1区2区3区欧美| 日本aⅴ亚洲精品中文乱码| 国产乱色国产精品免费视频| 成人sese在线| 久久天天做天天爱综合色| 亚洲在线免费播放| 久久99热这里只有精品| 一道本成人在线| 国产精品麻豆欧美日韩ww| 蓝色福利精品导航| 欧美日韩亚洲高清一区二区| 国产精品污网站| 亚洲福利一区二区三区| 国产一区二区三区四| 91麻豆精品国产91久久久久久久久| 国产精品九色蝌蚪自拍| 国产成人精品网址| 亚洲国产岛国毛片在线| 蜜桃av噜噜一区| 精品国产一区久久| 一区二区三区在线播放| 国产精品羞羞答答xxdd| 欧美国产精品中文字幕|