Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Configurações iniciais do jogo
- local largura = 15
- local altura = 12
- local minas = {}
- local campo = {}
- local pontuacao = 10
- -- Número total de células sem minas
- local totalCelulas = largura * altura - 5 -- 5 minas
- local paX, paY = 1, 1 -- Posição inicial da pá
- local minaAvisada = {} -- Tabela para armazenar minas já avisadas
- local mensagens = "" -- Mensagens que serão exibidas abaixo do tabuleiro
- local jogoFinalizado = false -- Para verificar se o jogo foi finalizado
- -- Função para inicializar o campo de jogo
- function inicializarCampo()
- -- Preenche o campo com células vazias
- for y = 1, altura do
- campo[y] = {}
- for x = 1, largura do
- campo[y][x] = "⬛" -- Representa uma célula fechada
- end
- end
- -- Coloca as minas no campo sem sobreposição
- local minaPosicoes = {}
- for i = 1, 5 do
- local x, y
- repeat
- x = math.random(1, largura)
- y = math.random(1, altura)
- until not minaPosicoes[y * largura + x] -- Garante que a mina não se sobreponha
- minaPosicoes[y * largura + x] = true
- minas[y * largura + x] = true
- end
- end
- -- Função para contar as minas ao redor de uma célula
- function contarMinas(x, y)
- local contagem = 0
- for dy = -1, 1 do
- for dx = -1, 1 do
- if x + dx >= 1 and x + dx <= largura and y + dy >= 1 and y + dy <= altura then
- if minas[(y + dy) * largura + (x + dx)] then
- contagem = contagem + 1
- end
- end
- end
- end
- return contagem
- end
- -- Função para desenterrar uma célula
- function desenterrar(x, y)
- if minas[y * largura + x] then
- mensagens = "💥BOOM! Você acertou uma mina!\n"
- campo[y][x] = "💣" -- Exibe a mina explodida
- -- Mostra todas as minas restantes no campo
- for y = 1, altura do
- for x = 1, largura do
- if minas[y * largura + x] then
- campo[y][x] = "💣" -- Revela todas as minas
- end
- end
- end
- jogoFinalizado = true -- Marca o fim do jogo
- else
- local contagem = contarMinas(x, y)
- campo[y][x] = "💎" -- Marca a célula como desenterrada
- pontuacao = pontuacao + 1 -- Aumenta a pontuação
- if contagem > 0 then
- mensagens = "📍 Célula (" .. x .. "," .. y .. "): " .. contagem .. " minas ao redor." -- Atualiza a mensagem
- else
- mensagens = "✅ Área segura. Sem minas por perto." -- Se não houver minas ao redor
- end
- end
- -- Verifica se o jogo acabou
- if pontuacao >= totalCelulas then
- mensagens = "🎉 Parabéns! Você completou o campo sem minas! 🏆"
- jogoFinalizado = true
- end
- end
- -- Função para reiniciar o jogo
- function restart()
- minas = {}
- campo = {}
- pontuacao = 0
- paX, paY = 1, 1
- minaAvisada = {} -- Limpa o histórico de minas avisadas
- mensagens = "" -- Limpa as mensagens
- jogoFinalizado = false -- Reseta o status do jogo
- inicializarCampo()
- end
- -- Função para desenhar o tabuleiro
- function desenharTabuleiro()
- local tabuleiro = "Pontuação: " .. pontuacao .. " Script Made by MasterYT😎\n\n⬜"
- for x = 1, largura do
- tabuleiro = tabuleiro .. "⬜"
- end
- tabuleiro = tabuleiro .. "⬜\n"
- for y = 1, altura do
- tabuleiro = tabuleiro .. "⬜"
- for x = 1, largura do
- if x == paX and y == paY then
- tabuleiro = tabuleiro .. "⛏️" -- Emote de pá
- else
- tabuleiro = tabuleiro .. campo[y][x]
- end
- end
- tabuleiro = tabuleiro .. "⬜\n"
- end
- tabuleiro = tabuleiro .. "⬜"
- for x = 1, largura do
- tabuleiro = tabuleiro .. "⬜"
- end
- tabuleiro = tabuleiro .. "⬜\n"
- -- Exibe a mensagem abaixo do tabuleiro, ou opção de tentar novamente se o jogo acabou
- if jogoFinalizado then
- tabuleiro = tabuleiro .. "\n" .. mensagens
- tabuleiro = tabuleiro .. "\n\nEscolha uma ação:\n"
- else
- tabuleiro = tabuleiro .. mensagens
- end
- return tabuleiro
- end
- -- Função para mover a pá
- function moverPa()
- if jogoFinalizado then
- -- Não permite mover a pá após o BOOM
- local escolha = gg.choice(
- {"1. Tentar novamente", "2. Desistir"},
- nil,
- desenharTabuleiro()
- )
- if escolha == 1 then
- restart() -- Reinicia o jogo
- elseif escolha == 2 then
- gg.alert("👋Saindo do jogo... Até mais! Volte logo! 🙋♂️")
- os.exit() -- Sai do jogo
- end
- return
- end
- local tabuleiro = desenharTabuleiro()
- -- Verifica se a célula com a pá contém uma mina e não foi avisada
- if minas[paY * largura + paX] and not minaAvisada[paY * largura + paX] then
- mensagens = "⚠️ Atenção! Mina próxima! Cuidado ao cavar." -- Atualiza a mensagem
- minaAvisada[paY * largura + paX] = true -- Marca a mina como avisada
- else
- -- Verifica se há minas ao redor
- local minasAoRedor = contarMinas(paX, paY)
- if minasAoRedor > 0 then
- mensagens = "⚠️ " .. minasAoRedor .. " minas ao redor. Cuidado!" -- Atualiza com número de minas ao redor
- else
- mensagens = "✅ Área segura. Sem minas por perto." -- Se não houver minas ao redor
- end
- end
- local escolha = gg.choice(
- {" ⬆️ Cima", "⬅️ Esquerda", " ➡️ Direita", " ⬇️ Baixo", " ⛏️ Cavar", "❌ Sair"},
- nil,
- tabuleiro .. "\nEscolha uma ação:"
- )
- -- Verifica se o jogador tentou ir além dos limites do tabuleiro e não permite
- if escolha == 1 and paY > 1 then
- paY = paY - 1
- elseif escolha == 2 and paX > 1 then
- paX = paX - 1
- elseif escolha == 3 and paX < largura then
- paX = paX + 1
- elseif escolha == 4 and paY < altura then
- paY = paY + 1
- elseif escolha == 5 then
- desenterrar(paX, paY) -- Cavando a célula selecionada
- elseif escolha == 6 then
- gg.alert("👋Saindo do jogo... Até mais! volte logo🙋♂️")
- os.exit()
- end
- end
- -- Função principal
- function jogo()
- math.randomseed(os.time())
- restart() -- Garante que o jogo inicie sempre do zero
- while true do
- moverPa()
- end
- end
- -- Iniciar o jogo
- jogo()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement