ZE

Aprendizagem 3

Por ZeNit91, 01 de mai. de 2016 em Programação

script
2
903
ZeNit91Z
01 de maio de 2016 às 13:38

Galera, estou aprendo lua faz pouco tempo e fiz um sisteminha simples de batalha, gostaria de saber se se tem como melhorar, fica ao para galera que puder me ajudar a aprender umas coizinhas novas ^^

boss = {} --tabela dos monstrosboss[1] = {nome = "voce", hp = 10, atac = 4, def = 2,};boss[2] = {nome = "deer", hp = 10, atac = 3, def = 1,};boss[3] = {nome = "wolf", hp = 10, atac = 3, def = 2,};print ("Teste de Consulta a tabela simples\n"); --explicao simplesprint ("Escolha um nome"); -- pedido de nome para personagem principalboss[1].nome = io.read(); -- atribui nome ao personagemwhile true do -- ciclo de comandosprint ("\nComandos (ataque),(exit),(numero) \nExp:1"); --explicao detalhada	x= io.read(); --pede valor de x para consulta de personagem e inimigos	if x == "exit" then -- se digitado exit termina o programa		print ("Fim da Consulta");		break;	elseif x == "ataque" then -- entra no modo de ataque e imprimi os inimigos menos o personagem		print ("Selecione um Alvo:");				for i = 2, #boss do					print (i .. "\) " .. "boss: " .. boss[tonumber(i)].nome); -- rotorna o valor de todos os monstros				end					print ("Selecione um alvo: ");				alvo = io.read(); -- seleciona um alvo				if boss[tonumber(alvo)] == nil or boss[tonumber(alvo)].hp <= 0 then -- verifica se o valor é valido ou se o alvo ainda tem vida					print ("Alvo morto ou invalido");				elseif 	boss[1].hp <= 0 then  -- verifica se voce ainda tem vida, caso nao tenha dá break					print ("Voce Está morto");					break;				elseif alvo == "1" then -- verifica se voce está se atacando					print ("Voce nao pode se atacar, sera direcionado ao inicio");				else					boss[tonumber(alvo)].hp = boss[tonumber(alvo)].hp - (boss[1].atac - boss[tonumber(alvo)].def); -- calcula o dano no alvo e atribui em HP					boss[1].hp = boss[1].hp - (boss[tonumber(alvo)].atac - boss[1].def); -- calcula o dano recebido no personagem e atribui no hp					print ("Voce Atacou: " ..boss[tonumber(alvo)].nome .. " Dano: " .. boss[tonumber(alvo)].def - boss[1].atac .. " Vida Restante: " .. boss[tonumber(alvo)].hp); -- imprime informaçoes de batalha contra inimigos					print (boss[tonumber(alvo)].nome .." te atacou" .. " Dano: " .. boss[tonumber(alvo)].atac - boss[1].def .. " Vida Restate: " .. boss[1].hp); -- imprime informaçoes de batalha contra o personagem					print ("Tete atacar novamente!!"); -- iforma para voce atarcar novamente				end	else		if tonumber(x) == nil or tonumber(x) > #boss then -- verifica se o valor de consulta é valido.			print ("\nAlvo ou comando invalido");		else -- caso o valor de consulta seja valido ele busca na tabela boss			print ("\nNome: "..boss[tonumber(x)].nome);			print ("Vida: "..boss[tonumber(x)].hp .. " Ataque: " .. boss[tonumber(x)].atac .. " Defesa: " .. boss[tonumber(x)].def);		end	endend

Editado Maio 1 por ZeNit91

dalvorsnD
01 de maio de 2016 às 14:35

Já ouviu falar da orientação a objetos? Em lua tem como simular através de metametodos, tu poderia por exemplo abstrair varias coisas em uma classe creature, dai só faria instancias com os attributes de cada um, e faria metodos pra verificar se tem vida e etc, pra adicionar vida, remover e tudo mais