//--------------------------------------------------------------------------------------------------------------------------------------------------- void posicionar_embarcacoes(MapaJogo *mapa){ /*função para posicionar os embarcacoes,essa função ira imprimir o mapa atualizado a cada vez que o usuario colocar uma coordenada valida*/ intizinho i=0; intizinho contador=0; Embarcacao embarcacao; imprimir_mapa(mapa->player); for(i=0; i<QUANTIDADE_PORTA_AVIAO; i++, contador++){ embarcacao = cria_embarcacao(mapa->player, PORTA_AVIAO, contador); coloca_embarcacao(mapa->player, embarcacao); imprimir_mapa(mapa->player); } for(i=0; i<QUANTIDADE_ENCOURACADO; i++, contador++){ embarcacao = cria_embarcacao(mapa->player, ENCOURACADO, contador); coloca_embarcacao(mapa->player, embarcacao); imprimir_mapa(mapa->player); } for(i=0; i<QUANTIDADE_CRUZADOR; i++, contador++){ embarcacao = cria_embarcacao(mapa->player, CRUZADOR, contador); coloca_embarcacao(mapa->player, embarcacao); imprimir_mapa(mapa->player); } for(i=0; i<QUANTIDADE_SUBMARINO; i++, contador++){ embarcacao = cria_embarcacao(mapa->player, SUBMARINO, contador); coloca_embarcacao(mapa->player, embarcacao); imprimir_mapa(mapa->player); } pause(); }
int main() { gerar_tabuleiro(); colocar_pecas(); int i, j; int n = 3; int jogador = 1; imprimir_mapa(); while(n--) { printf("Jogador %d:\n", jogador); scanf("%d%d%d%d", &x, &y, &x2, &y2); if(!movimentar(jogador, x, y, x2, y2)) printf("Posicao impossivel de ser acessada\n"); imprimir_mapa(); if(n%2 == 1) jogador = 1; else jogador = 2; } return 0; }
//--------------------------------------------------------------------------------------------------------------------------------------------------- Embarcacao cria_embarcacao(char mapa[][MAX],const intizinho tipo, intizinho quantidade){ Embarcacao embarcacao; int embarcacao_valida=0; embarcacao.tipo = tipo; int valida=-1,vazia=-1; do{ switch(embarcacao.tipo){ case PORTA_AVIAO: case ENCOURACADO: case CRUZADOR: do{ system("cls || clear"); imprimir_mapa(mapa); //printf("%d ", quantidade); imprime_comando_popa(tipo); do{ fflush(stdin); scanf ("%c", &embarcacao.popa.x); if (embarcacao.popa.x == CHAR_ESPACO){ printf("Insira as Coordenadas."); pause(); }else if (embarcacao.popa.x == CHAR_ENTER){ printf("Insira as Coordenadas sem Espa%co.", CHAR_CEDILHA); pause(); } }while(embarcacao.popa.x == CHAR_ENTER ||embarcacao.popa.x == CHAR_ESPACO); scanf ("%d",&embarcacao.popa.y); if((intizinho)embarcacao.popa.x >= CHAR_A_LOWER){ embarcacao.popa.x = (embarcacao.popa.x - (CHAR_A_LOWER - CHAR_A_UPPER)); } valida=posicao_valida(embarcacao.popa); vazia=posicao_vazia(mapa, embarcacao.popa); if (valida==0 || vazia==0){ printf("Coordenadas Inv%clidas.", CHAR_AAGUDO); pause(); } }while(!(vazia==1 && valida==1)); do{ system("cls || clear"); imprimir_mapa(mapa); printf("%d ", quantidade); imprime_comando_proa(tipo); do{ fflush(stdin); scanf ("%c", &embarcacao.proa.x); if (embarcacao.proa.x == CHAR_ESPACO){ printf("Insira as Coordenadas."); pause(); }else if (embarcacao.proa.x == CHAR_ENTER){ printf("Insira as Coordenadas sem Espa%co.", CHAR_CEDILHA); pause(); } }while(embarcacao.proa.x == CHAR_ENTER || embarcacao.proa.x == CHAR_ESPACO); scanf ("%d", &embarcacao.proa.y); if((intizinho)embarcacao.proa.x >= CHAR_A_LOWER){ embarcacao.proa.x = (embarcacao.proa.x - (CHAR_A_LOWER - CHAR_A_UPPER)); } valida=posicao_valida(embarcacao.proa); vazia=posicao_vazia(mapa, embarcacao.proa); if (valida==0 || vazia==0){ printf("Coordenadas Inv%clidas.", CHAR_AAGUDO); pause(); } }while(!(vazia==1 && valida==1)); break; case SUBMARINO: do{ system("cls || clear"); imprimir_mapa(mapa); imprime_comando_popa(tipo); do{ fflush(stdin); scanf ("%c", &embarcacao.popa.x); if (embarcacao.popa.x == CHAR_ESPACO){ printf("Insira as Coordenadas."); pause(); }else if (embarcacao.popa.x == CHAR_ENTER){ printf("Insira as Coordenadas sem Espa%co.", CHAR_CEDILHA); pause(); } }while(embarcacao.popa.x == CHAR_ENTER ||embarcacao.popa.x == CHAR_ESPACO); scanf ("%d",&embarcacao.popa.y); if((intizinho)embarcacao.popa.x >= CHAR_A_LOWER){ embarcacao.popa.x = (embarcacao.popa.x - (CHAR_A_LOWER - CHAR_A_UPPER)); } valida=posicao_valida(embarcacao.popa); vazia=posicao_vazia(mapa, embarcacao.popa); if (valida==0 || vazia==0){ printf("Coordenadas Inv%clidas.", CHAR_AAGUDO); pause(); } }while(!(vazia==1 && valida==1)); embarcacao.proa = embarcacao.popa; break; default: //nothing break; } embarcacao_valida = coordenada_valida(mapa, embarcacao); if(embarcacao.tipo == SUBMARINO){ embarcacao_valida = TRUE; }else if(!embarcacao_valida){ printf("Coordenadas Inv%clidas.", CHAR_AAGUDO); pause(); } }while(!embarcacao_valida); return embarcacao; }