Ferramentas do usuário

Ferramentas do site


prog2:jogo_ascii

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

prog2:jogo_ascii [2019/01/31 17:28]
127.0.0.1 edição externa
prog2:jogo_ascii [2019/03/13 15:17] (atual)
maziero
Linha 1: Linha 1:
 +====== Jogo ASCII ======
 +
 +Projeto: desenvolver um jogo em ASCII para executar em terminal texto no Linux.
 +
 +Jogos sugeridos:
 +
 +  * [[https://​pt.wikipedia.org/​wiki/​Space_Invaders|Space Invaders]]
 +  * [[http://​darshak.free.fr/​asctriis/​asctriis.html|Tetris]]
 +  * [[http://​codeincomplete.com/​projects/​boulderdash|Boulder Dash]]
 +  * [[https://​en.wikipedia.org/​wiki/​Pac-Man|Pac-man]]
 +  * [[https://​en.wikipedia.org/​wiki/​River_Raid|River Raid]]
 +  * [[http://​www.mazogs.co.uk|Mazogs]]/​[[https://​en.wikipedia.org/​wiki/​Maziacs|Maziacs]]
 +  * [[https://​en.wikipedia.org/​wiki/​Bomberman|Bomberman]]
 +  * [[https://​en.wikipedia.org/​wiki/​Frogger|Frogger]]
 +  * [[https://​en.wikipedia.org/​wiki/​Flappy_Bird|Flappy Bird]]
 +  * [[http://​www.freegalaga.com/​|Galaga]]
 +  * ... (sugestões dos alunos podem ser analisadas)
 +
 +Requisitos de execução:
 +
 +  * Executar em um terminal de texto do Linux
 +  * Ter **resolução máxima 160×50** caracteres
 +  * Usar cores!
 +  * Mostrar scores/​datas no jogo; os scores devem ser salvos em um arquivo
 +  * Tecla ''​h''​ abre tela de ajuda
 +
 +Requisitos de implementação:​
 +
 +  * Ser desenvolvido em C padrão C99
 +  * Ser implementado em vários arquivos ''​.c''​ e ''​.h''​ separados, respeitando as regras de [[organização de código]]
 +  * Usar a biblioteca **Ncurses** para a gestão do terminal
 +  * Usar [[alocação de memória]] dinâmica
 +  * Usar [[estruturas]]
 +  * Compilar com o flag ''​-Wall''​ sem erros nem avisos
 +  * Usar [[o sistema Make]] para compilação,​ com ao menos os seguintes alvos:
 +    * ''​all'':​ compila e gera o executável
 +    * ''​clean'':​ remove os arquivos temporários (mantém o executável)
 +    * ''​purge'':​ remove tudo, deixando somente os fontes
 +
 +Para instalar os arquivos de desenvolvimento da biblioteca Ncurses no Debian, Ubuntu e correlatos:
 +
 +<​code>​
 +sudo apt-get install libncurses5-dev
 +</​code>​
 +
 +O código de inicialização da biblioteca NCurses, com as configurações necessárias para este projeto, é o seguinte:
 +
 +<code c>
 +  initscr () ;    // inicializa a biblioteca ncurses
 +  raw () ;    // ler teclas de controle (^C, ^Z, etc)
 +  nodelay (stdscr, TRUE) ; // leitura não-bloqueante do teclado
 +  keypad (stdscr, TRUE) ;  // ativa leitura de teclas de setas, Fn, etc
 +  noecho () ;    // não escreve as teclas lidas na tela
 +  curs_set (0) ;    // esconde o cursor do terminal
 +</​code>​
 +
 +Estrutura de jogo em ASCII:
 +
 +  * [[https://​web.archive.org/​web/​20161213145118/​http://​www.kathekonta.com:​80/​rlguide/​|Beginner'​s Guide to Roguelikes]] (ler ao menos a parte 1)
 +
 +Material de apoio para Ncurses:
 +
 +  * [[http://​tldp.org/​HOWTO/​NCURSES-Programming-HOWTO/​|Ncurses Programming Howto]] (leia **com atenção** a seção sobre inicialização)
 +  * [[http://​invisible-island.net/​ncurses/​ncurses-intro.html|Writing Programs with Ncurses]]
 +  * [[http://​hughm.cs.ukzn.ac.za/​~murrellh/​os/​notes/​ncurses.html|Ncurses Programming Guide]]
 +  * Exemplos do ncurses no Linux, em ''/​usr/​lib/​ncurses/​examples/''​ (pacote ''​ncurses-examples''​)
 +  * [[http://​invisible-island.net/​ncurses/​ncurses-examples.html|Código-fonte]] do pacote ''​ncurses-examples''​ disponível no Debian e derivados (Ubuntu, Mint, etc).
 +
 +Uso de Ncurses em jogos:
 +
 +  * [[https://​www.viget.com/​articles/​game-programming-in-c-with-the-ncurses-library]]
 +  * [[https://​web.archive.org/​web/​20160121083732/​http://​maupa.co.nz/​c-ncurses-bug-shooting-game-tutorial]]
 +  * [[http://​www.use-strict.de/​list-of-cool-ncurses-games.html|Cool Ncurses games]]
 +  * [[http://​xmodulo.com/​games-play-linux-terminal.html]]
 +
  
prog2/jogo_ascii.txt · Última modificação: 2019/03/13 15:17 por maziero