e ae galera essa é segunda parte do tutorial computercraft e nele vamos aprender o basico da programação lua ou seja vamos criar scripts dessa linguagem no mod, nesse tutorial nao vou abordar toda a linguagem lua mesmo por que se fosse para fazer isso eu ia escrever mais um ebook sobre ela e nao um tutorial de sei la quantas partes kkk, entao para começar a gente criar um arquivo de texto no computador do jogo com o comando edit seguido do nome do script no meu caso vou criar um chamado kodo.lua
depois aperte control (ctrl) e aperte em save e por fim control e exit para salvar e sair do editor, para a gente executar o script basta apenas digitar o nome do script sendo ele no meu caso kodo.lua (lembrando que esse meu script nao faz nada por enquanto)
outra forma é usar o comando sh seguido do nome do script
como podemos ver ele nao fez nada isso por que nao tem nenhum codigo no script, entao vamos digitar nosso primeiro codigo ou seja vamos codar pela primeira vez (caso voce ja programe em outra linguagem talvez a milésima vez kkk), para fazer isso temos que abrir de novo o script para editar ele no caso basta digitar o comando edit seguido do nome do script ou podemos criar outro tambem (voce pode criar um script para cada função sendo um para abrir porta outro para ativar redstone, outro para ativar armadilha, ou entao pode criar apenas um unico script com um menu de opções com todas elas, no caso vamos aprender isso mais para frente), tambem antes de tudo preciso falar sobre funções, no caso uma função é um procedimento (um trecho de codigo) pronto que permite voce usar ele sempre que quiser sem precisar rescrever o codigo, por padrao a linguagem lua tem milhares de funçoes prontas que facilita para o programador e as vezes funções necessárias para programar, entre essas funções temos funções que mostra algo na tela, funções que ler teclas pressionadas entre outros milhares de coisas, as funçoes tem uma entrada que chamamos de argumento ou seja todo argumento de uma função é uma entrada para ela que pode ser um numero texto ou qualquer outra coisa (podemos pensar em uma função que soma dois numeros sendo que tem dois argumentos que sao os numeros que vao ser somados ou seja cada script que usar essa função pode passar qualquer numero sem esta limitado a ele), e toda função tem um retorno que é valor que ela retorna depois que função processa aquilo (que poderia ser o resultado do exemplo da função que soma), embora isso seja relativo uma função nao precisa ter argumento como tambem nao precisa ter retorno embora usar argumentos e retorno deixa ela mais dinamica para ser manipulada
para começar vamos digitar um codigo simples que mostra algo na tela para isso vamos usar a função print, para usar o print basta digitar ele e passar o argumento, sendo esse argumento um texto (os textos sao chamados de strings, e todas as strings fica entre aspas), na linguagem lua e muitas outra para chamar uma função basta digitar o nome dela seguido de abre e fecha parenteses, dentro desses parenteses seria o argumento (se tiver mais de um argumento a gente separa por virgula)
agora vamos salvar e executar ele para isso aperte control e depois aperte em save depois control e exit, e por fim executamos novamente com o comando sh
a gente pode usar varias vezes as funções porem tem que ser um embaixo da outra (porem pode dar quantas quebra de linha quiser)
outra função que podemos usar para mostrar algo na tela é o io.write, essa função diferente da anterior que da uma quebra de linha a cada nova função essa é mostrado na mesma linha
tambem é possivel exibir tipos numericos com o print ou com io.write, a diferença que tipos numericos a gente pode fazer operações matematicas diferente das strings, os tipos numericos é representado sem o aspas diferente da string (o tipo numerico 315 é diferente da string "315")
o tipo numerico anterior é chamado de decimal ele é um numero inteiro sem casas decimais, alem dele existe outros como o ponto flutuante (float) que são numeros quebrados
as variaveis são alocação de memoria que permite a gente armazenar valores nela, para armazenar algum valor em uma variavel basta a gente digitar o nome da variavel (pode ser qualquer nome porem nao pode começar com numero e nem ter espaço ou caracteres especiais), depois usamos o operador de atribuição que é o igual ou seja isso indica que estamos atribuido um valor para a variavel e por fim o valor que vamos armazenar que pode ser um tipo numerico ou uma string
podemos ler essa variavel com a função print ou io.write bastando digitar o nome da variavel com isso seria equivalente a esta manipulando o valor dentro da variavel
como dito antes é possivel armazenar outros tipos como numericos
tambem da para armazenar um valor que esteja em uma variavel para outra variavel
podemos juntar (concatenar) duas ou mais strings ou variaveis usando ponto e ponto
tambem podemos fazer o mesmo em uma variavel
é possivel fazer operaçoes matematicas com os tipos numericos, para fazer a operação de adição usamos o mais (+), subtração o menos (-), multiplicação usamos o asterisco (*), divisão usamos o barra (/), para o modulo que é o resto da divisao usamos porcentagem (%), podemos fazer a operação direto dentro da função ou podemos atribuir para uma variavel para manipular o valor
tambem existem funções matematica como por exemplo a raiz quadrada math.sqrt, para usar ela basta a gente passar como argumento o valor e armazenar o retorno em uma variavel
tambem podemos usar o retorno de uma função diretamente dentro de outra
para exibir um numero aleatorio usamos math.random passamos como argumento o numero inicial e o numero final (exemplo de 0 a 100)
para a pessoa escrever alguma coisa e manipular isso usamos a função read e atribuimos ela para uma variavel, no caso o programa vai ficar preso nessa parte ate a pessoa digitar alguma coisa e apertar enter (recomendo tambem usar o print antes indicando para o usuario digitar alguma coisa)
podemos usar a função read para entrar com tipos numericos tambem
alem das funçoes e das operações tambem existem as estruturas e entre elas temos a estrutura condicional que permite executar determinado trecho de codigo ou nao dependendo da condição, essa condição é uma logica booleana onde se a condição for satisfeita é dita como verdadeira se nao dito como falso, uma das estruturas codicionais é o if que executa determinado trecho se a condição for verdadeiro, para usar a estrutura if digitamos o if seguido da condição entre parenteses depois o then, logo depois colocamos o codigo que sera executado apenas se a condição for verdadeira e para terminar o escopo do if usamos o end (ou seja tudo entre o then e o end pertence ao escopo do if com isso so vai ser executado se a condição for verdadeira
a condição que podemos usar ou a logica condicional pode ser igual que retorna verdadeiro se os dois valores forem iguais ou seja so vai executar o trecho do if se os dois valores for igual, para representar o igual usamos duas vezes o igual (==)
pode ser usado string e variaveis tambem
da condição pode ser diferente ou seja retorna verdadeiro e executa o trecho do codigo se os dois valores for diferente um do outro, para o diferente usaos ~= (eu sempre confundo isso com a regex da linguagem perl u.u )
podemos usar a condição maior que retorna verdadeiro se o primeiro numero for maior que o segundo
ou menor caso o primeiro numero seja menor que o segundo
a gente pode usar uma estrutura condicional dentro da outro porem respeitando o escopo deles (sempre quando um escopo for fechado sempre vai fechar de dentro para fora), e uma boa pratica é sempre da um espaço a cada no escopo assim da para diferenciar a qual escopo o codigo pertence
podemos usar o else e conjunto com o if, no caso o else seria o trecho de codigo que seria executado se o if nao for executado ou seja ele é executado se a condição for falsa, para usar o else basta declarar ele depois do codigo do if porem antes do end
tambem existe o elseif que seria varias condição if dentro de um if porem ele so vai executa a primeira que der verdadeiro
alem da estrutura condicional existe a estrutura de repetição que repete determinado trecho de codigo dependendo da condição, sendo uma dessas estrutura o while que repete enquanto for verdadeiro, ou seja ele checa a condição a cada loop se ela for verdadeira ele repete de novo e fica assim nesse loop ate que a condição seja falsa, para evitar loop infinito usamos uma variavel como contador e quando essa variavel chega ate um determinado numero o loop encerra, tambem deve somar o valor em mais um a cada loop para o contador (atribui a propria variavel contador a ela mesmo somando mais um)
outra estrutura de repetição é o for onde podemos especificar o começo e o fim para repetir diferente do while que repete enquanto for verdadeiro, para usar o for basta a gente especificar uma variavel que vai ser o contador depois atribuir para ele o começo e o fim separado por virgula, veja o mesmo exemplo anterior do while com o for
é possivel parar um loop com o break
é possivel retornar a hora com a função os.time, no caso essa função retorna um tipo numerico (float) sendo o numero inteiro a hora e o numero depois do ponto os segundos arredondado, voce pode usar essa função para criar script que automatize tarefas em certo tempo como por exemplo acender as luzes em determinado horario
para pegar o id do computador usamos os.getComputerID
para reinciar o computador usamos a função os.reboot
para desligar usamos a função os.shutdown
para a gente criar, escrever ou ler um arquivo primeiro temos que abrir o arquivo com a permissão especifica de leitura (r), escrita (w), ou concatenação que seria escrito no final do arquivo sem apagar o conteudo dele (a), para a gente criar ou abrir um arquivo usamos a função io.open e passamos como argumento para ela o arquivo que vamos abrir ou criar (para criar um arquivo temos que abrir com permissão de escrita ou concatenação w ou a), seguido da string de pemissão (r,w ou a), tambem temos que atribuir para uma variavel para manipular depois
para gente escrever em um arquivo usamos a função write porem temos que especifica o handle do arquivo que é nada mais nada menos que o nome da variavel que atribuimos o arquivo aberto seguido de dois pontos e a função, tambem temos que usar a função close no final (todas as alteração é salva apenas quando fechamos o arquivo aberto)
para ler o arquivo é parecido porem usamos a permissão de leitura e nao escrita, e a função read e nao a função write (tambem atribuimos ele para uma variavel para manipular)
bom galera esse tutorial nao termina aqui nao vai ter mais uma parte onde vou falar de manipulação de redstone, rednet, alguns periferico e outras coisas, uma coisa legal que voces podem programar em lua para o computador real bastando baixar o intepretador lua para sua maquina e brincar com ele (embora prefiro perl kkk), entao ate a proxima parte \o
by kodo no kami
- Código:
edit kodo.lua
depois aperte control (ctrl) e aperte em save e por fim control e exit para salvar e sair do editor, para a gente executar o script basta apenas digitar o nome do script sendo ele no meu caso kodo.lua (lembrando que esse meu script nao faz nada por enquanto)
- Código:
kodo.lua
outra forma é usar o comando sh seguido do nome do script
- Código:
sh kodo.lua
como podemos ver ele nao fez nada isso por que nao tem nenhum codigo no script, entao vamos digitar nosso primeiro codigo ou seja vamos codar pela primeira vez (caso voce ja programe em outra linguagem talvez a milésima vez kkk), para fazer isso temos que abrir de novo o script para editar ele no caso basta digitar o comando edit seguido do nome do script ou podemos criar outro tambem (voce pode criar um script para cada função sendo um para abrir porta outro para ativar redstone, outro para ativar armadilha, ou entao pode criar apenas um unico script com um menu de opções com todas elas, no caso vamos aprender isso mais para frente), tambem antes de tudo preciso falar sobre funções, no caso uma função é um procedimento (um trecho de codigo) pronto que permite voce usar ele sempre que quiser sem precisar rescrever o codigo, por padrao a linguagem lua tem milhares de funçoes prontas que facilita para o programador e as vezes funções necessárias para programar, entre essas funções temos funções que mostra algo na tela, funções que ler teclas pressionadas entre outros milhares de coisas, as funçoes tem uma entrada que chamamos de argumento ou seja todo argumento de uma função é uma entrada para ela que pode ser um numero texto ou qualquer outra coisa (podemos pensar em uma função que soma dois numeros sendo que tem dois argumentos que sao os numeros que vao ser somados ou seja cada script que usar essa função pode passar qualquer numero sem esta limitado a ele), e toda função tem um retorno que é valor que ela retorna depois que função processa aquilo (que poderia ser o resultado do exemplo da função que soma), embora isso seja relativo uma função nao precisa ter argumento como tambem nao precisa ter retorno embora usar argumentos e retorno deixa ela mais dinamica para ser manipulada
- Código:
edit kodo.lua
para começar vamos digitar um codigo simples que mostra algo na tela para isso vamos usar a função print, para usar o print basta digitar ele e passar o argumento, sendo esse argumento um texto (os textos sao chamados de strings, e todas as strings fica entre aspas), na linguagem lua e muitas outra para chamar uma função basta digitar o nome dela seguido de abre e fecha parenteses, dentro desses parenteses seria o argumento (se tiver mais de um argumento a gente separa por virgula)
- Código:
print("kodo no kami")
agora vamos salvar e executar ele para isso aperte control e depois aperte em save depois control e exit, e por fim executamos novamente com o comando sh
- Código:
sh kodo.lua
a gente pode usar varias vezes as funções porem tem que ser um embaixo da outra (porem pode dar quantas quebra de linha quiser)
- Código:
print("kodo no kami")
print("programando em lua para")
print("o mod computercraft")
outra função que podemos usar para mostrar algo na tela é o io.write, essa função diferente da anterior que da uma quebra de linha a cada nova função essa é mostrado na mesma linha
- Código:
io.write("programando em lua para ")
io.write("o mod computercraft")
tambem é possivel exibir tipos numericos com o print ou com io.write, a diferença que tipos numericos a gente pode fazer operações matematicas diferente das strings, os tipos numericos é representado sem o aspas diferente da string (o tipo numerico 315 é diferente da string "315")
- Código:
print(315)
o tipo numerico anterior é chamado de decimal ele é um numero inteiro sem casas decimais, alem dele existe outros como o ponto flutuante (float) que são numeros quebrados
- Código:
print(3.15)
as variaveis são alocação de memoria que permite a gente armazenar valores nela, para armazenar algum valor em uma variavel basta a gente digitar o nome da variavel (pode ser qualquer nome porem nao pode começar com numero e nem ter espaço ou caracteres especiais), depois usamos o operador de atribuição que é o igual ou seja isso indica que estamos atribuido um valor para a variavel e por fim o valor que vamos armazenar que pode ser um tipo numerico ou uma string
- Código:
fts = "kodo no kami"
podemos ler essa variavel com a função print ou io.write bastando digitar o nome da variavel com isso seria equivalente a esta manipulando o valor dentro da variavel
- Código:
fts = "kodo no kami"
print(fts)
como dito antes é possivel armazenar outros tipos como numericos
- Código:
senha = 123456
print(senha)
tambem da para armazenar um valor que esteja em uma variavel para outra variavel
- Código:
primeiro = "kodo no kami"
segundo = primeiro
print(segundo)
podemos juntar (concatenar) duas ou mais strings ou variaveis usando ponto e ponto
- Código:
nome = "kodo no kami"
print("seu nick e " .. nome)
tambem podemos fazer o mesmo em uma variavel
- Código:
nome = "kodo no kami"
texto = "seu nick e "
final = texto .. nome
print(final)
é possivel fazer operaçoes matematicas com os tipos numericos, para fazer a operação de adição usamos o mais (+), subtração o menos (-), multiplicação usamos o asterisco (*), divisão usamos o barra (/), para o modulo que é o resto da divisao usamos porcentagem (%), podemos fazer a operação direto dentro da função ou podemos atribuir para uma variavel para manipular o valor
- Código:
print(300 + 15)
print(300 - 15)
print(300 * 15)
print(300 / 15)
print(300 % 15)
tambem existem funções matematica como por exemplo a raiz quadrada math.sqrt, para usar ela basta a gente passar como argumento o valor e armazenar o retorno em uma variavel
- Código:
raiz = math.sqrt(9)
print(raiz)
tambem podemos usar o retorno de uma função diretamente dentro de outra
- Código:
print(math.sqrt(9))
para exibir um numero aleatorio usamos math.random passamos como argumento o numero inicial e o numero final (exemplo de 0 a 100)
- Código:
aleatorio = math.random(0,100)
print(aleatorio)
para a pessoa escrever alguma coisa e manipular isso usamos a função read e atribuimos ela para uma variavel, no caso o programa vai ficar preso nessa parte ate a pessoa digitar alguma coisa e apertar enter (recomendo tambem usar o print antes indicando para o usuario digitar alguma coisa)
- Código:
print("digite seu nome: ")
nome = read()
print("seu nome e " .. nome)
podemos usar a função read para entrar com tipos numericos tambem
- Código:
print("digite o primeiro numero: ")
x = read()
print("digite o segundo numero: ")
y = read()
soma = x + y
print(soma)
alem das funçoes e das operações tambem existem as estruturas e entre elas temos a estrutura condicional que permite executar determinado trecho de codigo ou nao dependendo da condição, essa condição é uma logica booleana onde se a condição for satisfeita é dita como verdadeira se nao dito como falso, uma das estruturas codicionais é o if que executa determinado trecho se a condição for verdadeiro, para usar a estrutura if digitamos o if seguido da condição entre parenteses depois o then, logo depois colocamos o codigo que sera executado apenas se a condição for verdadeira e para terminar o escopo do if usamos o end (ou seja tudo entre o then e o end pertence ao escopo do if com isso so vai ser executado se a condição for verdadeira
- Código:
if()
then
end
a condição que podemos usar ou a logica condicional pode ser igual que retorna verdadeiro se os dois valores forem iguais ou seja so vai executar o trecho do if se os dois valores for igual, para representar o igual usamos duas vezes o igual (==)
- Código:
if(315 == 315)
then
print("os dois numeros sao iguais")
end
pode ser usado string e variaveis tambem
- Código:
senha = "kamisama"
if(senha == "kamisama")
then
print("acesso permitido. entre")
end
da condição pode ser diferente ou seja retorna verdadeiro e executa o trecho do codigo se os dois valores for diferente um do outro, para o diferente usaos ~= (eu sempre confundo isso com a regex da linguagem perl u.u )
- Código:
if(315 ~= 100)
then
print("os dois numeros sao diferentes")
end
podemos usar a condição maior que retorna verdadeiro se o primeiro numero for maior que o segundo
- Código:
if(315 > 100)
then
print("o primeiro numero e maior que o segundo")
end
ou menor caso o primeiro numero seja menor que o segundo
- Código:
if(100 < 315)
then
print("o primeiro numero e menor que o segundo")
end
a gente pode usar uma estrutura condicional dentro da outro porem respeitando o escopo deles (sempre quando um escopo for fechado sempre vai fechar de dentro para fora), e uma boa pratica é sempre da um espaço a cada no escopo assim da para diferenciar a qual escopo o codigo pertence
- Código:
valor = 315
if(valor > 100)
then
if(valor < 500)
then
print("o numero e maior que 100 e menor que 500")
end
end
podemos usar o else e conjunto com o if, no caso o else seria o trecho de codigo que seria executado se o if nao for executado ou seja ele é executado se a condição for falsa, para usar o else basta declarar ele depois do codigo do if porem antes do end
- Código:
if(315 == 315)
then
print("isso e verdadeiro")
else
print("isso e falso")
end
tambem existe o elseif que seria varias condição if dentro de um if porem ele so vai executa a primeira que der verdadeiro
- Código:
numero = 2
if(numero == 1)
then
print("o numero foi 1")
elseif(numero == 2)
then
print("o numero foi 2")
elseif(numero == 3)
then
print("o numero foi 3")
else
print("nenhuma delas")
end
alem da estrutura condicional existe a estrutura de repetição que repete determinado trecho de codigo dependendo da condição, sendo uma dessas estrutura o while que repete enquanto for verdadeiro, ou seja ele checa a condição a cada loop se ela for verdadeira ele repete de novo e fica assim nesse loop ate que a condição seja falsa, para evitar loop infinito usamos uma variavel como contador e quando essa variavel chega ate um determinado numero o loop encerra, tambem deve somar o valor em mais um a cada loop para o contador (atribui a propria variavel contador a ela mesmo somando mais um)
- Código:
contador = 0
while(contador < 10)
do
print(contador)
contador = contador + 1
end
outra estrutura de repetição é o for onde podemos especificar o começo e o fim para repetir diferente do while que repete enquanto for verdadeiro, para usar o for basta a gente especificar uma variavel que vai ser o contador depois atribuir para ele o começo e o fim separado por virgula, veja o mesmo exemplo anterior do while com o for
- Código:
for contador = 0,10
do
print(contador)
end
é possivel parar um loop com o break
- Código:
contador = 0
while(1 == 1)
do
if(contador == 315) then
break
end
contador = contador + 1
end
é possivel retornar a hora com a função os.time, no caso essa função retorna um tipo numerico (float) sendo o numero inteiro a hora e o numero depois do ponto os segundos arredondado, voce pode usar essa função para criar script que automatize tarefas em certo tempo como por exemplo acender as luzes em determinado horario
- Código:
hora = os.time()
print(hora)
para pegar o id do computador usamos os.getComputerID
- Código:
id = os.getComputerID()
print(id)
para reinciar o computador usamos a função os.reboot
- Código:
os.reboot()
para desligar usamos a função os.shutdown
- Código:
os.shutdown()
para a gente criar, escrever ou ler um arquivo primeiro temos que abrir o arquivo com a permissão especifica de leitura (r), escrita (w), ou concatenação que seria escrito no final do arquivo sem apagar o conteudo dele (a), para a gente criar ou abrir um arquivo usamos a função io.open e passamos como argumento para ela o arquivo que vamos abrir ou criar (para criar um arquivo temos que abrir com permissão de escrita ou concatenação w ou a), seguido da string de pemissão (r,w ou a), tambem temos que atribuir para uma variavel para manipular depois
- Código:
arquivo = io.open("kami.txt","w")
para gente escrever em um arquivo usamos a função write porem temos que especifica o handle do arquivo que é nada mais nada menos que o nome da variavel que atribuimos o arquivo aberto seguido de dois pontos e a função, tambem temos que usar a função close no final (todas as alteração é salva apenas quando fechamos o arquivo aberto)
- Código:
arquivo = io.open("kami.txt","w")
arquivo:write("isso vai para dentro do arquivo")
arquivo:close()
para ler o arquivo é parecido porem usamos a permissão de leitura e nao escrita, e a função read e nao a função write (tambem atribuimos ele para uma variavel para manipular)
- Código:
arquivo = io.open("kami.txt","r")
leitura = arquivo:read()
arquivo:close()
print(leitura)
bom galera esse tutorial nao termina aqui nao vai ter mais uma parte onde vou falar de manipulação de redstone, rednet, alguns periferico e outras coisas, uma coisa legal que voces podem programar em lua para o computador real bastando baixar o intepretador lua para sua maquina e brincar com ele (embora prefiro perl kkk), entao ate a proxima parte \o
by kodo no kami