美文网首页
CocosLua3.10 根据所需时间获取手中需要到道具

CocosLua3.10 根据所需时间获取手中需要到道具

作者: 叫我29就好啦 | 来源:发表于2019-11-20 09:34 被阅读0次
用于点:尽可能的使用最小单位道具。
想法:
  • 手中道具或许有多个,所以用的是可配置方案。
  • 时间转化为分计算。
  • 利用while处理最小单位道具依次判断
function testFun:fun_1()
    local itemConfig = {}  -- 配置表
    local needItem = {}  -- 所需个数(与配置顺序保持一致)

    -- 假装玩家有数据
    local item1 = {min = 5, count = 23, name = 'item1_5min', ext = '5min'}
    -- local item2 = {min = 60, count = 19, name = 'item2_1hour', ext = '1hour'}
    local item3 = {min = 60 * 8, count = 1, name = 'item3_8hour', ext = '8hour'}

    -- 假装有这么多条数据(可修改为收到服务端然后客户端解析)
    table.insert(itemConfig, item1)
    -- table.insert(itemConfig, item2)
    table.insert(itemConfig, item3)

    -- 初始化个数
    for i, v in ipairs(itemConfig) do
        table.insert(needItem, 0)
    end

    -- 所需时间
    local needTime = 1 * 60 + 25

    -- 先检查下,如果玩家手中所有道具都不能到达所需时间,则直接返回
    local totalMin = 0
    for i, v in ipairs(itemConfig) do
        totalMin = totalMin + v.min * v.count
    end

    if totalMin < needTime then
        return print('道具数量不足')
    end

    local currentTime = needTime

    -- 遍历所有配置,寻找哪个是满的
    local function checkIsFull()
        local idx = -1
        for i, v in ipairs(itemConfig) do
            if (v.count - needItem[i]) * v.min > currentTime then
                idx = i
                break
            end
        end

        if idx > 0 and itemConfig[idx] then
            if itemConfig[idx].count >= needItem[idx] then
                needItem[idx] = needItem[idx] + 1
                currentTime = currentTime - itemConfig[idx].min
            end
            return true
        end

        return false
    end

    print('需要总时间为', needTime)
    while(currentTime > 0) do
        -- 满的情况下
        if not checkIsFull() then
            -- 不满的情况
            for i, v in ipairs(itemConfig) do
                if v.count > needItem[i] then
                    currentTime = currentTime - v.min
                    needItem[i] = needItem[i] + 1
                    break
                end
            end
        end
    end

    -- 打印(输出)
    local str = ''
    local totalUseTime = 0
    for i, v in ipairs(itemConfig) do
        local needStr = string.format('所需%s个数是:%d  ', v.ext, needItem[i])
        str = str .. needStr
        totalUseTime = totalUseTime + v.min * needItem[i]
    end
    print(str)

    local str1 = string.format('总共时间需要%d分,通过逻辑计算需要分为%d', needTime, totalUseTime)
    print(str1)
    print(string.format('超额时间%s分', currentTime))
end

ε≡٩(๑>₃<)۶ 请大家多多评论一起讨论讨论

相关文章

  • CocosLua3.10 根据所需时间获取手中需要到道具

    用于点:尽可能的使用最小单位道具。 想法: 手中道具或许有多个,所以用的是可配置方案。 时间转化为分计算。 利用w...

  • 2018.9.16—工作复盘

    &活动开始之前提前把场地布置好;具体桌子或台子、椅子等活动所需的道具准备好。 &根据活动主题,提前备好所需物料。如...

  • 破冰活动所需道具

    1.两张A3纸大小规格的白旗×6面; 2.黑、红、蓝三色马克笔各7支,共21支; 3.白色卡纸若干张; 4.白板×...

  • Vue-微信分享踩坑

    created => 通过promise获取到config 所需,注:此时的请求 URL需与绑定的域名 he...

  • PMP之第六章项目时间管理(3)-活动所需时间估算

    6.3活动所需时间估算 活动所需时间估算就是根据关于项目范围与资源的信息估算所需时间,将其作为制订进度所需投入的过...

  • 2016年初计划和目标

    1.看完you dont know js,并且做好笔记(可以根据一章所需时长来估算,包括理解和笔记时间,估算出了需...

  • iOS 多国语言创建

    创建语言文件生成所需国家语言.strings文件 赋值对应的语言 根据名字地址获取bundle地址language...

  • 腾讯cos上传图片

    1、上传路径"/...../....../....../a.jpg" 上传生成对应的文件目录 2、获取图片可根据需...

  • 20180225现金流游戏感受

    【收获】 根据时间不同,决策的方式原则是不同的。最开始主要是要积累手中现金以获取更大的机会(通过购买低价股票、增加...

  • Android根据时间获取星期几

    原文:https://blog.csdn.net/qq_27400335/article/details/7941...

网友评论

      本文标题:CocosLua3.10 根据所需时间获取手中需要到道具

      本文链接:https://www.haomeiwen.com/subject/obinictx.html