Giter Site home page Giter Site logo

xandyalexandrec / fuscaazul Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 3.15 MB

Fusca Azul Challenge - A racing car game 8-bit style made with React

Home Page: https://fuscaazul.netlify.com/

HTML 3.38% JavaScript 96.18% Shell 0.44%
javacript react challenge game racing fuscaazul 8bit

fuscaazul's Introduction

Fusca Azul Challenge Netlify Status

Jogue em https://fuscaazul.netlify.com/

Desafio técnico

Desenvolver um jogo de corrida de carros.

Ao abrir o jogo, deve aparecer um formulário contendo o campo Nome e um botão Iniciar Corrida. Um contador deve aparecer (3, 2, 1...). Após isso, o carro passará a se movimentar na pista.

O carro poderá alternar entre três lados da pista (esquerda, meio e direita). Podemos usar as teclas A (esquerda), S (meio), D (direita) para alternar a posição do carro. Além disso, também deve ser possível alternar a posição para esquerda ou direita usando as setinhas do teclado.

Bônus

✔️ Pause ao pressionar ESC (ou outra tecla), o jogo é pausado. ⏸

✔️ Obstáculos você tá lá na corrida e repentinamente aparece uma pedra gigante na estrada... O jogo fica bem mais desafiador, não é mesmo? 🤯

✔️ Turbo existem momentos onde é necessário acelerar para chegar a tempo. Que tal adicionar uma funcionalidade de turbo? O uso seria limitado, mas o carro iria ganhar muito mais velocidade!

✔️ Mobile e se o jogo pudesse ser jogado em um smartphone?

✔️ Número de Voltas a corrida possui ponto de saída e chegada. Para cada volta que o carro der, o número de voltas seria incrementado. Você pode colocar o número de voltas onde preferir.

🚫 Multiplayer → esse desafio aqui é moleza, então você quer fazer um pouco de back-end também. Esse bônus consiste em suportar múltiplos jogadores na mesma pista. 👀

🚫 Leaderboard → mais back-end! Que tal armazenar o tempo que cada jogador levou para finalizar a corrida numa leaderboard? Fica mais competitivo!

🚫 Apenas CSS → pra você que é ninja no CSS, temos um bônus especial... e se nenhuma imagem ou vetor fosse usado em todo o desafio? Nenhuma... somente HTML, CSS e JavaScript.

✔️ Fim de Corrida → não é nada divertido ficar correndo em círculos infinitamente, não é mesmo? Para resolver isso, você poderia encerrar a corrida após um determinado número de voltas.

✔️ Link Público → que tal gerar um link público em que qualquer pessoa pode acessar e jogar também? Você pode usar qualquer solução de hospedagem.

✔️ Stack Upnid → na Upnid, usamos React (com Hooks), GraphQL e Styled Components na maioria dos nossos projetos front-end. Ao construir o jogo usando essas tecnologias, você mostrará que, além de um excelente desenvolvedor, também conhece bem o nosso stack! 🙂

✔️ Documentação → uma descrição detalhada contando mais sobre o seu jogo, como fazer build, executá-lo e rodar os testes. Além disso, também gostaríamos de saber mais sobre a estratégia que você adotou para construir o game.

🚫 Testes → boas práticas! Ao enviar uma atualização pro jogo, uma série de testes são executados, garantindo que o ele continua jogável e funcionando como esperado.

Como jogar no Computador

teclas ação
A move para a pista da direita
S move para a pista do meio
D move para a pista da esquerda
move para direita
move para esquerda
T ativa o turbo
ESC pausa o game
SPACE continua o jogo

Como jogar no Celular

teclas ação
swipe left move para direita
swipe right move para esquerda
swipe up ativa o turbo

Stack

  • ReactJS
  • StyledComponents
  • Hooks

Instruções

Desenvolvimento

git clone https://github.com/xandyalexandrec/fuscaazul.git
yarn
yarn start

Produção

git clone https://github.com/xandyalexandrec/fuscaazul.git
yarn
yarn build

Sobre o jogo

Foi utilizado o React com Hooks e StyledComponents para construir o jogo, optei por não utilizar react-router para evitar a exibição do caminho na barra de endereço, além de não ter sido necessário ter toda a estrutura provida pelo react-router.

Components

Em components, você encontrará em sua maioria componentes de exibição e styled components. As regras de negócio ficaram dentro de pages.

Context

Já o Context geral da aplicação ficou em components/Context, lá você terá reducer com funções para salvar o jogador, o savegame, resetar o jogo e mudar rotas.

Pages

Signup

Tela de cadastro de usuário, que ao completar vai para o splash screen.

Splash

Countdown começando pelo nº 3 para preparação do usuário ao jogo.

Game (Core do jogo)

  • index.js: render do jogo
  • constants.js: aqui você poderá trocar atributos que mudam a dinâmica do jogo, como velocidade, tempo de turbo e etc.
  • useBehavior.js: responsável por toda a lógica do jogo em relação a velocidade, distância percorrida, uso de turbo.
  • useCollision.js: responsável por controlar a posição do carro, pedras na pista e verificar colisões
  • useControls.js: resposável pelo controle via teclado e mobile
  • styled.js: styled components no escopo game.

Congrats

Tela de Parabéns com o resultado do jogo.

Game Over

Tela de game over

Prints

Cadastro Splash Game Congrats GameOver

fuscaazul's People

Contributors

dependabot[bot] avatar devworldbr avatar xandyalexandrec avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.