/***************************************************************************
*  Função:  Menu Remover Peça
*  ****/
static void MenuRemoverPeca(PAR_tppPartida ppPartida)
{
   char *nomeDaCasa;
   PAR_tpCondRet condRet;

   MEM_Alloc(sizeof(char)*2,(void**)&nomeDaCasa);

   printf("Nome da casa onde esta a peca a ser removida: ");
   scanf("%s",nomeDaCasa);

   nomeDaCasa[0] = toupper(nomeDaCasa[0]);

   condRet = PAR_IrCasa(ppPartida,nomeDaCasa);

   if(condRet !=  PAR_CondRetOK)
   {
      return Mensagem("Erro ao remover - Casa nao existe!");
   }

   condRet = PAR_RemoverPeca(ppPartida);

   if(condRet == PAR_CondRetPecaNaoEncontrada)
   {
      return Mensagem("Erro ao remover - casa esta vazia!");
   }

   return Mensagem("Peca removida com sucesso!");
}
/***************************************************************************
*  Função:  Menu Inserir Rei
*  ****/
static void MenuInserirRei(PAR_tppPartida ppPartida)
{
   char *nomeCasa;
   PAR_tpCondRet condRet;

   MEM_Alloc(sizeof(char)*2,(void**)&nomeCasa);

   printf("Nome da casa que deseja inserir o rei (2 caracteres - convenção do xadrez): ");
   scanf("%s", nomeCasa);

   nomeCasa[0] = toupper(nomeCasa[0]);

   condRet = PAR_IrCasa(ppPartida, nomeCasa);

   if(condRet !=  PAR_CondRetOK)
   {
      return Mensagem("Erro ao inserir - Casa nao existe!");
   }

   condRet = PAR_InserirRei(ppPartida);

   if(condRet != PAR_CondRetOK)
   {
      return Mensagem("Erro ao inserir o rei!");
   }

   return Mensagem("Rei inserido com sucesso!");
}
/***************************************************************************
*  Função:  Menu Cadastrar Peça
*  ****/
static void MenuCadastrarPeca(PAR_tppPartida ppPartida)
{
   char *nome, *passos, *tipoMov;
   ISP_tpCondRet ispCondRet;
   MPEC_tpTipoMovimento tipoMovimento;
   LIS_tppLista pPassos;

   MEM_Alloc(sizeof(char)*20,(void**)&nome);
   MEM_Alloc(sizeof(char)*200,(void**)&passos);
   MEM_Alloc(sizeof(char)*4,(void**)&tipoMov);

   printf("Nome da peca (20 caracteres): ");
   scanf("%s",nome);
   printf("Movimentos ([n]coordenada_[n]coordenada): ");
   scanf("%s", passos);
   printf("Tipo de movimento(Anda | Voa): ");
   scanf("%s",tipoMov);

   ispCondRet = ISP_LerTipoMovimento(tipoMov,&tipoMovimento);

   if(ispCondRet != ISP_CondRetOK)
   {
      return Mensagem("Tipo de movimento invalido!");
   }

   ISP_LerPassos(passos,&pPassos);

   PAR_CriarPeca(ppPartida, nome, pPassos, tipoMovimento);

   return Mensagem("Peca cadastrada com sucesso!");
}
/***************************************************************************
*  Função:  Menu Inserir Peça
*  ****/
static void MenuInserirPeca(PAR_tppPartida ppPartida, const PEC_tpTimePeca time)
{
   char *nome, *nomeCasa;
   PAR_tpCondRet condRet;

   MEM_Alloc(sizeof(char)*20,(void**)&nome);
   MEM_Alloc(sizeof(char)*2,(void**)&nomeCasa);

   printf("Nome da peca (20 caracteres): ");
   scanf("%s", nome);

   printf("Nome da casa que deseja inserir a peca (2 caracteres - convenção do xadrez): ");
   scanf("%s", nomeCasa);

   nomeCasa[0] = toupper(nomeCasa[0]);

   condRet = PAR_IrCasa(ppPartida, nomeCasa);

   if(condRet !=  PAR_CondRetOK)
   {
      return Mensagem("Erro ao inserir - Casa nao existe!");
   }

   condRet = PAR_InserirPeca(ppPartida,nome,time);

   if(condRet == PAR_CondRetPecaNaoEncontrada)
   {
      return Mensagem("Erro ao inserir - Peca nao encontrada!");
   }

   return Mensagem("Peca inserida no time com sucesso!");
}
/***************************************************************************
*  Função:  Menu Remover Rei
*  ****/
static void MenuRemoverRei(PAR_tppPartida ppPartida)
{
   PAR_tpCondRet parCondRet;

   parCondRet = PAR_RemoverRei(ppPartida);

   if(parCondRet != PAR_CondRetOK)
   {
      return Mensagem("Erro ao remover rei - Não existe rei inserido no tabuleiro!");
   }

   Mensagem("Rei removido com sucesso");
}
/***************************************************************************
*  Função:  Menu Salvar Peça
*  ****/
static void MenuSalvarPartida(PAR_tppPartida ppPartida)
{
   char *pNomeArquivo;
   PAR_tpCondRet parCondRet;
   MEM_Alloc(sizeof(char)*200,(void**)&pNomeArquivo);

   printf("Nome do arquivo: (ex: save1.txt): ");
   scanf("%s",pNomeArquivo);

   parCondRet = PAR_Salvar(ppPartida,pNomeArquivo);

   if(parCondRet != PAR_CondRetOK)
   {
      return Mensagem("Erro ao salvar partida!");
   }

   return Mensagem("Partida salva com sucesso!");
}
Exemple #7
0
//-------------------------------------------------------------------------
//O que fazer se colidiu com outro objeto
void Nave::BateuNeste(Objeto *outro)
{
   if (piscando > 0 || outro->Piscando()) return;
   if (Mensagem(SOLIDO, NULL) == NAO) return; //se eu não sou sólido, deixo passar
   if (Mensagem(QUEM_VOCE, NULL) == TIRO) return; //deixo que o tiro cuida se atingiu alguém
   
   if (outro->Mensagem(SOLIDO, NULL) == SIM) //bateu em algo, dar impacto para os dois
   {
      lifePotencial -= 5;
      life -= 10;
      //piscando = 5;
      vector3df v = Posicao() - outro->Posicao();
      v = (1.0f / v.getLength()) * v;
      AdicionaForca(massa * v);
      outro->AdicionaForca(-massa * v);
      outro->BateramEmVoce(5);
      
   } 
}
/***************************************************************************
*  Função:  Menu Xeque-mate
*  ****/
static void MenuXequeMate(PAR_tppPartida ppPartida)
{
   int resposta;
   JUD_tpCondRet judCondRet;
   judCondRet = JUD_EhCheckmate(ppPartida,&resposta);

   if(judCondRet != JUD_CondRetOK)
   {
      return Mensagem("Erro ao analisar xeque mate - Rei não inserido!");
   }

   if(resposta == 1)
   {
      return Mensagem("Xeque-mate!");
   }
   else
   {
      return Mensagem("Rei fora de perigo!");
   }
}
/***************************************************************************
*  Função:  Menu Alterar Peça
*  ****/
static void MenuAlterarPeca(PAR_tppPartida ppPartida)
{
   char *nomeAtual, *novoNome, *novosPassos, *movimento;
   ISP_tpCondRet ispCondRet;
   PAR_tpCondRet parCondRet;
   MPEC_tpTipoMovimento novoTipoMovimento;
   LIS_tppLista pPassos;

   MEM_Alloc(sizeof(char)*20,(void**)&nomeAtual);
   MEM_Alloc(sizeof(char)*20,(void**)&novoNome);
   MEM_Alloc(sizeof(char)*200,(void**)&novosPassos);
   MEM_Alloc(sizeof(char)*4,(void**)&movimento);

   printf("\nNome da peca que quer alterar (20 caracteres): ");
   scanf("%s", nomeAtual);
   printf("Novo nome (20 caracteres): ");
   scanf("%s", novoNome);
   printf("Novo movimento ([n]coordenada): ");
   scanf("%s", novosPassos);
   printf("Novo tipo de movimento (Anda | Voa): ");
   scanf("%s", movimento);

   ispCondRet = ISP_LerTipoMovimento(movimento,&novoTipoMovimento);

   if(ispCondRet != ISP_CondRetOK)
   {
      return Mensagem("Tipo de movimento invalido!");
   }

   ISP_LerPassos(novosPassos,&pPassos);

   parCondRet = PAR_AlterarPeca(ppPartida,nomeAtual,novoNome,pPassos,novoTipoMovimento);

   if(parCondRet != PAR_CondRetOK)
   {
      return Mensagem("Erro ao alterar peca!");
   }

   return Mensagem("Peca alterada com sucesso!");
}
/***************************************************************************
*  Função:  Menu Carregar Peça
*  ****/
static void MenuCarregarPartida(PAR_tppPartida *ppPartida)
{
   char *pNomeArquivo;
   PAR_tpCondRet parCondRet;
   PAR_tppPartida **pPartuda = NULL;
   MEM_Alloc(sizeof(char)*200,(void**)&pNomeArquivo);

   printf("Nome do arquivo: (save1.txt): ");
   scanf("%s",pNomeArquivo);

   PAR_DestruirPartida(ppPartida);

   parCondRet = PAR_Carregar(ppPartida,pNomeArquivo);

   if(parCondRet != PAR_CondRetOK)
   {
      return Mensagem("Erro ao carregar partida!");
   }

   return Mensagem("Partida carregar com sucesso!");

}
Exemple #11
0
//--------------------------------------------------------------------------
//Cria um novo tiro do tipo qual
void Nave::NovoTiro(int qual)
{
   if (qual == TIPO_LASER)
   {
      Laser *laser = new Laser(central, this);
      central->NovoObjeto((Objeto *) laser);
      laser->AdicionaCenario(cenario);
   }
   else if (qual == TIPO_MISSIL)
   {
      Missil *missil = new Missil(central, this);
      central->NovoObjeto((Objeto *) missil);
      missil->AdicionaCenario(cenario);
      if (Mensagem(QUEM_VOCE, NULL) == JOGADOR) missil->Mensagem(PROCURA_INIMIGO, NULL);
      else if (Mensagem(QUEM_VOCE, NULL) == INIMIGO) missil->Mensagem(PROCURA_JOGADOR, NULL);
   }
   else if (qual == TIPO_MULTIPLO)
   {
      Multiplo *multiplo = new Multiplo(central, this);
      central->NovoObjeto((Objeto *) multiplo);
      multiplo->AdicionaCenario(cenario);
   }
}