Skip to content

Instantly share code, notes, and snippets.

@romaodesouza
Created January 21, 2024 16:38
Show Gist options
  • Save romaodesouza/fdc5690f27a65972f9080d575d25f0aa to your computer and use it in GitHub Desktop.
Save romaodesouza/fdc5690f27a65972f9080d575d25f0aa to your computer and use it in GitHub Desktop.
-- -*- 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