Em Busca das Moedas de Código: Uma Jornada Inspirada por Super Mario em Javascript 🪙🪙🪙🪙🪙
- #JavaScript
"Mamma mia!" - Prepare-se para uma jornada cósmica repleta de aventuras, risadas e um pouquinho de Javascript mágico. Envolva seu bigode interno, coloque seu boné vermelho reluzente e junte-se a mim em uma exploração épica pelo Reino do Código, onde somos todos heróis como o intrépido Super Mario!
Saltando pelos Canos do "Foreach" e "For"
Ei, ouça! Você já se imaginou saltando por canos como o Mario? Bem, com o foreach e o for, você pode! Imagine cada elemento de um array como um cano a explorar e a cada iteração você ganha uma moeda valiosa de conhecimento:🪙
// Definição de um array chamado powerUps contendo itens de power-ups
const powerUps = ["Cogumelo", "Flor de Fogo", "Estrela"];
// Definição de um array chamado enemies contendo tipos de inimigos
const enemies = ["Goomba", "Koopa", "Blooper"];
// Utilização do método forEach para percorrer cada elemento do array powerUps
powerUps.forEach(powerUp => {
// Imprime uma mensagem no console, indicando que um power-up está sendo pego
console.log(`Pegando: ${powerUp}`);
});
// Utilização de um loop for...of para percorrer cada elemento do array enemies
for (let enemy of enemies) {
// Imprime uma mensagem no console, indicando que um inimigo está sendo enfrentado
console.log(`Enfrentando: ${enemy}`);
}
Desafio: Percorra um array de itens do mundo "Desert" e exiba cada um deles com uma mensagem criativa. Exemplo: "Explorando as Dunas: Cogumelo encontrado!".
Recompensa: Ganhe uma moeda de codigo do mundo "Desert"!
A Grande Transformação: "Map" e "Filter" no Estilo Super Mario
Como Mario se transforma com cogumelos mágicos, nós transformamos dados com o map e o filter! Dê uma olhada: 🪙
// Definição de um array chamado coins contendo valores numéricos
const coins = [5, 10, 15, 20, 25];
// Utilização do método map para criar um novo array (doubledCoins) aplicando uma operação de duplicação a cada elemento de coins
const doubledCoins = coins.map(coin => coin * 2);
// Imprime o novo array doubledCoins, que contém os valores das moedas originais duplicados
console.log(doubledCoins); // [10, 20, 30, 40, 50]
// Utilização do método filter para criar um novo array (goldenCoins) contendo apenas os valores das moedas maiores ou iguais a 20
const goldenCoins = coins.filter(coin => coin >= 20);
// Imprime o novo array goldenCoins, que contém os valores das moedas originais que são iguais ou maiores que 20
console.log(goldenCoins); // [20, 25]
Desafio: Crie um novo array multiplicando os valores do array de moedas por 5, vamos coletar moedas vermelhas.
Recompensa: Receba cinco moedas de codigo do mundo "Mushroom"!
A Magia do Tempo com "SetTimeout": Salto Temporal Mario-Style
Lembra quando o Mario espera pacientemente pelo momento certo? O setTimeout é como aquele salto no tempo épico que nos permite executar ações no momento perfeito:
// Imprime a contagem regressiva e a instrução para pular no console
console.log("3... 2... 1... Pular!");
// Define um temporizador para executar a função após um atraso de 2000 milissegundos (2 segundos)
setTimeout(() => {
// Função de callback que será executada após o atraso definido
console.log("Woohoo! Pulou no Goompa no tempo certo!");
}, 2000);
Desafio: Use o setTimeout para exibir "Yoshiiiiiiiiii! " após 3 segundos.
Recompensa: Ganhe uma ovo de Yoshi e uma moeda de codigo do mundo dos Yoshi!
Resgatando Princesas (e Dados) com "Fetch" e "Replace"
Nossa missão é clara: resgatar dados como o Mario resgata a Princesa Peach! Com o fetch, exploramos novos horizontes de dados, e com o "replace", trocamos partes de strings como Mario troca de roupas:
// Realiza uma requisição fetch para a URL "https://api.example.com/stardata"
// e começa a sequência de manipulação da resposta usando promessas (.then e .catch)
fetch("https://tgrcode.com/mm2/get_super_worlds")
// A primeira função .then converte a resposta em formato JSON
.then(response => response.json())
// A segunda função .then lida com os dados JSON resultantes e os imprime no console
.then(data => console.log(data))
// O bloco .catch lida com erros de rede ou de processamento de dados
.catch(error => console.error("Erro ao resgatar dados estelares:", error));
// Declaração de uma constante originalMessage contendo uma mensagem inicial
const originalMessage = "Salve a Princesa Peach!";
// Utilização do método .replace para substituir "Peach" por "Dados" na mensagem original
const modifiedMessage = originalMessage.replace("Peach", "Dados");
// Imprime a mensagem modificada no console
console.log(modifiedMessage); // "Salve a Princesa!"
Desafio: Crie uma mensagem substituindo "Peach" por "Dados" e adicione "Estrela encontrada!" no final. Exemplo: "Salve a Princesa Dados! Estrela encontrada!".
Recompensa: Adicione mais uma moeda de codigo à sua coleção!
Saltos Temporais e Túneis Dimensionais: "Format Date" e "Switch Case"
Nosso percurso é repleto de saltos temporais, e como Mario atravessa túneis para mundos diferentes, formatamos datas precisas e fazemos escolhas épicas com o switch case:
// Cria uma nova instância de Date, representando o tempo atual
const currentTime = new Date();
// Formata o tempo atual no formato de hora local usando o idioma "pt-BR"
const formattedTime = currentTime.toLocaleTimeString("pt-BR");
// Imprime a hora atual formatada no console
console.log(`Hora atual: ${formattedTime}`);
// Declaração de uma constante chamada challenge com o valor "boss"
const challenge = "boss";
// Estrutura de controle switch que avalia o valor da constante challenge
switch (challenge) {
case "puzzle":
// Se o valor for "puzzle", imprime uma mensagem de enigma
console.log("Decifre o enigma para avançar!");
break;
case "boss":
// Se o valor for "boss", imprime uma mensagem de preparação para batalha
console.log("Prepare-se para a batalha final!");
break;
default:
// Se o valor não coincidir com nenhum dos casos anteriores, imprime uma mensagem genérica
console.log("Avance com cautela...");
}
Desafio: Modifique o desafio para envolver um enigma de "Ghost Castle". Exemplo: "Decifre o enigma do castelo mal assombrado para avançar!".
Recompensa: Receba duas moedas de codigo do mundo "Ghost Castle"!
A Jornada do "Reduce" e "Split" para a Grande Vitória
Como Mario coleta moedas para vencer, usamos o reduce para somar nossos esforços. E quando é hora de decifrar segredos, o split é nossa ferramenta para desvendar enigmas: Se você coletou todas as moedas de codigo e o ovo de Yoshi agora e o momento final.
// Declaração de um array chamado scores contendo valores numéricos
const scores = [100, 150, 200, 250];
// Utilização do método reduce para somar todos os valores do array scores, começando com um valor inicial de 0
const totalScore = scores.reduce((total, score) => total + score, 0);
// Verifica se o total de moedas é maior ou igual a 10 e se o usuário possui um ovo Yoshi
const hasEnoughCoins = totalScore >= 10;
const hasYoshiEgg = true; // Aqui você pode adicionar a lógica para verificar se o usuário possui um ovo Yoshi
if (hasEnoughCoins && hasYoshiEgg) {
console.log("Parabéns, você salvou o Reino Cogumelo!");
} else {
console.log("Game Over. Tente novamente para salvar o Reino Cogumelo!");
}
// Declaração de uma constante chamada secretMessage contendo uma mensagem
const secretMessage = "Encontre o cogumelo no final do arco-íris!";
// Utilização do método split para dividir a mensagem em palavras, usando o espaço como delimitador
const words = secretMessage.split(" ");
// Imprime o array resultante, que contém as palavras separadas
console.log(words); // ["Encontre", "o", "cogumelo", "no", "final", "do", "arco-íris!"]
E assim, nossa odisseia chega ao clímax! Com nossos poderes Javascript no ponto máximo e o espírito de aventura do Super Mario, estamos prontos para enfrentar qualquer desafio que o mundo da codificação nos reserve. Então, deixe seu bigode brilhar e seu código deslumbrar, porque "It's-a code time!" 🌟🍄🚀