Erro em código - Iniciante em Lua

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Erro em código - Iniciante em Lua

Daniel Freitas
Estou pegando uma introdução em Lua no YT, através do canal CriaJogo, e estou em uma parte importante que é de POO. Estou utilizando a versão 5.3 da Lua, e o curso é em 5.1. 
Tenho as tabelas abaixo e seu métodos, porém quando faço a utilização da funçao obter_pocao() eu acabo tendo um erro reportado no terminal

attempt to index a nil value (local 'player1')


Abaixo seguem as tabelas(classes) que escrevi. Já revisei, e tentei colocar o indice que eu quero que faça a inserção porém deu o mesmo erro. Fui atras da documentação da linguagem e pelo que entendi o insert faz a inserção no final da tabela.

player.lua:

local player = {}


function player.novo(nome)
 
local instancia = {
 vida
= 200,
 pocoes
= {},
 nome
= nome
 
}


 
function instancia:obter_pocao(pocao)
 table
.insert(self.pocoes, pocao)
 
end


--[
.
.
.
]--


 
return intancia
end


return player

item.lua

local item = {}


function item.novo(tipo, funcao, custo)
 
return {
 tipo
= tipo,
 funcao
= funcao,
 custo
= custo
}
end


return item


pocao.lua

local item = require("entidades/item")
local pocao = {}

function pocao.novo()
local pocao = item.novo("pocao", "vida", 50)
pocao.vida = 50
return pocao
end

return pocao

o meu main, que aqui está se chamando game.lua estou fazendo o uso com a seguinte linha

local player1 = player.novo("Orientadao")
local player2 = player.novo("Objetoncio")


player1
:obter_pocao(pocao.novo()) --> nesta linha ocorre o erro
player2
:obter_pocao(pocao.novo())

Desde já agradeço a atenção de todos. 
Estou ansioso pra descobrir o que pode estar causando.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Erro em código - Iniciante em Lua

Tomás Guisasola
Oi Daniel

Os problemas que identifiquei:

1. O seu arquivo main.lua precisa carregar os módulos.  Como você está fazendo isso?  Para testar, incluí no início do main.lua as seguintes linhas:

local player = require"player"
local pocao = require"pocao"

2. Há um erro de digitação no player.lua: ao retornar, falta um 's' no nome da variável.

3. Alterei o pocao.lua para carregar o módulo item do mesmo diretório:

local item = require("item")

Feitas essas alterações o programa rodou sem erros...

Abraço,
Tomás

Em 28 de junho de 2018 09:41, Daniel Freitas <[hidden email]> escreveu:
Estou pegando uma introdução em Lua no YT, através do canal CriaJogo, e estou em uma parte importante que é de POO. Estou utilizando a versão 5.3 da Lua, e o curso é em 5.1. 
Tenho as tabelas abaixo e seu métodos, porém quando faço a utilização da funçao obter_pocao() eu acabo tendo um erro reportado no terminal

attempt to index a nil value (local 'player1')


Abaixo seguem as tabelas(classes) que escrevi. Já revisei, e tentei colocar o indice que eu quero que faça a inserção porém deu o mesmo erro. Fui atras da documentação da linguagem e pelo que entendi o insert faz a inserção no final da tabela.

player.lua:

local player = {}


function player.novo(nome)
 
local instancia = {
 vida
= 200,
 pocoes
= {},
 nome
= nome
 
}


 
function instancia:obter_pocao(pocao)
 table
.insert(self.pocoes, pocao)
 
end


--[
.
.
.
]--


 
return intancia
end


return player

item.lua

local item = {}


function item.novo(tipo, funcao, custo)
 
return {
 tipo
= tipo,
 funcao
= funcao,
 custo
= custo
}
end


return item


pocao.lua

local item = require("entidades/item")
local pocao = {}

function pocao.novo()
local pocao = item.novo("pocao", "vida", 50)
pocao.vida = 50
return pocao
end

return pocao

o meu main, que aqui está se chamando game.lua estou fazendo o uso com a seguinte linha

local player1 = player.novo("Orientadao")
local player2 = player.novo("Objetoncio")


player1
:obter_pocao(pocao.novo()) --> nesta linha ocorre o erro
player2
:obter_pocao(pocao.novo())

Desde já agradeço a atenção de todos. 
Estou ansioso pra descobrir o que pode estar causando.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Erro em código - Iniciante em Lua

Daniel Freitas
Bom dia,

Realmente após o que você pontuou eu verifiquei o retorno de player.lua e realmente estava faltando um 's'. Após isso o programa rodou normalmente. 
Um erro de digitação e falta de atenção minha. 

Agradeço novamente a atenção dispensada neste post.

Atenciosamente,
Daniel Freitas

Em quinta-feira, 28 de junho de 2018 10:52:03 UTC-3, Tomás Guisasola escreveu:
Oi Daniel

Os problemas que identifiquei:

1. O seu arquivo main.lua precisa carregar os módulos.  Como você está fazendo isso?  Para testar, incluí no início do main.lua as seguintes linhas:

local player = require"player"
local pocao = require"pocao"

2. Há um erro de digitação no player.lua: ao retornar, falta um 's' no nome da variável.

3. Alterei o pocao.lua para carregar o módulo item do mesmo diretório:

local item = require("item")

Feitas essas alterações o programa rodou sem erros...

Abraço,
Tomás

Em 28 de junho de 2018 09:41, Daniel Freitas <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="mtUUcyF8AAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">daniel...@...> escreveu:
Estou pegando uma introdução em Lua no YT, através do canal CriaJogo, e estou em uma parte importante que é de POO. Estou utilizando a versão 5.3 da Lua, e o curso é em 5.1. 
Tenho as tabelas abaixo e seu métodos, porém quando faço a utilização da funçao obter_pocao() eu acabo tendo um erro reportado no terminal

attempt to index a nil value (local 'player1')


Abaixo seguem as tabelas(classes) que escrevi. Já revisei, e tentei colocar o indice que eu quero que faça a inserção porém deu o mesmo erro. Fui atras da documentação da linguagem e pelo que entendi o insert faz a inserção no final da tabela.

player.lua:

local player = {}


function player.novo(nome)
 
local instancia = {
 vida
= 200,
 pocoes
= {},
 nome
= nome
 
}


 
function instancia:obter_pocao(pocao)
 table
.insert(self.pocoes, pocao)
 
end


--[
.
.
.
]--


 
return intancia
end


return player

item.lua

local item = {}


function item.novo(tipo, funcao, custo)
 
return {
 tipo
= tipo,
 funcao
= funcao,
 custo
= custo
}
end


return item


pocao.lua

local item = require("entidades/item")
local pocao = {}

function pocao.novo()
local pocao = item.novo("pocao", "vida", 50)
pocao.vida = 50
return pocao
end

return pocao

o meu main, que aqui está se chamando game.lua estou fazendo o uso com a seguinte linha

local player1 = player.novo("Orientadao")
local player2 = player.novo("Objetoncio")


player1
:obter_pocao(pocao.novo()) --> nesta linha ocorre o erro
player2
:obter_pocao(pocao.novo())

Desde já agradeço a atenção de todos. 
Estou ansioso pra descobrir o que pode estar causando.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="mtUUcyF8AAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br.
Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.