De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Galaxis - um jogo que precisa de uma interface gráfica

Colaboração: Cesar Brod

Data de Publicação: 23 de maio de 2014

Naves salva-vidas, oriundas de um cargueiro interestelar atacado por alienígenas, estão à deriva no espaço. Para encontrá-las, você deve distribuir sondas que monitoram em oito direções radiais e indicam quantas naves conseguem detectar. Se você der a sorte de colocar um sensor em um lugar onde há uma nave, ela será imediatamente revelada. O seu objetivo é encontrar as naves antes que seus passageiros fiquem sem oxigênio e você sem sondas.

Assim é o jogo Galaxis, desenvolvido para o Macintosh por Christian Franz e clonado para o terminal Un*x por Eric Raymond (sim, o mesmo de A Catedral e o Bazar).

Para jogá-lo, execute os passos a seguir em uma pasta de sua conveniência:

  sudo apt-get install wget build-essential libncurses5-dev 
  wget http://www.catb.org/~esr/galaxis/galaxis-1.8.tar.gz 
  tar -xzvf galaxis-1.8.tar.gz 
  cd galaxis-1.8 
  make 
  sudo make install 

Se você não teve nenhum problema, basta iniciar o jogo digitando galaxis em seu terminal. Logo na tela de abertura você terá as instruções (em inglês). Basicamente, cada sonda que você joga (dando um clique duplo na posição em que você quer deixá-la, ou teclando p) irá irradiar um raio sensor em oito direções. Distribua as sondas, tentando encontrar as naves à deriva.

A qualquer momento você pode apertar a tecla ? e obter instruções detalhadas. Ao final delas você verá a declaração de Raymond, dizendo que o jogo deveria ter uma interface gráfica e convidando você a desenvolvê-la!

Agora, antes de fazer isso, que tal você dar uma olhada no código, integralmente contido no arquivo galaxis.c dentro da pasta na qual você descompactou os fontes do jogo (galaxis-1.8). Por volta da linha 274 você começa a ver as mensagens do jogo:

  { 
     int	i, j; 
  
     if (force) 
     { 
  	(void) clear(); 
  	(void) mvaddstr(0,35,"GALAXIS"); 
  	(void) mvaddstr(1,2, "by Eric S. Raymond, based on Christian Franz's original for the Macintosh");  
  
  	(void) mvprintw(HYBASE,   HXBASE, "?       -- detailed help"); 
  	(void) mvprintw(HYBASE+1, HXBASE, "p       -- drop or re-query a probe"); 
  	(void) mvprintw(HYBASE+2, HXBASE, "< space> -- toggle the empty mark"); 
  	(void) mvprintw(HYBASE+3, HXBASE, "o       -- toggle ray highlighting"); 
  	(void) mvprintw(HYBASE+4, HXBASE, "r       -- refresh screen");	 
  	(void) mvprintw(HYBASE+5,HXBASE, "q       -- quit this game"); 
  
  	(void) mvaddstr(MYBASE,   MXBASE, "Movement keys:"); 
  	(void) mvaddstr(SYBASE,   SXBASE, "y k u    7 8 9"); 
  	(void) mvaddstr(SYBASE+1, SXBASE, " \\|/      \\|/ "); 
  	(void) mvaddstr(SYBASE+2, SXBASE, "h-+-l    4-+-6"); 
  	(void) mvaddstr(SYBASE+3, SXBASE, " /|\\      /|\\ "); 
  	(void) mvaddstr(SYBASE+4, SXBASE, "b j n    1 2 3"); 
  #ifdef A_UNDERLINE 
  	(void) mvaddstr(SYBASE+5, SXBASE, "Arrow keys work."); 
  #endif /* A_UNDERLINE */ 
  #ifdef NCURSES_MOUSE_VERSION 
  	if (tigetstr("Km")) 
  	{ 
  	    (void) mvaddstr(SYBASE+6, PX(0), "Your mouse may work.  If so, double-click drops a probe"); 
  	    (void) mvaddstr(SYBASE+7, PX(0), "at the pointer and single-click toggles an empty mark."); 
  	} 
  #endif /* NCURSES_MOUSE_VERSION */ 
     } 
   
     (void) mvprintw(POSYBASE + 1, 0, "Tries: %d", turn); 
     (void) mvprintw(POSYBASE + 2, 0, "Found: %d", boatsfound); 
  
     for (i = 0; i < BDEPTH; i++) 
  	for (j = 0; j < BWIDTH; j++) 
  	{ 
  	    pgoto(i, j); 
  	    addch(show(i,j)); 
  	} 
  
     pgoto(cury, curx); 
     refresh(); 
  } 

Tudo o que você vê "entre aspas" pode ser traduzido! Experimente fazer isso e recompilar o jogo, repetindo os comandos a seguir:

  make 
  sudo make install 

Antes, porém, copie o arquivo original para um local a partir do qual possa recuperá-lo, caso cometa algum erro.

Leia mais:

Leia o blog do Brod

Cesar Brod ministra cursos in-house adequados à necessidade de sua empresa, além de atuar como coach de equipes ágeis. Visite nosso portal para saber mais ou entre em contato diretamente com o autor para mais informações.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Cesar Brod