⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 consolation1.lua

📁 java代码加载lua文件
💻 LUA
字号:
--[[

    文件名:consolation.lua

    功能描述:该文件通过函数consolation()实现落选赛编排功能。
              文件中使用的参数members、nos、num都是从Java中传入,为全局变量。
              members为参赛成员ArrayList,nos为编排后的对阵ArrayList,
              num表示从小组排名第几的成员开始参加落选赛。
              编排后数据格式类似于:

              nos[0][0]="member12"	nos[1][0]="member12"	nos[2][0]="member11"
              nos[0][1]="member11"	nos[1][1]="member10"	nos[2][1]="member10"

              nos[3][0]="member13"	nos[4][0]="member13"	nos[5][0]="member14"
              nos[3][1]="member14"	nos[4][1]="member15"	nos[5][1]="member15"

              nos[6][0]="member18"	nos[7][0]="member18"	nos[8][0]="member17"
              nos[6][1]="member17"	nos[7][1]="member16"	nos[8][1]="member16"

              nos[9][0]="member19"	nos[10][0]="member19"	nos[11][0]="member19"
              nos[9][1]="member20"	nos[10][1]="member23"	nos[11][1]="member21"

              nos[12][0]="member19"	nos[13][0]="member20"	nos[14][0]="member20"
              nos[12][1]="member22"	nos[13][1]="member21"	nos[14][1]="member22"

              nos[15][0]="member23"	nos[16][0]="member23"
              nos[15][1]="member21"	nos[16][1]="member22"

    参数列表:consolation()函数包含三个参数members、nos、num。

    参数类型:members是Java中的ArrayList类型,在Lua中是userdata类型;
              nos是Java中的ArrayList类型,在Lua中是userdata类型;
              num是Java中的int类型,在Lua中是Number类型。

    返回值:文件返回三个值list、nos、num

    返回值类型:members是Java中的ArrayList类型,在Lua中是userdata类型;
                nos是Java中的ArrayList类型,在Lua中是userdata类型;
                num是Java中的int类型,在Lua中是Number类型。

    返回值说明:members为参赛成员ArrayList,nos为编排后的对阵ArrayList,
                num表示从小组排名第几的成员开始参加落选赛。


    2007年6月22日	程峰

]]--



----------------------------------------------------------------------
-- 函数circle()的定义,实现单循环对阵编排
-- 参数members为参赛成员ArrayList,nos为编排后的对阵ArrayList,
-- memberNum为参加编排的成员数。
function circle( member, nos, memberNum )

    -- 对阵编排
    for i=0, memberNum-2 do
        for m=i+1, memberNum-1 do

            l = luajava.newInstance("java.util.ArrayList")

	        -- 成员i与成员m对阵
            l:add(member:get(i))
            l:add(member:get(m))
	    nos:add(l)

	end
    end      -- end for

end
-----------------------------------------------------------------------



------------------------------------------------------------------------
-- 函数consolation()的定义,实现落选赛对阵编排
-- 参数members为参赛成员ArrayList,nos为编排后对阵的ArrayList
-- num表示从小组排名第几的成员开始参加落选赛。
function consolation( members, nos, num )

    memberNum=members:size()       -- 记录小组数
    number={}                      -- 记录各个小组成员数
    same=true
    for i=0, memberNum-1 do
        -- number[i]记录第i个小组的成员数
        number[i]=(members:get(i)):size()
        -- 判断各个小组数是否相同
        if number[i]~=number[0] then
            same=false
        end
    end

    -- 每个小组的成员数相同
    if same then
        -- 按列循环
        for j=num-1, number[0]-1 do

            member=luajava.newInstance("java.util.ArrayList")
            -- 生成每列的数组member
            for i=0, memberNum-1 do
                member:add((members:get(i)):get(j))
            end

            circle(member, nos, memberNum)         -- 为每列生成单循环对阵编排
        end
    -- 每个小组的成员数不同
    else
        min=0               -- 成员数最少的小组
        minNum=number[0]    -- 成员数最少的小组所包含的成员数
        for i=0, memberNum-1 do
            if number[i]<minNum then
                min=i
                minNum=number[i]
            end
        end

        minNum=minNum-1

        -- 前若干列的单循环对阵编排
        for j=num-1, minNum-1 do
            member=luajava.newInstance("java.util.ArrayList")
            for i=0, memberNum-1 do
                member:add((members:get(i)):get(j))
            end
            circle(member, nos, memberNum)
        end

        -- 最后两列的单循环对阵编排
        -- 其中在小组赛对阵过的成员不再比赛
        -- 从第一小组开始遍历
        for i=0, memberNum-2 do
            for j=minNum, number[i]-1 do

                -- 从第二小组开始遍历
                -- 生成对阵关系
                for p=i+1, memberNum-1 do
                    for q=minNum,number[p]-1 do
                        member=luajava.newInstance("java.util.ArrayList")
                        member:add((members:get(i)):get(j))
                        member:add((members:get(p)):get(q))
                        nos:add(member)
                    end
                end
            end
        end   -- end for

    end   -- end if

end   -- end method consolation
-------------------------------------------------------------------------------



--判断全局变量members是否正常传入
if members==nil then
    print("Error. members object is nil")
    return
end

--判断全局变量nos是否正常传入
if nos==nil then
    print("Error. nos object is nil")
    return
end

--判断全局变量num是否正常传入
if num==nil then
    print("Error. num object is nil")
    return
end

consolation( members, nos, num )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -