Created
January 21, 2024 16:38
-
-
Save victorromao/fdc5690f27a65972f9080d575d25f0aa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- -*- coding: utf-8 -*- | |
-- Variáveis do jogo | |
local pontuacaoTotal = 0 | |
local numeroRodadas = 0 | |
local continuarJogando = true | |
-- Códigos de escape ANSI para cores | |
local corVermelha = "\27[31m" | |
local corVerde = "\27[32m" | |
local corAzul = "\27[34m" | |
local corReset = "\27[0m" | |
-- Função para sleep | |
function sleep(segundos) | |
local socket = require("socket") | |
socket.select(nil, nil, segundos) | |
end | |
-- Função para limpar a tela com base no sistema operacional | |
function limparTela() | |
if os.name == "Windows" then | |
os.execute("cls") | |
else | |
-- Se não for Windows, imprime várias quebras de linha | |
io.write("\27[2J\27[H") | |
end | |
end | |
-- Exibir mensagens iniciais | |
limparTela() | |
print(corAzul .. "\nBem-vindo(a) ao Disarm The Bomb 1.0\n") | |
print(corVerde .. "A bomba está equipada com 3 fios, e sua missão é cortar um deles para tentar desarmá-la.\nDois desses fios garantem a desativação da bomba, enquanto um resultará em uma explosão.\n" .. corAzul .."Obter sucesso na desativação concede 1 ponto, mas se a bomba explodir, você perderá 1 ponto." .. corReset .. "\n\nBoa sorte!\n") | |
sleep(5) -- Exibe a mensagem por 5 segundos. | |
-- Loop principal do jogo | |
while continuarJogando do | |
-- Chama a função para limpar a tela | |
limparTela() | |
-- Contador de rodadas | |
numeroRodadas = numeroRodadas + 1 | |
-- Escolha aleatória de um fio incorreto | |
local fioErrado = math.random(1, 3) | |
-- Solicitar a escolha do jogador | |
print(corReset .. "Digite o número correspondente ao fio que deseja cortar: 1, 2 ou 3.\n") | |
local fioEscolhido = tonumber(io.read()) | |
-- Avaliar escolha do jogador | |
if fioEscolhido == fioErrado or type(fioEscolhido) ~= "number" then | |
-- Caso de falha | |
print(corVermelha .. "\nLamentavelmente, ao cortar o fio incorreto, a bomba foi acionada e explodiu. Mantenha a determinação para superar este revés na próxima tentativa.\n") | |
if pontuacaoTotal > 0 then | |
pontuacaoTotal = pontuacaoTotal - 1 -- Diminui 1 ponto. | |
end | |
else | |
-- Caso de sucesso | |
print(corVerde .. "\nParabéns! Você habilmente desarmou a bomba, demonstrando coragem e destreza. Vitória conquistada com maestria!\n") | |
pontuacaoTotal = pontuacaoTotal + 1 -- Aumenta 1 ponto. | |
end | |
sleep(3) -- Exibe a mensagem por 3 segundos. | |
-- Verificar se é necessário perguntar se o jogador quer jogar novamente | |
if numeroRodadas % 3 == 0 then | |
limparTela() | |
print(corAzul .. "\nVocê quer jogar novamente? sim ou não.\n") | |
if io.read() == "sim" then | |
print("Vamos para a próxima rodada!\n") | |
else | |
continuarJogando = false | |
end | |
-- Exibe a pontuação e o número de rodadas no singular ou plural. | |
local palavraRodada = (numeroRodadas == 1) and "rodada" or "rodadas" | |
local palavraPonto = (pontuacaoTotal == 1) and "ponto" or "pontos" | |
local corPontuacao = (pontuacaoTotal >= 1) and corVerde or corVermelha | |
print(string.format("\n%sVocê fez %d %s em %d %s. %s\n", corPontuacao, pontuacaoTotal, palavraPonto, numeroRodadas, palavraRodada, corReset)) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment