Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dpbm/coderchallenge-dsin-2023
Meu projeto para o DSIN Coder Challenge 2023
https://github.com/dpbm/coderchallenge-dsin-2023
algorithms blessed challenge coder dsin duck interface noejs npm pnpm project survival terminal zombies zombies-game
Last synced: about 3 hours ago
JSON representation
Meu projeto para o DSIN Coder Challenge 2023
- Host: GitHub
- URL: https://github.com/dpbm/coderchallenge-dsin-2023
- Owner: Dpbm
- Created: 2023-10-18T12:42:14.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-23T16:29:50.000Z (12 months ago)
- Last Synced: 2024-04-16T04:59:41.399Z (7 months ago)
- Topics: algorithms, blessed, challenge, coder, dsin, duck, interface, noejs, npm, pnpm, project, survival, terminal, zombies, zombies-game
- Language: JavaScript
- Homepage: https://dpbm.github.io/coderchallenge-dsin-2023/
- Size: 223 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# DSIN codechallenge 2023
https://github.com/Dpbm/coderchallenge-dsin-2023/assets/75098594/5019fba6-dab3-48fd-b0e8-ce6a0b51b74c
![DockerHub workflow](https://github.com/Dpbm/coderchallenge-dsin-2023/actions/workflows/dockerhub.yml/badge.svg)
![GHRC workflow](https://github.com/Dpbm/coderchallenge-dsin-2023/actions/workflows/ghrc.yml/badge.svg)Nesse repositório, você encontrará a minha versão do segundo desafio do `DSIN Coderchallenge 2023`.
Minha ideia para esse projeto foi utilizar `nodejs` e a biblioteca `blessed` para criar uma interface interessante baseada em terminal.
Além disso, para o armazenamento dos dados, foi usado o banco de dados `sqlite3`, pela sua simplicidade e velocidade, usando a seguinte estrutura de tabelas:
[![tabelas](./docs/tables.png)](./docs)
Para diminuir o tempo de execução, todas as informações necessárias são processadas apenas uma vez e armazenadas no banco, assim ao precisar de um dado, é necessário apenas acessar uma tabela do sqlite.
## requirimentos
Para executar esse projeto você precisará de:
* [nodejs](https://nodejs.org/en), versão `18.14.0` ou superior
* [npm](https://www.npmjs.com/), ou similar, como um [pnpm](https://pnpm.io/)/[yarn](https://yarnpkg.com/)
* [sqlite3](https://www.sqlite.org/index.html)além disso, por estar usando `blessed`, é recomendado usar um terminal mais atual como:
* [alacritty](https://github.com/alacritty/alacritty)
* [tilix](https://github.com/gnunn1/tilix)
* [windows terminal](https://github.com/microsoft/terminal)
* [iterm2](https://github.com/microsoft/terminal)
* [tabby](https://github.com/Eugeny/tabby)
* [kitty](https://github.com/kovidgoyal/kitty)## executar
para executar o projeto, primeiro clone o projeto, entre na pasta e instale todas as dependências:
```bash
git clone https://github.com/Dpbm/coderchallenge-dsin-2023.git
cd coderchallenge-dsin-2023
npm install
```após tudo instalado, execute o projeto com:
```bash
npm run start
```Se preferir você pode usar a versão em docker rodando:
```bash
docker run -it dpbm32/coderchallenge-dsin-2023
```ou
```bash
docker-compose run app
````OBS: deixe o terminal em tela cheia para melhor experiência`.
## navegando pelo software
ao executar, você se deparará com uma tela parecida com essa:
![tela incial](./assets/menu.png)
para navegar entre o menu, use as setas do teclado (UP e DOWN). Ao para na opção desejada aperte entre para entrar na opção.
### Ação - Adicionar hospedeiro
![hospedeiro](./assets/form.png)
Na opção `adicionar hospedeiro`, você terá um formulário, para preencher os dados dele, caso algum dado informado não esteja conforme o esperado, uma mensagem aparecerá e mostrará o erro.
Para entrar em cada campo, use, novamente, as setas do teclado (UP e DOWN) e escreva do dado. Ao inserir todos os dados, aperte ENTER uma vez para sair dos campos, e aperte novamente para enviar.
Caso você tenha entrado por engano nessa aba, aperte BACKSPACE e você será retornado para o menu.
### Ação - Classificar zumbis
![classificar](./assets/dados.png)
Nessa opção, você terá uma tabela com todos os dados dos hospedeiros adicionados, incluindo seus dados de força, velocidade e inteligência.
Caso haja muitos dados na tela, use as setas (UP e DOWN) ou o mouse para descer ou subir a lista.
Para retornar ao menu aperte BACKSPACE.
## Ação - Pato
![pato](./assets/pato.png)
Por fim, a ação `Pato`, simulará o encontro com um zumbi, pegando aleatoriamente no banco um zumbi e descrevendo seus atributos e como o sistema pode fazer para o pato atacar ou se defender.
Após o carregamento, o software mostrará uma mensagem com todos os dados e o que fazer.
![pato-exemplo](./assets/pato_exemplo.png)
Para voltar ao menu pressione BACKSPACE.
## SAIR
Para sair do projeto, aperte Ctrl+c
## TODOS
Devido ao tempo para a produção do projeto, algumas coisas ainda podem ser aprimoradas dentre elas estão:
* abstrair melhor as funções
* utilizar orientação a objetos
* definir melhor as responsabilidades
* melhorar os algoritmos usados## Problemas
Caso você encontre algum erro ou melhoria durante alguma etapa, sinta-se à vontade para abrir uma issue. E, caso você saiba como resolver, abra um pull request com a sua solução.
Lembre-se de ser gentil e paciente :)