├── .gitignore ├── assets ├── bb.jpeg ├── ga.png ├── hm.jpg ├── t3.jpg ├── MK-2.jpg ├── alexk.jpg ├── death.wav ├── f2000.jpg ├── gta.jpeg ├── laser.wav ├── reset.png ├── aladim.jpg ├── alien1.gif ├── alien2.gif ├── alien3.gif ├── alien4.gif ├── alien5.gif ├── asterix.jpg ├── ayrton.jpg ├── clouds.png ├── crash.jpeg ├── favicon.ico ├── hahaha.wav ├── marvel.webp ├── pac-man.wav ├── sonic1.jpeg ├── sonic2.jpg ├── sonic3.jpeg ├── sonic4.jpg ├── topgear.jpg ├── warped.jpg ├── zelda.webp ├── animaniacs.jpg ├── asterix2.jpeg ├── no-scream.wav ├── tartaruga.wav ├── batandrobin.jpeg ├── bomberman4.jpeg ├── castlevania.jpg ├── darth-vader.mp3 ├── familiaadams.jpeg ├── super-mario.jpg ├── captura-de-tela.png ├── super-mario-world.png ├── BatmanReturns_SMS_title.png └── Donkey_Kong_Country_capa.png ├── stars.js ├── README.md ├── search-logic.js ├── index.html ├── mini-game.js ├── data.js └── styles.css /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | imersao-dev.iml -------------------------------------------------------------------------------- /assets/bb.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/bb.jpeg -------------------------------------------------------------------------------- /assets/ga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/ga.png -------------------------------------------------------------------------------- /assets/hm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/hm.jpg -------------------------------------------------------------------------------- /assets/t3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/t3.jpg -------------------------------------------------------------------------------- /assets/MK-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/MK-2.jpg -------------------------------------------------------------------------------- /assets/alexk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/alexk.jpg -------------------------------------------------------------------------------- /assets/death.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/death.wav -------------------------------------------------------------------------------- /assets/f2000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/f2000.jpg -------------------------------------------------------------------------------- /assets/gta.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/gta.jpeg -------------------------------------------------------------------------------- /assets/laser.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/laser.wav -------------------------------------------------------------------------------- /assets/reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/reset.png -------------------------------------------------------------------------------- /assets/aladim.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/aladim.jpg -------------------------------------------------------------------------------- /assets/alien1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/alien1.gif -------------------------------------------------------------------------------- /assets/alien2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/alien2.gif -------------------------------------------------------------------------------- /assets/alien3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/alien3.gif -------------------------------------------------------------------------------- /assets/alien4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/alien4.gif -------------------------------------------------------------------------------- /assets/alien5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/alien5.gif -------------------------------------------------------------------------------- /assets/asterix.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/asterix.jpg -------------------------------------------------------------------------------- /assets/ayrton.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/ayrton.jpg -------------------------------------------------------------------------------- /assets/clouds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/clouds.png -------------------------------------------------------------------------------- /assets/crash.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/crash.jpeg -------------------------------------------------------------------------------- /assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/favicon.ico -------------------------------------------------------------------------------- /assets/hahaha.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/hahaha.wav -------------------------------------------------------------------------------- /assets/marvel.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/marvel.webp -------------------------------------------------------------------------------- /assets/pac-man.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/pac-man.wav -------------------------------------------------------------------------------- /assets/sonic1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/sonic1.jpeg -------------------------------------------------------------------------------- /assets/sonic2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/sonic2.jpg -------------------------------------------------------------------------------- /assets/sonic3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/sonic3.jpeg -------------------------------------------------------------------------------- /assets/sonic4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/sonic4.jpg -------------------------------------------------------------------------------- /assets/topgear.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/topgear.jpg -------------------------------------------------------------------------------- /assets/warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/warped.jpg -------------------------------------------------------------------------------- /assets/zelda.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/zelda.webp -------------------------------------------------------------------------------- /assets/animaniacs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/animaniacs.jpg -------------------------------------------------------------------------------- /assets/asterix2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/asterix2.jpeg -------------------------------------------------------------------------------- /assets/no-scream.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/no-scream.wav -------------------------------------------------------------------------------- /assets/tartaruga.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/tartaruga.wav -------------------------------------------------------------------------------- /assets/batandrobin.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/batandrobin.jpeg -------------------------------------------------------------------------------- /assets/bomberman4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/bomberman4.jpeg -------------------------------------------------------------------------------- /assets/castlevania.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/castlevania.jpg -------------------------------------------------------------------------------- /assets/darth-vader.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/darth-vader.mp3 -------------------------------------------------------------------------------- /assets/familiaadams.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/familiaadams.jpeg -------------------------------------------------------------------------------- /assets/super-mario.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/super-mario.jpg -------------------------------------------------------------------------------- /assets/captura-de-tela.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/captura-de-tela.png -------------------------------------------------------------------------------- /assets/super-mario-world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/super-mario-world.png -------------------------------------------------------------------------------- /assets/BatmanReturns_SMS_title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/BatmanReturns_SMS_title.png -------------------------------------------------------------------------------- /assets/Donkey_Kong_Country_capa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ijrodrigues/retro-search/HEAD/assets/Donkey_Kong_Country_capa.png -------------------------------------------------------------------------------- /stars.js: -------------------------------------------------------------------------------- 1 | // Função para criar as estrelas 2 | function criarEstrelas(quantidade) { 3 | const estrelasDiv = document.querySelector('.estrelas'); 4 | for (let i = 0; i < quantidade; i++) { 5 | const estrela = document.createElement('div'); 6 | estrela.classList.add('estrela'); 7 | estrela.style.top = `${Math.random() * 100}%`; 8 | estrela.style.left = `${Math.random() * 100}%`; 9 | estrela.style.animationDelay = `${Math.random() * 2}s`; // Adiciona um delay aleatório para o piscar 10 | estrelasDiv.appendChild(estrela); 11 | } 12 | } 13 | 14 | // Chamando a função para criar estrelas 15 | criarEstrelas(200); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 🎮 Demo 2 | Clique aqui: [Retro Search - Demo](https://ijrodrigues.github.io/retro-search/) 3 | 4 | # Retro Search 5 | 6 | Este é o projeto **Retro Search**, criado para a **Imersão de Desenvolvimento** feita pela **Alura** e pelo **Google Gemini**. O objetivo do projeto é criar um buscador de jogos retro, onde os usuários podem pesquisar por jogos, filtrar por plataformas e ser redirecionado para jogar os títulos. 7 | 8 | ![Print do Site](https://github.com/ijrodrigues/retro-search/blob/master/assets/captura-de-tela.png?raw=true) 9 | 10 | ## 📚 Descrição 11 | O **Retro Search** permite que você pesquise por jogos retro clássicos e os jogue diretamente no navegador. Você pode buscar por título ou filtrar por plataforma, como Nintendo, Master System, e PlayStation. 12 | 13 | ## 🚀 Tecnologias 14 | Este projeto foi desenvolvido usando apenas: 15 | - **HTML5** 16 | - **CSS3** 17 | - **JavaScript (ES6+)** 18 | 19 | ## 🛠️ Como Executar Localmente 20 | 21 | 1. Clone o repositório: 22 | git clone https://github.com/ijrodrigues/retro-search.git 23 | 24 | 2. Navegue até o diretório do projeto: 25 | cd retro-search 26 | 27 | 3. Abra o arquivo index.html 28 | Você pode abrir o arquivo index.html diretamente em seu navegador para visualizar o projeto. 29 | 30 | ## 💡 Como Contribuir 31 | Se você quiser contribuir com melhorias, novas funcionalidades ou correções de bugs, siga as etapas abaixo: 32 | 33 | Faça um fork deste repositório. 34 | Crie uma nova branch para a sua feature (git checkout -b feature/nova-feature). 35 | Faça commit das suas alterações (git commit -m 'Adicionar nova feature'). 36 | Faça push para a branch (git push origin feature/nova-feature). 37 | Abra um Pull Request. 38 | 39 | 40 | ## 📜 Licença 41 | Este projeto está licenciado sob os termos da licença MIT. 42 | Todos os direitos sobre os jogos, imagens e marcas mencionadas pertencem às suas respectivas empresas. 43 | Não há intenção de violar qualquer direito autoral ou de propriedade intelectual. 44 | Este projeto foi desenvolvido apenas para fins educacionais e não possui fins comerciais. 45 | -------------------------------------------------------------------------------- /search-logic.js: -------------------------------------------------------------------------------- 1 | import {games} from './data.js'; 2 | 3 | // Função para mostrar os jogos filtrados com base na busca 4 | document.getElementById('searchInput').addEventListener('input', function () { 5 | const query = this.value.toLowerCase(); 6 | const resultsContainer = document.getElementById('results'); 7 | 8 | if (query.length !== 0) { 9 | const filteredGames = games.filter(game => game.name.toLowerCase().includes(query)); 10 | displayGames(filteredGames); 11 | } else { 12 | resultsContainer.innerHTML = ''; 13 | } 14 | }); 15 | 16 | // Função para exibir todos os jogos sem filtro 17 | document.getElementById('showAllBtn').addEventListener('click', function () { 18 | displayGames(games); 19 | }); 20 | 21 | // Função para exibir jogos filtrados pela plataforma Nintendo 22 | document.getElementById('showNintendoBtn').addEventListener('click', function () { 23 | const nintendoGames = games.filter(game => game.platform === "Nintendo"); 24 | displayGames(nintendoGames); 25 | }); 26 | 27 | // Função para exibir jogos filtrados pela plataforma Master System 28 | document.getElementById('showMasterSystemBtn').addEventListener('click', function () { 29 | const masterSystemGames = games.filter(game => game.platform === "Master System"); 30 | displayGames(masterSystemGames); 31 | }); 32 | 33 | // Função para exibir jogos filtrados pela plataforma PlayStation 34 | document.getElementById('showPlayStationBtn').addEventListener('click', function () { 35 | const playStationGames = games.filter(game => game.platform === "PlayStation"); 36 | displayGames(playStationGames); 37 | }); 38 | 39 | // Função para exibir os jogos 40 | function displayGames(gameList) { 41 | const resultsContainer = document.getElementById('results'); 42 | resultsContainer.innerHTML = gameList.map(game => ` 43 | 44 |
45 |
46 |
47 |
48 | ${game.name} 49 |
50 |
51 |

${game.name}

52 |

${game.description}

53 |
54 |
55 |
56 |
57 |
58 | `).join(''); 59 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Retro Game Search 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 |
15 |
00:00
16 |

Retro Games

17 | 18 |
19 | 20 | 21 | 22 | 23 |
24 |
25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | -------------------------------------------------------------------------------- /mini-game.js: -------------------------------------------------------------------------------- 1 | let hits = 0; 2 | let currentAlienIndex = 0; 3 | let timerInterval = null; 4 | let startTime = null; 5 | let timerRunning = false; 6 | let gameEnded = false; // Variável para controlar o fim do jogo 7 | 8 | // Lista de aliens com diferentes imagens e número de hits 9 | const aliens = [ 10 | 11 | { imagePath: 'assets/alien1.gif', hitsToKill: 15, class: 'alien' }, 12 | { imagePath: 'assets/alien2.gif', hitsToKill: 20, class: 'alien2' }, 13 | { imagePath: 'assets/alien3.gif', hitsToKill: 30, class: 'alien3' }, 14 | { imagePath: 'assets/alien4.gif', hitsToKill: 30, class: 'alien4' }, 15 | { imagePath: 'assets/alien5.gif', hitsToKill: 100, class: 'alien5' }, 16 | ]; 17 | 18 | const collisionSound = document.getElementById('collision-sound'); 19 | const hahahaSound = document.getElementById('hahaha-sound'); 20 | const deathSound = document.getElementById('death-sound'); 21 | const noSound = document.getElementById('no-sound'); 22 | const darthVaderSound = document.getElementById('darth-vader-sound'); 23 | const pacmanSound = document.getElementById('pacman-sound'); 24 | const tartarugaSound = document.getElementById('tartaruga-sound'); 25 | const restartButton = document.getElementById('restartButton'); 26 | const nave = document.getElementById('nave'); 27 | const timerElement = document.getElementById('timer'); 28 | 29 | // Função para iniciar o cronômetro 30 | function startTimer() { 31 | if (timerRunning || gameEnded) return; // Não reiniciar se o jogo acabou 32 | 33 | startTime = Date.now(); 34 | timerRunning = true; 35 | 36 | timerInterval = setInterval(() => { 37 | const elapsedTime = Date.now() - startTime; 38 | const minutes = Math.floor(elapsedTime / 60000).toString().padStart(2, '0'); 39 | const seconds = Math.floor((elapsedTime % 60000) / 1000).toString().padStart(2, '0'); 40 | timerElement.textContent = `${minutes}:${seconds}`; 41 | }, 1000); 42 | } 43 | 44 | // Função para parar o cronômetro 45 | function stopTimer() { 46 | clearInterval(timerInterval); 47 | timerRunning = false; 48 | } 49 | 50 | // Função para criar um novo alien com base no índice atual 51 | function criarAlien() { 52 | const alienData = aliens[currentAlienIndex]; 53 | 54 | if (!alienData) { 55 | stopTimer(); // Para o cronômetro quando o último alien for derrotado 56 | gameEnded = true; // Define o jogo como finalizado 57 | restartButton.style.display = 'block'; // Mostra o botão de reiniciar 58 | nave.remove(); 59 | return; 60 | } 61 | 62 | const alien = document.createElement('img'); 63 | alien.src = alienData.imagePath; // Define a imagem do alien 64 | alien.alt = 'alien'; 65 | alien.classList.add(alienData.class); 66 | document.body.appendChild(alien); 67 | 68 | hits = 0; // Reseta o contador de hits para o novo alien 69 | 70 | let hitsToKill = alienData.hitsToKill; 71 | 72 | 73 | if(currentAlienIndex === 1){ 74 | hahahaSound.play(); 75 | } 76 | 77 | if(currentAlienIndex === 2){ 78 | pacmanSound.play(); 79 | } 80 | 81 | if(currentAlienIndex === 3){ 82 | tartarugaSound.play(); 83 | } 84 | 85 | if(currentAlienIndex === 4){ 86 | darthVaderSound.play(); 87 | } 88 | 89 | // Função para verificar colisão do tiro com o alien 90 | function checkCollision(tiro) { 91 | const tiroRect = tiro.getBoundingClientRect(); 92 | const alienRect = alien.getBoundingClientRect(); 93 | 94 | if (tiroRect.top <= alienRect.bottom && 95 | tiroRect.bottom >= alienRect.top && 96 | tiroRect.left >= alienRect.left && 97 | tiroRect.right <= alienRect.right) { 98 | 99 | hits += 1; 100 | collisionSound.play(); 101 | tiro.remove(); 102 | clearInterval(tiro.checkCollision); 103 | 104 | // Verifica se o alien atingiu o limite de hits 105 | if (hits >= hitsToKill) { 106 | deathSound.play(); 107 | alien.remove(); 108 | if(currentAlienIndex === 4){ 109 | noSound.play(); 110 | } 111 | currentAlienIndex += 1; 112 | criarAlien(); // Cria o próximo alien 113 | } 114 | } 115 | } 116 | 117 | // Disparar tiros quando o usuário clica 118 | document.addEventListener('click', criarTiro); 119 | 120 | function criarTiro() { 121 | if (gameEnded) return; // Não dispara tiros se o jogo acabou 122 | 123 | if (!timerRunning) { 124 | startTimer(); // Inicia o cronômetro ao disparar o primeiro tiro 125 | } 126 | 127 | const nave = document.querySelector('.nave'); 128 | const tiro = document.createElement('div'); 129 | tiro.classList.add('tiro'); 130 | tiro.style.left = `${nave.offsetLeft + nave.offsetWidth / 2 - 15}px`; 131 | document.body.appendChild(tiro); 132 | 133 | tiro.checkCollision = setInterval(() => checkCollision(tiro), 50); 134 | 135 | // Remover o tiro depois que ele sai da tela 136 | setTimeout(() => { 137 | tiro.remove(); 138 | clearInterval(tiro.checkCollision); // Para de checar a colisão se o tiro sair da tela 139 | }, 2000); 140 | } 141 | } 142 | 143 | // Função para mover a nave junto com o mouse 144 | document.addEventListener('mousemove', function (event) { 145 | if (gameEnded) return; // Impede movimentação após o fim do jogo 146 | const nave = document.querySelector('.nave'); 147 | const x = event.clientX; 148 | nave.style.left = `${x}px`; 149 | }); 150 | 151 | // Evento para recarregar a página quando o botão de reiniciar for clicado 152 | restartButton.addEventListener('click', function () { 153 | location.reload(); 154 | }); 155 | 156 | // Inicializa o primeiro alien 157 | criarAlien(); 158 | -------------------------------------------------------------------------------- /data.js: -------------------------------------------------------------------------------- 1 | export const games = [ 2 | { 3 | name: "Super Mario", 4 | description: "Super Mario All-Stars e Super Mario World", 5 | image: "super-mario-world.png", 6 | platform: "Nintendo", 7 | gameLink: "https://www.retrogames.cc/embed/44617-super-mario-all-stars-super-mario-world-improvement.html" 8 | }, 9 | { 10 | name: "Super Bomberman 4", 11 | description: "Jogo de ação e estratégia de 1996", 12 | image: "bomberman4.jpeg", 13 | platform: "Nintendo", 14 | gameLink: "https://www.retrogames.cc/snes-games/super-bomberman-4-english-translated.html" 15 | }, 16 | { 17 | name: "Top Gear", 18 | description: "Top Gear é um jogo de corrida de 1992", 19 | image: "topgear.jpg", 20 | platform: "Nintendo", 21 | gameLink: "https://www.retrogames.cc/snes-games/top-gear-usa.html" 22 | }, 23 | { 24 | name: "Donkey Kong Country", 25 | description: "Um jogo revolucionário de 1994", 26 | image: "Donkey_Kong_Country_capa.png", 27 | platform: "Nintendo", 28 | gameLink: "https://www.retrogames.cc/snes-games/donkey-kong-country-usa.html" 29 | }, 30 | { 31 | name: "Família Addams Values", 32 | description: "Um jogo de aventura baseado no filme de 1993", 33 | image: "familiaadams.jpeg", 34 | platform: "Nintendo", 35 | gameLink: "https://www.retrogames.cc/snes-games/addams-family-values-usa-en-fr-de.html" 36 | }, 37 | { 38 | name: "Batman & Robin", 39 | description: "As aventuras de Batman e Robin", 40 | image: "batandrobin.jpeg", 41 | platform: "Nintendo", 42 | gameLink: "https://www.retrogames.cc/snes-games/adventures-of-batman-robin-the-europe.html" 43 | }, 44 | { 45 | name: "Aladdin", 46 | description: "Baseado no filme da Disney de 1992", 47 | image: "aladim.jpg", 48 | platform: "Nintendo", 49 | gameLink: "https://www.retrogames.cc/snes-games/aladdin-usa.html" 50 | }, 51 | { 52 | name: "Animaniacs", 53 | description: "Jogo de plataforma baseado no desenho animado", 54 | image: "animaniacs.jpg", 55 | platform: "Nintendo", 56 | gameLink: "https://www.retrogames.cc/snes-games/animaniacs-usa.html" 57 | }, 58 | { 59 | name: "Marvel Super Heroes", 60 | description: "War of the Gems", 61 | image: "marvel.webp", 62 | platform: "Nintendo", 63 | gameLink: "https://www.retrogames.cc/snes-games/marvel-super-heroes-war-of-the-gems-usa.html" 64 | }, 65 | { 66 | name: "Sonic The Hedgehog (SNES)", 67 | description: "Versão para Super Nintendo", 68 | image: "sonic1.jpeg", 69 | platform: "Nintendo", 70 | gameLink: "https://www.retrogames.cc/mastersystem-games/sonic-genesis-for-master-system.html" 71 | }, 72 | { 73 | name: "Sonic The Hedgehog", 74 | description: "Primeiro lançamento da série Sonic The Hedgehog", 75 | image: "sonic2.jpg", 76 | platform: "Master System", 77 | gameLink: "https://www.retrogames.cc/mastersystem-games/sonic-genesis-for-master-system.html" 78 | }, 79 | { 80 | name: "Sonic The Hedgehog 2", 81 | description: "Sonic The Hedgehog 2 (Europa)", 82 | image: "sonic3.jpeg", 83 | platform: "Master System", 84 | gameLink: "https://www.retrogames.cc/mastersystem-games/sonic-the-hedgehog-2-europe.html" 85 | }, 86 | { 87 | name: "Sonic Chaos", 88 | description: "Terceiro lançamento da série Sonic the Hedgehog", 89 | image: "sonic4.jpg", 90 | platform: "Master System", 91 | gameLink: "https://www.retrogames.cc/mastersystem-games/sonic-chaos-europe.html" 92 | }, 93 | { 94 | name: "Alex Kidd", 95 | description: "Alex Kidd In Miracle World", 96 | image: "alexk.jpg", 97 | platform: "Master System", 98 | gameLink: "https://www.retrogames.cc/mastersystem-games/alex-kidd-in-miracle-world-usa-europe.html" 99 | }, 100 | { 101 | name: "Asterix", 102 | description: "Baseado na série de quadrinhos Asterix", 103 | image: "asterix.jpg", 104 | platform: "Master System", 105 | gameLink: "https://www.retrogames.cc/mastersystem-games/asterix-europe-en-fr-v1-1.html" 106 | }, 107 | { 108 | name: "Asterix and the Secret Mission", 109 | description: "Baseado na série de quadrinhos Asterix", 110 | image: "asterix2.jpeg", 111 | platform: "Master System", 112 | gameLink: "https://www.retrogames.cc/mastersystem-games/asterix-and-the-secret-mission-europe-en-fr-de.html" 113 | }, 114 | { 115 | name: "Ayrton Senna's", 116 | description: "Super Monaco GP II (Europa)", 117 | image: "ayrton.jpg", 118 | platform: "Master System", 119 | gameLink: "https://www.retrogames.cc/mastersystem-games/ayrton-senna-s-super-monaco-gp-ii-europe.html" 120 | }, 121 | { 122 | name: "Batman Returns", 123 | description: "Baseado no filde de 1992", 124 | image: "BatmanReturns_SMS_title.png", 125 | platform: "Master System", 126 | gameLink: "https://www.retrogames.cc/mastersystem-games/batman-returns-europe.html" 127 | }, 128 | { 129 | name: "Black Belt", 130 | description: "Versão do jogo japonês Hokuto no Ken", 131 | image: "bb.jpeg", 132 | platform: "Master System", 133 | gameLink: "https://www.retrogames.cc/mastersystem-games/black-belt-usa-europe.html" 134 | }, 135 | { 136 | name: "Golden Axe", 137 | description: "Jogo de luta com elementos de fantasia medieval", 138 | image: "ga.png", 139 | platform: "Master System", 140 | gameLink: "https://www.retrogames.cc/mastersystem-games/golden-axe-usa-europe.html" 141 | }, 142 | { 143 | name: "Mortal Kombat", 144 | description: "Jogo que revolucionou o gênero de luta", 145 | image: "MK-2.jpg", 146 | platform: "Master System", 147 | gameLink: "https://www.retrogames.cc/mastersystem-games/mortal-kombat-europe.html" 148 | }, 149 | { 150 | name: "Crash Bandicoot", 151 | description: "Um dos jogos mais populares do PlayStation", 152 | image: "crash.jpeg", 153 | platform: "PlayStation", 154 | gameLink: "https://www.retrogames.cc/psx-games/crash-bandicoot.html" 155 | }, 156 | { 157 | name: "FIFA 2000", 158 | description: "Jogo de futebol lançado em 1999", 159 | image: "f2000.jpg", 160 | platform: "PlayStation", 161 | gameLink: "https://www.retrogames.cc/psx-games/fifa-2000.html" 162 | }, 163 | { 164 | name: "Tekken 3", 165 | description: "Jogo de luta lançado em 1997", 166 | image: "t3.jpg", 167 | platform: "PlayStation", 168 | gameLink: "https://www.retrogames.cc/psx-games/tekken-3.html" 169 | }, 170 | { 171 | name: "Castlevania", 172 | description: "Symphony Of The Night", 173 | image: "castlevania.jpg", 174 | platform: "PlayStation", 175 | gameLink: "https://www.retrogames.cc/psx-games/castlevania-symphony-of-the-night.html" 176 | }, 177 | { 178 | name: "Crash Bandicoot Warped", 179 | description: "Terceiro jogo da série", 180 | image: "warped.jpg", 181 | platform: "PlayStation", 182 | gameLink: "https://www.retrogames.cc/psx-games/crash-bandicoot-warped.html" 183 | }, 184 | { 185 | name: "Grand Theft Auto", 186 | description: "O primeiro jogo da série GTA", 187 | image: "gta.jpeg", 188 | platform: "PlayStation", 189 | gameLink: "https://www.retrogames.cc/psx-games/grand-theft-auto.html" 190 | }, 191 | { 192 | name: "Harvest Moon", 193 | description: "Back to Nature", 194 | image: "hm.jpg", 195 | platform: "PlayStation", 196 | gameLink: "https://www.retrogames.cc/psx-games/harvest-moon-back-to-nature.html" 197 | }, 198 | ]; -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | /* Importando a fonte */ 2 | @import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap'); 3 | 4 | /* Estilo do fundo e das estrelas */ 5 | body { 6 | background-color: black; 7 | color: white; 8 | font-family: 'Press Start 2P', cursive; 9 | margin: 0; 10 | padding: 0; 11 | width: 100%; 12 | height: 100%; 13 | overflow-x: hidden; 14 | } 15 | 16 | .estrelas { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | width: 100%; 21 | height: 100%; 22 | pointer-events: none; 23 | overflow: hidden; 24 | } 25 | 26 | .estrela { 27 | position: absolute; 28 | width: 2px; 29 | height: 2px; 30 | background-color: white; 31 | border-radius: 50%; 32 | animation: twinkling 2s infinite, moveStar 30s linear infinite; 33 | } 34 | 35 | @keyframes twinkling { 36 | 0% { 37 | transform: scale(1); 38 | opacity: 1; 39 | } 40 | 50% { 41 | transform: scale(1.5); 42 | opacity: 0.5; 43 | } 44 | 100% { 45 | transform: scale(1); 46 | opacity: 1; 47 | } 48 | } 49 | 50 | @keyframes moveStar { 51 | 0% { 52 | transform: translate(0, 0); 53 | } 54 | 50% { 55 | transform: translate(50px, 50px); 56 | } 57 | 100% { 58 | transform: translate(0, 0); 59 | } 60 | } 61 | 62 | /* Estilo da nave */ 63 | .nave { 64 | position: fixed; 65 | bottom: 20px; 66 | left: 50%; 67 | transform: translateX(-50%); 68 | width: 0; 69 | height: 0; 70 | border-left: 15px solid transparent; 71 | border-right: 15px solid transparent; 72 | border-bottom: 25px solid #FFD700; 73 | transition: left 0.1s linear; 74 | } 75 | 76 | @keyframes moverNave { 77 | 0% { transform: translateX(-50%) translateY(0); } 78 | 50% { transform: translateX(-50%) translateY(-30px); } 79 | 100% { transform: translateX(-50%) translateY(0); } 80 | } 81 | 82 | /* Estilo dos tiros */ 83 | .tiro { 84 | position: fixed; 85 | bottom: 20px; 86 | width: 2px; 87 | height: 10px; 88 | background-color: #FF0066; 89 | animation: moverTiro 2s linear infinite; 90 | } 91 | 92 | @keyframes moverTiro { 93 | 0% { 94 | bottom: 50px; 95 | opacity: 1; 96 | } 97 | 50% { 98 | bottom: 50%; 99 | opacity: 1; 100 | } 101 | 90% { 102 | bottom: 95%; 103 | opacity: 0; 104 | } 105 | 100% { 106 | bottom: 100%; 107 | opacity: 0; 108 | } 109 | } 110 | 111 | /* Estilo do alien */ 112 | .alien { 113 | position: absolute; 114 | top: 0; 115 | left: -5%; 116 | animation: moverAlien 30s linear infinite; 117 | width: 50px; 118 | height: 80px; 119 | user-select: none; 120 | } 121 | 122 | .alien2 { 123 | position: absolute; 124 | top: 5px; 125 | left: -5%; 126 | animation: moverAlien 15s linear infinite; 127 | width: 80px; 128 | height: 80px; 129 | user-select: none; 130 | } 131 | 132 | @keyframes moverAlien4 { 133 | 0% { 134 | transform: translateX(0) translateY(500px); /* Início do movimento */ 135 | } 136 | 25% { 137 | transform: translateX(calc(25vw)) translateY(200px); /* Movimento para direita e para baixo */ 138 | } 139 | 50% { 140 | transform: translateX(calc(50vw)) translateY(-20px); /* Movimento para direita e para cima */ 141 | } 142 | 75% { 143 | transform: translateX(calc(75vw)) translateY(250px); /* Movimento para direita e para baixo */ 144 | } 145 | 100% { 146 | transform: translateX(calc(100vw)) translateY(0); /* Final do movimento, volta à posição inicial */ 147 | } 148 | } 149 | 150 | .alien4 { 151 | position: absolute; 152 | top: 0; 153 | left: -5%; 154 | animation: moverAlien4 5s linear infinite; 155 | width: 100px; 156 | height: 100px; 157 | user-select: none; 158 | } 159 | 160 | .alien3 { 161 | position: absolute; 162 | top: 0; 163 | left: -5%; 164 | animation: moverAlien3 10s linear infinite; 165 | width: 100px; 166 | height: 100px; 167 | user-select: none; 168 | } 169 | 170 | @keyframes moverAlien3 { 171 | 0% { 172 | transform: translateX(0); 173 | } 174 | 20% { 175 | transform: translateX(calc(80vw + 10px)); 176 | } 177 | 30% { 178 | transform: translateX(calc(40vw + 10px)); 179 | } 180 | 90% { 181 | transform: translateX(calc(100vw + 10px)); 182 | } 183 | 100% { 184 | transform: translateX(0); 185 | } 186 | } 187 | 188 | .alien5 { 189 | position: absolute; 190 | top: 0; 191 | left: -5%; 192 | animation: moverAlien5 20s linear infinite; 193 | width: 350px; 194 | height: 250px; 195 | user-select: none; 196 | } 197 | 198 | @keyframes moverAlien5 { 199 | 0% { 200 | transform: translateX(0); 201 | } 202 | 50% { 203 | transform: translateX(calc(2vw)); 204 | } 205 | 100% { 206 | transform: translateX(0); 207 | } 208 | } 209 | 210 | @keyframes moverAlien { 211 | 0% { 212 | transform: translateX(0); 213 | } 214 | 50% { 215 | transform: translateX(calc(100vw + 10px)); 216 | } 217 | 100% { 218 | transform: translateX(0); 219 | } 220 | } 221 | 222 | /* Estilo geral da página */ 223 | .container { 224 | text-align: center; 225 | padding-top: 40px; 226 | z-index: 1; 227 | position: relative; 228 | overflow-y: auto; 229 | overflow-x: hidden; 230 | padding-bottom: 80px; 231 | } 232 | 233 | .title { 234 | user-select: none; 235 | margin-bottom: 0; 236 | font-size: 2em; 237 | color: #FFD700; 238 | text-shadow: 239 | 4px 4px 0 #FF0066, 240 | 8px 8px 0 #000; 241 | } 242 | 243 | input[type="text"] { 244 | width: 60%; 245 | margin-top: 20px; 246 | padding: 8px; 247 | font-size: 0.9em; 248 | text-align: center; 249 | border: 2px solid #FFD700; 250 | background-color: black; 251 | color: #00FF00; 252 | border-radius: 5px; 253 | outline: none; 254 | } 255 | 256 | input[type="text"]::placeholder { 257 | color: #9d8c2f; 258 | font-size: 0.9rem; 259 | user-select: none; 260 | } 261 | 262 | .results { 263 | margin-top: 30px; 264 | display: grid; 265 | grid-template-columns: repeat(4, 1fr); 266 | gap: 15px; 267 | padding: 0 10px; 268 | overflow: hidden; 269 | } 270 | 271 | .sn-wrapper { 272 | display: flex; 273 | align-items: center; 274 | justify-content: center; 275 | background-color: transparent; /* Permite que o fundo fique visível */ 276 | padding: 10px; 277 | cursor: pointer; 278 | } 279 | 280 | .sn-wrapper:hover { 281 | transform: scale(1.05); 282 | } 283 | 284 | .sn-ear { 285 | background-color: #3f3f3f; 286 | border: 2px solid #333; 287 | width: 10%; /* Largura menor para as orelhas */ 288 | height: 200px; /* Altura ajustada */ 289 | box-shadow: 6px 6px 0 #212121, 0 0 10px rgba(0, 0, 0, 0.5); 290 | position: relative; 291 | } 292 | 293 | .left-ear { 294 | border-radius: 7px 0 0 7px; 295 | z-index: 0; 296 | } 297 | 298 | .right-ear { 299 | border-radius: 0 7px 7px 0; 300 | z-index: 1; 301 | } 302 | 303 | .sn-center { 304 | background-color: #555; 305 | border: 2px solid #333; 306 | height: 200px; /* Altura ajustada */ 307 | width: 70%; /* Largura maior para o centro */ 308 | display: flex; 309 | flex-direction: column; 310 | justify-content: center; 311 | align-items: center; 312 | border-radius: 10px; 313 | padding: 10px; 314 | box-shadow: 6px 6px 0 #212121, 0 0 10px rgba(0, 0, 0, 0.5); 315 | position: relative; 316 | } 317 | 318 | .sn-image { 319 | background-color: #333; 320 | padding: 5px; 321 | border-radius: 10px; 322 | box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5); 323 | margin-bottom: 10px; 324 | width: 100%; 325 | max-height: 100px; 326 | } 327 | 328 | .sn-image img { 329 | width: 100%; 330 | height: auto; 331 | max-height: 100px; 332 | border-radius: 8px; 333 | object-fit: cover; 334 | } 335 | 336 | .sn-label { 337 | background-color: #444; 338 | padding: 10px; 339 | border-radius: 10px; 340 | box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5); 341 | width: 100%; 342 | box-sizing: border-box; 343 | } 344 | 345 | .sn-label h3 { 346 | margin: 0; 347 | font-size: 0.7em; 348 | color: #FFD700; 349 | } 350 | 351 | .sn-label p { 352 | font-size: 0.5em; 353 | color: #FFF; 354 | margin: 5px 0 0; 355 | text-align: center; 356 | } 357 | 358 | /* Estilo do botão de reiniciar */ 359 | .restart-button { 360 | position: absolute; 361 | top: 20px; 362 | right: 50px; 363 | width: 90px; 364 | height: 65px; 365 | cursor: pointer; 366 | z-index: 1000; 367 | display: none; 368 | user-select: none; 369 | transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out; 370 | } 371 | 372 | .restart-button:hover { 373 | transform: translateY(5px); 374 | box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3); 375 | } 376 | 377 | .footer{ 378 | position: fixed; 379 | bottom: 40px; 380 | left: 0; 381 | padding: 10px; 382 | font-size: 0.2em; 383 | user-select: none; 384 | } 385 | 386 | #github-link{ 387 | color: #3fe0ff; 388 | text-decoration: none; 389 | text-wrap: nowrap; 390 | display: inline; 391 | } 392 | 393 | .filters{ 394 | margin-top: 0; 395 | display: flex; 396 | justify-content: center; 397 | gap: 10px; 398 | } 399 | 400 | .filter-btn { 401 | margin-top: 7px; 402 | padding: 5px 10px; 403 | font-size: 0.6rem; 404 | background-color: #FFD700; 405 | color: black; 406 | border: none; 407 | border-radius: 5px; 408 | cursor: pointer; 409 | display: block; 410 | font-family: 'Press Start 2P', cursive; 411 | transition: background-color 0.3s ease; 412 | user-select: none; 413 | } 414 | 415 | .filter-btn:hover { 416 | background-color: #FFA500; 417 | } 418 | 419 | .game-link{ 420 | text-decoration: none; 421 | user-select: none; 422 | } 423 | 424 | .timer { 425 | position: absolute; 426 | top: 20px; 427 | left: 20px; 428 | font-size: 18px; 429 | color: #FFD700; 430 | font-family: 'Press Start 2P', cursive; 431 | z-index: 1000; 432 | user-select: none; 433 | } 434 | 435 | .death-star { 436 | position: fixed; 437 | bottom: -30px; 438 | left: 40%; 439 | width: 100%; 440 | height: 960px; 441 | background-image: url('assets/clouds.png'); 442 | background-repeat: no-repeat; 443 | background-position: bottom; 444 | z-index: -1; 445 | } --------------------------------------------------------------------------------