Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Object 为什么这段代码在屏幕上不呈现任何对象?_Object_Lua_Rockbox - Fatal编程技术网

Object 为什么这段代码在屏幕上不呈现任何对象?

Object 为什么这段代码在屏幕上不呈现任何对象?,object,lua,rockbox,Object,Lua,Rockbox,我在什么地方搞砸了吗?如果我把putsxy放在同一个框中,它会很好地呈现一个字符串,但出于某种原因,这段代码讨厌对象。这段代码要做的是在屏幕上呈现一组随机定位的“t”,这在没有对象的情况下效果很好。但是,当我添加对象时,不会渲染任何内容。我做错了什么?非常感谢你的帮助。代码如下: ------------------------------- -- Asterix v0.0.3 -- -- Copyright 2013 WilliamTDR. -- -----------------------

我在什么地方搞砸了吗?如果我把putsxy放在同一个框中,它会很好地呈现一个字符串,但出于某种原因,这段代码讨厌对象。这段代码要做的是在屏幕上呈现一组随机定位的“t”,这在没有对象的情况下效果很好。但是,当我添加对象时,不会渲染任何内容。我做错了什么?非常感谢你的帮助。代码如下:

-------------------------------
-- Asterix v0.0.3 --
-- Copyright 2013 WilliamTDR. --
-------------------------------

-- prerequestities --
require "actions" -- button input
require "math" -- random numbers

-- Global Variables --
local player = {
    health = 20, -- player health
    foodparts = 12, -- portions of food until the food level depletes by one
    food = 40, -- player food
    x = 50, -- player x position
    y = 50, -- player y position
    roomx = 0, -- x value of room player is in
    roomy = 0 -- y value of room player is in
}

local object = {
    x = 30,
    y = 30,
    roomx = 0,
    roomy = 0,
    name = "Unknown Object",
    touchingplayer = false,
    symbol = "u"
}

local objects = {}

function object:new (o)
    o = o or {}   -- create object if user does not provide one
    setmetatable(o, self)
    self.__index = self
    return o
end

function player.refresh()
    -- reset player values
    player.food = 40
    player.health = 20
    player.foodparts = 12
    player.x = 50
    player.y = 50
    player.roomx = 0
    roomy = 0
end

function player.die()
    rb.lcd_clear_display() -- clear the display
    rb.lcd_putsxy(1, 7, "You have died!")
    rb.lcd_putsxy(1, 45, "Respawning in 3...")
    rb.lcd_update()
    rb.sleep(rb.HZ) -- sleep for one second
    rb.lcd_putsxy(1, 45, "Respawning in 2...")
    rb.lcd_update()
    rb.sleep(rb.HZ)
    rb.lcd_putsxy(1, 45, "Respawning in 1...")
    rb.lcd_update()
    rb.sleep(rb.HZ)
    player.refresh()
    render()
end

function renderobjects()
    for _,object in ipairs(objects) do
        if player.roomx == object.roomx and player.roomy == object.roomy then
            rb.putsxy(object.x, object.y, object.symbol)
        end
    end
    rb.lcd_update()
end

function createnewobjects()
    obj1 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj2 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj3 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj4 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj5 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj6 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj7 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj8 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj9 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj10 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj11 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj12 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj13 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}             
    obj14 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj15 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj16 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj17 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj18 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj19 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    obj20 = object:new{x = math.random(1,92), y = math.random(1,92), roomx = 0, roomy = 0, symbol = "t", name = "Tree"}
    table.insert(obj1, objects)
    table.insert(obj2, objects)
    table.insert(obj3, objects)
    table.insert(obj4, objects)
    table.insert(obj5, objects)
    table.insert(obj6, objects)
    table.insert(obj7, objects)
    table.insert(obj8, objects)
    table.insert(obj9, objects)
    table.insert(obj10, objects)
    table.insert(obj11, objects)
    table.insert(obj12, objects)
    table.insert(obj13, objects)
    table.insert(obj14, objects)
    table.insert(obj15, objects)
    table.insert(obj16, objects)
    table.insert(obj17, objects)
    table.insert(obj18, objects)
    table.insert(obj19, objects)
    table.insert(obj20, objects)
end

function checks()
    if player.foodparts < 1 then
        player.foodparts = 12
        player.food = player.food - 1
    end

    if player.food < 1 then
        player.health = player.health - 1
    end

    if player.health < 1 then
        player.die()
    end

    if player.x < 1 then
        player.roomx = player.roomx + 1
        createnewobjects()
        player.x = 92
    end

    if player.x > 93 then
        player.roomx = player.roomx - 1
        createnewobjects()
        player.x = 4
    end

    if player.y < 1 then
        player.roomy = player.roomy + 1
        createnewobjects()
        player.y = 92
    end

    if player.y > 93 then
        player.roomy = player.roomy - 1
        renderobjects()
        player.y = 4
    end

    end

function render()
    checks()
    rb.lcd_set_background(0, 255, 0) -- background is black
    rb.lcd_set_foreground(-1, 0, 0) -- foreground is white
    rb.lcd_clear_display()
    rb.lcd_fillrect(5, 3, (player.health * 2), 2)
    rb.lcd_set_foreground(88, 2, 2)
    rb.lcd_fillrect(45, 3, player.food, 2)
    rb.lcd_set_foreground(125, 125, 0)
    rb.lcd_putsxy(player.x, player.y, "*")
    renderobjects()
    rb.lcd_update()
end

function LoadGame()
render()
    while true do
        button = rb.get_plugin_action(0)
        if button == 182 then
            player.x = player.x - 1
            player.foodparts = player.foodparts - 1
            render()
        elseif button == 183 then
            player.x = player.x + 1
            player.foodparts = player.foodparts - 1
            render()
        elseif button == 180 then
            player.y = player.y - 1
            player.foodparts = player.foodparts - 1
            render()
        elseif button == 181 then
            player.y = player.y + 1
            player.foodparts = player.foodparts - 1
            render()
        elseif button == 186 then
            player.x = player.x - 4
            player.foodparts = player.foodparts - 4
            LoadGame()
        elseif button == 187 then
            player.x = player.x + 4
            player.foodparts = player.foodparts - 4
            LoadGame()
        elseif button == 184 then
            player.y = player.y - 4
            player.foodparts = player.foodparts - 4
            LoadGame()
        elseif button == 185 then
            player.y = player.y + 4
            player.foodparts = player.foodparts - 4
            LoadGame()
        elseif button == 191 then
            ShowMainMenu() -- start the program by displaying the main menu of the script.
        end
    end
end


function ShowMainMenu()
    mainmenu = {"New Game", "Load Game", "About MCRE", "Exit"}

    while true do
        s = rb.do_menu("Asterix v0.0.1", mainmenu, nil, false)

        if     s == 0 then LoadGame()
        elseif s == 1 then rb.splash(3 * rb.HZ, "No maps found! Create one first.")
        elseif s == 2 then rb.splash(5 * rb.HZ, "Game ©2013 WilliamTDR. Version 0.0.1, build 4. Minecraft is a registered trademark of Notch Development AB.")
        elseif s == 3 then os.exit()
        elseif s == -2 then os.exit()
        else rb.splash(2 * rb.HZ, "Whoops: Unexpected Button press!" .. s)
        end
    end
end

ShowMainMenu() -- start the program by displaying the main menu of the script.
-------------------------------
--Asterix v0.0.3--
--版权所有2013 WilliamTDR--
-------------------------------
--优先权--
需要“操作”--按钮输入
需要“数学”——随机数
--全局变量--
本地玩家={
生命值=20,--玩家生命值
foodparts=12,--食物水平耗尽一倍前的食物份数
食物=40,--玩家食物
x=50,--玩家x位置
y=50,--游戏者y位置
roomx=0,-room player的x值为
roomy=0——room player的y值为
}
本地对象={
x=30,
y=30,
roomx=0,
宽敞=0,
name=“未知对象”,
touchingplayer=false,
symbol=“u”
}
本地对象={}
函数对象:新建(o)
o=o或{}——若用户未提供对象,则创建对象
可设置元(o,自)
self.\uuu索引=self
返回o
结束
函数player.refresh()
--重置玩家值
player.food=40
player.health=20
player.foodparts=12
player.x=50
玩家y=50
player.roomx=0
宽敞的=0
结束
函数player.die()
rb.lcd_clear_display()--清除显示器
rb.lcd_putsxy(1,7,“你已经死了!”)
rb.lcd_putsxy(1,45,“在3中重生…”)
rb.lcd_update()
rb.sleep(rb.HZ)——睡眠一秒钟
rb.lcd_putsxy(1,45,“在2中重生…”)
rb.lcd_update()
rb.睡眠(rb.HZ)
rb.lcd_putsxy(1,45,“在1中重生…”)
rb.lcd_update()
rb.睡眠(rb.HZ)
player.refresh()
render()
结束
函数renderobjects()
对于u,IPAIR中的对象(对象)do
如果player.roomx==object.roomx和player.roomy==object.roomy,则
rb.putsxy(object.x,object.y,object.symbol)
结束
结束
rb.lcd_update()
结束
函数createnewobjects()
obj1=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj2=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj3=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj4=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj5=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj6=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj7=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj8=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj9=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj10=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj11=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj12=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj13=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj14=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj15=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj16=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj17=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj18=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj19=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
obj20=object:new{x=math.random(1,92),y=math.random(1,92),roomx=0,roomy=0,symbol=“t”,name=“Tree”}
表.插入(obj1,对象)
表.插入(obj2,对象)
表.插入(obj3,对象)
表.插入(obj4,对象)
表.插入(obj5,对象)
表.插入(obj6,对象)
表.插入(obj7,对象)
表.插入(obj8,对象)
表.插入(obj9,对象)
表.插入(obj10,对象)
表.插入(obj11,对象)
表.插入(obj12,对象)
表.插入(obj13,对象)
表.插入(obj14,对象)
表.插入(obj15,对象)
表.插入(obj16,对象)
表.插入(obj17,对象)
表.插入(obj18,对象)
表.插入(obj19,对象)
表.插入(obj20,对象)
结束
函数检查()
如果player.foodparts<1,则
player.foodparts=12
player.food=player.food-1
结束
如果player.food<1,则
player.health=player.health-1
结束
如果player.health<1,则
player.die()
结束
如果player.x<1,则
player.roomx=player.roomx+1
createnewobjects()
player.x=92
结束
如果player.x>93,则
player.roomx=player.roomx-1
createnewobjects()
player.x=4
结束
如果player.y<1,则
player.roomy=player.roomy+1
createnewobjects()
player.y=92
结束
如果player.y>93,则
player.roomy=player.roomy-1
伦德罗布
table.insert(objects, obj1)
table.insert(obj1, objects)
setmetatable(objects,{__index=table})
objects:insert(obj1)
-- etc.