int main (int argc, char **argv) { int **tabuleiro, **grauJogadaBranca, **grauJogadaPreta; int m, n, vitP, vitB,tam = 14; int corPreta, corBranca, modoVerboso, eJogada, troca = 0; forcaJogada jog; posicao proximaJogada; proximaJogada = malloc (sizeof (pos) ); jog = malloc (sizeof (jogada) ); grauJogadaBranca = criaMatriz (tam, tam); grauJogadaPreta = criaMatriz (tam, tam); tabuleiro = criaMatriz(tam, tam); if (argc > 3) return 0; if (argc == 3) if (argv[2][0] == 'd') modoVerboso = 1; else modoVerboso = 0; if (argc == 2) modoVerboso = 0; if (argv[1][0] == 'b') { corBranca = 1; corPreta = 0; } else if (argv[1][0] == 'p') { corBranca = 0; corPreta = 1; } else { return 0; } zeraMatriz(tabuleiro, tam, tam, -2); zeraMatriz(grauJogadaBranca, tam, tam, -1); zeraMatriz(grauJogadaPreta, tam, tam, -1); vitB = checaVitoria(tabuleiro, corBranca, tam); vitP = checaVitoria(tabuleiro, corPreta, tam); while (vitP == 0 && vitB == 0) { scanf("%d %d", &m,&n); if (m == tam/2 && n == tam/2 && troca == 0) { corBranca = corPreta; corPreta = 1; troca = 1; } else { troca = 1; } while (casaLivre (tabuleiro, tam, m, n) == 0) { scanf("%d %d", &m,&n); } tabuleiro[m][n] = corBranca; /* Calcular jogada da maquina */ zeraMatriz(grauJogadaPreta, tam, tam, -1); grauJogadaPreta = jogadaLivre (tabuleiro, tam, grauJogadaPreta, corPreta); eJogada = existeJogada (grauJogadaPreta, tam); if (eJogada == 1) { grauJogadaPreta = grauJogada(tabuleiro, tam, grauJogadaPreta, corPreta); jog = jogadaMaisForte (grauJogadaPreta, tam); if (jog -> qnt > 1) { proximaJogada = sorteiaJogada (tabuleiro, grauJogadaPreta, tam, jog -> forca, jog -> qnt); } else { /* Só uma casa com aquela força de ocorrencia */ proximaJogada = buscaForcaMatriz(tabuleiro, tam, grauJogadaPreta, jog -> forca); /* Fazer a busca Matriz */ } printf("%d %d\n", proximaJogada -> lin, proximaJogada -> col); tabuleiro[proximaJogada -> lin][proximaJogada -> col] = corPreta; if (modoVerboso == 1) imprimeMatriz(tabuleiro, tam, tam); } vitP = checaVitoria(tabuleiro, corPreta, tam); printf("\n vitP = %d",vitP); fflush(stdout); vitB = checaVitoria(tabuleiro, corBranca, tam); printf("\n vitB = %d",vitB); fflush(stdout); } if (vitB == 1) { printf("b ganhou\n"); return 0; } if (vitP == 1){ printf("p ganhou\n"); return 0; } return 0; }
int main(){ int i = 0, j = 0, opcao = 0, qtdVert=0, qtdAres =0, grau = 0; int opcao1 = 0, vertDel = 0, opcao2 =0, direcionado = 0, dd = 0; int **p = NULL; printf("Quais das opcoes tu desejas?\n"); printf("1 - Matriz de adjacencia\n"); printf("2 - Matriz de incidencia\n"); scanf("%i", &opcao); //----------------------------------------------------------------------------------------------------------------------------------------------------------- //------------------------------------------------------------ADJACENCIA----------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------------------------------------- switch(opcao){ case 1: while(opcao1 != 9){ printf("Quais das opcoes tu desejas?\n"); printf("1 - Gerar matriz de adjacencia\n"); printf("2 - Adicionar relacoes\n"); printf("3 - Imprimir matriz de adjacencia\n"); printf("4 - Zerar matriz de adjacencia\n"); printf("5 - Adicionar um vertice\n"); printf("6 - Remover um vertice\n"); printf("7 - Gerar grafo complementar\n"); printf("8 - Grau dos vertices\n"); printf("9 - Sair\n"); scanf("%i", &opcao1); switch(opcao1){ case 1: printf("Quantos vertices?\n"); scanf("%i",&qtdVert); p = geraMatriz(qtdVert); break; case 2: relacaoes(p); break; case 3: imprimeMatriz(qtdVert ,p); break; case 4: zeraMatriz(qtdVert ,p); break; case 5: qtdVert++; p = adicionaVertice(qtdVert, p); break; case 6: printf("Qual vertice tu desejas excluir?\n"); scanf("%i", &vertDel); vertDel--; removeVertice(qtdVert, vertDel, p); break; case 7: grafoComplementar(qtdVert, p); break; case 8: printf("Qual vertice do queres saber o grau?\n"); scanf("%i", &grau); printf("\n"); mostraGrau(grau, qtdVert, p); break; case 9: return 0; } } //----------------------------------------------------------------------------------------------------------------------------------------------------------- //------------------------------------------------------------INCIDENCIA----------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------------------------------------------------------------- case 2: while(opcao2 != 8){ printf("Quais das opcoes tu desejas?\n"); printf("1 - Gerar matriz de incidencia\n"); printf("2 - Adicionar relacoes\n"); printf("3 - Imprimir matriz de incidencia\n"); printf("4 - Zerar matriz de incidencia\n"); printf("5 - Adicionar um vertice\n"); printf("6 - Remover um vertice\n"); printf("7 - Grau do vertice\n"); printf("8 - Sair\n"); scanf("%i", &opcao2); switch(opcao2){ case 1: printf("Quantos vertices?\n"); scanf("%i",&qtdVert); printf("Quantas arestas?\n"); scanf("%i",&qtdAres); p = geraMatrizIncidencia(qtdVert, qtdAres); break; case 2: printf("O grafo é direcionado? 1 para nao e 2 para sim\n"); scanf("%d", &direcionado); switch(direcionado){ case 1: relacaoIncidencia(p); break; case 2: relacaoIncidenciaDirecionada(p); break; } case 3: imprimeMatrizIncidencia (qtdAres,qtdVert,p); break; case 4: zeraMatrizIncidencia (qtdAres,qtdVert,p); break; case 5: qtdVert++; p = adicionaVerticeIncidencia(qtdVert, p); break; case 6: printf("Qual vertice tu desejas excluir?\n"); scanf("%i", &vertDel); vertDel--; removeVerticeIncidencia(qtdAres, vertDel, p); break; case 7: printf("Qual vertice do queres saber o grau?\n"); scanf("%i", &grau); printf("\n"); mostraGrauIncidencia(grau, qtdAres, p); break; case 8: return 0; } } } printf("\n"); printf("\n"); return 0; }