Esempio n. 1
0
void tela(int status){
	switch(status){
		case 0:
			set_color(4);
			boas_vindas();
			reset_color();
			break;
		case 1:
			set_color(6);
			voce_ganhou();
			reset_color();
			break;
		case 2:
			set_color(1);
			voce_perdeu();
			reset_color();
			break;
		case 3:
			set_color(2);
			boa_viajem();
			reset_color();
			break;
	}
}
Esempio n. 2
0
int modifica_janela(char **campos, int side, int codigo)
{
   int i;

   switch(codigo)
   {
      case NSH:

         if(strcmp(campos[1],"P2")==0)
            side=RIGHT;
         if(strcmp(campos[1],"P1")==0)
            side=LEFT;

         /**SE SYNC - TEM QUE ACTIVAR THREAD PARA ACTUALIZAR BALAS**/
         for ( i = 0; i < maxbalas; i++ )
         {
            if ( bullets[side][i].empty )
            {
               break;
            }
         }

         if ( i < maxbalas )
         {
            bullets[side][i].empty = FALSE;
            bullets[side][i].y = cowboys[side].y + 2;
/***BLOQUEAR*/
            cowboys[side].bulletsleft--;

            if ( side == LEFT )
            {
               bullets[side][i].x = cowboys[side].x+4;
               move(bullets[side][i].y, bullets[side][i].x);
               delch();
               insch('>');
            }
            else
            {
               bullets[side][i].x = cowboys[side].x-1;
               move(bullets[side][i].y, bullets[side][i].x);
               delch();
               insch('<');
            }
            refresh();
         }

         return FALSE;

      break;


      case REL:
/****BLOQUEAR***/
         cowboys[LEFT].bulletsleft=maxbalas;
         cowboys[RIGHT].bulletsleft=maxbalas;
         free(campos[0]);
         return FALSE;

      break;


      case BLT:
         /**Move as balas*/
         if(!check_dead(LEFT) && !check_dead(RIGHT))
         {
            for ( i = 0; i < maxbalas; i++ ) {
               if ( bullets[side][i].empty )
               {
                  break;
               }
            }

            if(i<maxbalas+1) move_bullets();
         }

         free(campos[0]);
         return FALSE;

      break;

      case MOV:
         if(strcmp(campos[1],"P1")==0)
            side = LEFT;
         else
            side = RIGHT;

         delete_cowboy(side);

         cowboys[side].y = atoi(campos[2]);

         draw_cowboy(side);
         return FALSE;
         break;

      case EOG:

         clear();

         if(strcmp(campos[1],"P1")==0)
         {
            mvwprintw(wnd, NROWS/2, NCOLS/2-(strlen("VENCEDOR DA PARTIDA: ")+strlen(cowboys[LEFT].name))/2, "Vencedor da partida: %s",cowboys[LEFT].name);
            cowboys[LEFT].games=atoi(campos[2]);
         }
         else if(strcmp(campos[1],"P2")==0)
         {
            mvwprintw(wnd, NROWS/2, NCOLS/2-(strlen("VENCEDOR DA PARTIDA: ")+strlen(cowboys[RIGHT].name))/2, "Vencedor da partida: %s",cowboys[RIGHT].name);
            cowboys[RIGHT].games=atoi(campos[2]);
         }
         else
         {
            mvwprintw(wnd, NROWS/2-4, NCOLS/2-(strlen("VENCEDOR DA PARTIDA: JOGADOR EMPATE"))/2, "Vencedor da partida: Empate");
         }
         wtimeout(wnd,-1);

         mvwprintw(wnd, 0, 0, "High Noon - Projecto de Programacao de Sistemas");
         /**Colocar numero da partida?*/

         mvwprintw(wnd, 1, 0, "Fim da Partida Numero: %d",cowboys[RIGHT].games+cowboys[LEFT].games);

         mvwprintw(wnd, NROWS-1, 0, "Pressione uma tecla qualquer para começar um novo jogo\n");

         refresh();

         getch();

         clear();

         refresh();
         /**Recebe novamente tudo*/

         close_HN_window();

         /*delwin(wnd);*/

         boas_vindas(side,FALSE);

         com_partida(side);

         clear();

         refresh();

         draw_cowboy(LEFT);
         draw_cowboy(RIGHT);
         return FALSE;
         break;

      case EXT:
         if(strcmp(campos[1],"P1")==0)
            side = LEFT;
         else
            side = RIGHT;

         cowboys[side].games=atoi(campos[2]);

         cowboys[!side].games=atoi(campos[3]);

         return TRUE;
         break;

      case ERR:
         break;

      default:
         close_HN_window();
         printf("ERRO: Mensagem nao reconhecida!\n");
         exit(EXIT_FAILURE);
      break;

   }
   return FALSE;
}
Esempio n. 3
0
void *th_jogadas(void *arg)
{
   _Bool side = *(_Bool *)arg;
   int codigo=DRAW;
   char **resposta;
   char temp1[SMALL_BUFF];
   char temp2[SMALL_BUFF];


   lock(&actualiza);

   espera=TRUE;

   debug=FALSE;

   /**Comunica STR ao servidor assim que confirmado pelo jogador*/
   boas_vindas(side,TRUE);

   draw_heading(nome_jogo, cowboys[LEFT].name, cowboys[LEFT].bulletsleft, cowboys[LEFT].games, cowboys[RIGHT].name, cowboys[RIGHT].bulletsleft, cowboys[RIGHT].games, codigo);

   draw_cowboy(LEFT);
   draw_cowboy(RIGHT);

   unlock(&actualiza);


   codigo=NODRAW;

   for(;;)
   {

      /**Espera por comunicacoes*/
      resposta=espera_resposta(&cowboys[side].sfd,resposta,&codigo);

      lock(&actualiza);
      lock(&ecra);

      if(modifica_janela(resposta, side, codigo)) break;

      draw_heading(nome_jogo, cowboys[LEFT].name, cowboys[LEFT].bulletsleft, cowboys[LEFT].games, cowboys[RIGHT].name, cowboys[RIGHT].bulletsleft, cowboys[RIGHT].games, codigo);

      unlock(&actualiza);
      unlock(&ecra);
   }

   quit=TRUE;

   clear();

   refresh();

   wtimeout(wnd,-1);

   mvwprintw(wnd, 1, 0, "Estatísticas finais");

   mvwprintw(wnd, 0, 0, "High Noon - Projecto de Programacao de Sistemas");

   memset((void*)&temp1,(int)'\0',sizeof(temp1));

   mvwprintw(wnd, NROWS/2-1, NCOLS/2-(strlen(cowboys[LEFT].name)+strlen(" Vs ")+strlen(cowboys[RIGHT].name))/2, "%s Vs %s",cowboys[LEFT].name, cowboys[RIGHT].name);

   memset((void*)&temp1,(int)'\0',sizeof(temp1));
   memset((void*)&temp2,(int)'\0',sizeof(temp2));

   sprintf(temp1,"%d",cowboys[LEFT].games);
   sprintf(temp2,"%d",cowboys[RIGHT].games);
   mvwprintw(wnd, NROWS/2, NCOLS/2-(strlen(temp1)+strlen(" Vs ")+strlen(temp2))/2, "%s Vs %s", temp1, temp2);

   mvwprintw(wnd, NROWS-2, 0, "Obrigado por jogar\n");
   mvwprintw(wnd, NROWS-1, 0, "Pressione uma tecla para terminar\n");

   refresh();

   getch();

   close_HN_window();

   delwin(wnd);

   unlock(&actualiza);
   unlock(&ecra);

   pthread_exit(0);
}