Advertisement
noobzone

jogo_10

Jan 27th, 2014
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 75.83 KB | None | 0 0
  1. /*
  2.  * jogo_10.c
  3.  *
  4.  *  Created on: 26/01/2014
  5.  *      Author: rodrigo
  6.  */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <ctype.h>
  10. #include <time.h>
  11.  
  12. void jogo_10() {
  13. int i; int j; int numTiro;int verificacao; int tipoDeBarco; char matrizU1[12][12]; int coluna; char matrizU2[12][12]; char matrizC1[12][12]; char matrizC2[12][12];time_t t;int blocosUtilizador; int blocosComputador;int xAnteriorComp; int yAnteriorComp; int barcoAfundado;
  14. blocosUtilizador=25;
  15. blocosComputador=25;
  16. srand((unsigned) time(&t));
  17. for(i=0;i<13;i++){
  18.     for(j=0;j<13;j++){
  19.         matrizU1[i][j] = '~';
  20.     }
  21. }
  22. for(i=0;i<13;i++){
  23.     for(j=0;j<13;j++){
  24.         matrizU2[i][j] = '~';
  25.     }
  26. }
  27. for(i=0;i<13;i++){
  28.     for(j=0;j<13;j++){
  29.         matrizC1[i][j] = '~';
  30.     }
  31. }
  32. for(i=0;i<13;i++){
  33.     for(j=0;j<13;j++){
  34.         matrizC2[i][j] = '~';
  35.     }
  36. }
  37. printf("grelha do humano\n");
  38. // numeração da coluna
  39. for(i=-1;i<10;i++){
  40.     if(i == -1){
  41.         printf("@ ");
  42.     }else if(i < 9){
  43.         printf("0 ");
  44.     }else{
  45.         printf("1 ");
  46.     }
  47. }
  48. printf("\n");
  49. for(coluna=0;coluna<=10;coluna++){
  50.     if(coluna == 0){
  51.         printf("@");
  52.     }else if(coluna<10){
  53.         printf(" %d",coluna);
  54.     }else{
  55.         printf(" %d", coluna-10);
  56.     }
  57. }
  58. printf("\n");
  59. char linha = 'A';
  60. for(i=1;i<11;i++){
  61.     for(j=0;j<11;j++){
  62.         if(j == 0){
  63.             printf("%c", linha);
  64.             linha++;
  65.         }else{
  66.             printf(" %c", matrizU1[i][j]);
  67.         }
  68.     }
  69.     printf("\n");
  70. }
  71. printf("\n");
  72. printf("grelha inimiga\n");
  73. // numeração da coluna
  74. for(i=-1;i<10;i++){
  75.     if(i == -1){
  76.         printf("@ ");
  77.     }else if(i < 9){
  78.         printf("0 ");
  79.     }else{
  80.         printf("1 ");
  81.     }
  82. }
  83. printf("\n");
  84. for(coluna=0;coluna<=10;coluna++){
  85.     if(coluna == 0){
  86.         printf("@");
  87.     }else if(coluna<10){
  88.         printf(" %d",coluna);
  89.     }else{
  90.         printf(" %d", coluna-10);
  91.     }
  92. }
  93. printf("\n");
  94. linha = 'A';
  95. for(i=1;i<11;i++){
  96.     for(j=0;j<11;j++){
  97.         if(j == 0){
  98.             printf("%c", linha);
  99.             linha++;
  100.         }else{
  101.             printf(" %c", matrizU2[i][j]);
  102.         }
  103.     }
  104.     printf("\n");
  105. }
  106. //inicio do jogo
  107. printf("vamos dar inicio ao jogo colocando os barcos\n\n");
  108.  
  109. // introdução do porta aviões por parte do utilizador
  110. int contadorInterno; int x; int y; int posicao; char coord1;
  111. int nPortaAvioes;
  112. nPortaAvioes = 1;
  113. contadorInterno = 0;
  114. x=0;
  115. y=0;
  116. do {
  117.  
  118.     printf("introduza a coordenada do elemento principal do porta aviões\n");
  119.     printf("x=");
  120.     scanf("%s", &coord1);
  121.     printf("y=");
  122.     scanf("%d", &y);
  123.     coord1=toupper(coord1);
  124.     x=coord1-64;
  125.     printf("Pretende virar o barco? Introduza 1 para direita, 2 para cima, 3 para esquerda ou 4 para baixo.\n");
  126.     printf("%d %d %d", x, y, posicao);
  127.     scanf("%d", &posicao);
  128.     switch (posicao){                           //////INICIO DO SWITCH DA POSIÇÃO
  129.         case 1:{
  130.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+3] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x+1][y+2] == '~' && matrizU1[x-1][y+2] == '~' && matrizU1[x-1][y+3] == '~' && matrizU1[x+1][y+3] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x][y+2] == '~' && matrizU1[x-2][y+1] == '~' && matrizU1[x-2][y] == '~' && matrizU1[x-2][y-1] == '~' && matrizU1[x+2][y-1] == '~' && matrizU1[x+2][y] == '~' && matrizU1[x+2][y+1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y+2 < 10 && x-1 >= 0 && x+1 <= 10 ){
  131.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  132.                 matrizU1[x][y+1] = 'O'; //cria o segundo componente do barco, virado para direita
  133.                 matrizU1[x][y+2] = 'O'; //cria o terceiro componente do barco, virado para direita
  134.                 matrizU1[x-1][y] = 'O'; //cria o quarto componente do barco, virado para direita
  135.                 matrizU1[x+1][y] = 'O'; //cria o quinto componente do barco, virado para direita
  136.                 contadorInterno = contadorInterno + 1;
  137.             }else{
  138.                 printf("Coordenada inválida. Volte a introduzir.");
  139.             }
  140.         }
  141.         break;
  142.  
  143.         case 2: {
  144.             if (matrizU1[x][y] == '~' && matrizU1[x-3][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x-2][y+1] == '~' && matrizU1[x-2][y-1] == '~' && matrizU1[x-3][y-1] == '~' && matrizU1[x-3][y+1] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x-2][y] == '~' && matrizU1[x][y-2] == '~' && matrizU1[x][y+2] == '~' && matrizU1[x-1][y-2] == '~' && matrizU1[x-1][y+2] == '~' && matrizU1[x+1][y-2] == '~' && matrizU1[x+1][y+2] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x-2 >= 1 && y-1 >= 1 && y+1 <= 10) {
  145.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  146.                 matrizU1[x-1][y] = 'O'; //cria o segundo componente do barco, virado para cima
  147.                 matrizU1[x-2][y] = 'O'; //cria o terceiro componente do barco, virado para cima
  148.                 matrizU1[x][y-1] = 'O'; //cria o quarto componente do barco, virado para cima
  149.                 matrizU1[x][y+1] = 'O'; //cria o quinto componente do barco, virado para cima
  150.                 contadorInterno = contadorInterno + 1;
  151.             }else{
  152.                 printf("Coordenada inválida. Volte a introduzir.");
  153.             }
  154.         }
  155.         break;
  156.  
  157.         case 3: {
  158.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-3] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x-1][y-2] == '~' && matrizU1[x+1][y-2] == '~' && matrizU1[x+1][y-3] == '~' && matrizU1[x-1][y-3] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y-2] == '~' && matrizU1[x+2][y] == '~' && matrizU1[x+2][y-1] == '~' && matrizU1[x+2][y-1] == '~' && matrizU1[x-2][y-1] == '~' && matrizU1[x-2][y] == '~' && matrizU1[x-2][y+1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y-2 >= 1 && x-1 >= 1 && x+1 <= 10) {
  159.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  160.                 matrizU1[x][y-1] = 'O'; //cria o segundo componente do barco, virado para esquerda
  161.                 matrizU1[x][y-2] = 'O'; //cria o terceiro componente do barco, virado para esquerda
  162.                 matrizU1[x-1][y] = 'O'; //cria o quarto componente do barco, virado para esquerda
  163.                 matrizU1[x+1][y] = 'O'; //cria o quinto componente do barco, virado para esquerda
  164.                 contadorInterno = contadorInterno + 1;
  165.             }else {
  166.                 printf("Coordenada inválida. Volte a introduzir.");
  167.             }
  168.         }
  169.         break;
  170.  
  171.         case 4: {
  172.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+3][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x+2][y-1] == '~' && matrizU1[x+2][y+1] == '~' && matrizU1[x+3][y-1] == '~' && matrizU1[x+3][y+1] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x+2][y] == '~' && matrizU1[x][y-2] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x+1][y-2] == '~' && matrizU1[x][y+2] == '~' && matrizU1[x-1][y+2] == '~' && matrizU1[x+1][y+2] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x+2 <= 10 && y-1 >= 1 && y+1 <= 10 ) {
  173.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  174.                 matrizU1[x+1][y] = 'O'; //cria o segundo componente do barco, virado para baixo
  175.                 matrizU1[x+2][y] = 'O'; //cria o terceiro componente do barco, virado para baixo
  176.                 matrizU1[x][y-1] = 'O'; //cria o quarto componente do barco, virado para baixo
  177.                 matrizU1[x][y+1] = 'O'; //cria o quinto componente do barco, virado para baixo
  178.                 contadorInterno = contadorInterno + 1;
  179.             }else {
  180.                 printf("Coordenada inválida. Volte a introduzir.");
  181.             }
  182.         }
  183.         break;
  184.  
  185.         default :
  186.             printf("posição inválida\n");
  187.     }
  188. } while (contadorInterno < nPortaAvioes); ///// FIM DO CRIADOR DO BARCO PORTA AVIOES
  189. printf("grelha do humano\n");
  190. // numeração da coluna
  191. for(i=-1;i<10;i++){
  192.     if(i == -1){
  193.         printf("@ ");
  194.     }else if(i < 9){
  195.         printf("0 ");
  196.     }else{
  197.         printf("1 ");
  198.     }
  199. }
  200. printf("\n");
  201.     for(coluna=0;coluna<=10;coluna++){
  202.         if(coluna == 0){
  203.             printf("@");
  204.         }else if(coluna<10){
  205.             printf(" %d",coluna);
  206.         }else{
  207.             printf(" %d", coluna-10);
  208.         }
  209.     }
  210. printf("\n");
  211. linha = 'A';
  212. for(i=1;i<11;i++){
  213.     for(j=0;j<11;j++){
  214.         if(j == 0){
  215.             printf("%c", linha);
  216.             linha++;
  217.         }else{
  218.             printf(" %c", matrizU1[i][j]);
  219.         }
  220.     }
  221.     printf("\n");
  222. }
  223. printf("\n");
  224. //colocação dos quatro canos por parte do utilizador
  225. contadorInterno = 0;
  226. do {
  227.     printf("Introduza a cordenada do quatro canos %d de 1\n", contadorInterno+1);
  228.     printf("introduza a coordenada do elemento principal do quatro canos\n");
  229.     printf("x=");
  230.     scanf("%s", &coord1);
  231.     printf("y=");
  232.     scanf("%d", &y);
  233.     coord1=toupper(coord1);
  234.     x=coord1-64;
  235.     printf("Pretende virar o barco? Introduza 1 para direita, 2 para cima, 3 para esquerda ou 4 para baixo.\n");
  236.     scanf("%d",&posicao);
  237.     switch (posicao){                           //////INICIO DO SWITCH DA POSIÇÃO
  238.     case 1: {
  239.         if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+4] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x+1][y+2] == '~' && matrizU1[x-1][y+2] == '~' && matrizU1[x-1][y+3] == '~' && matrizU1[x+1][y+3] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x][y+2] == '~' && matrizU1[x][y+3] == '~' && matrizU1[x-1][y+4] == '~' && matrizU1[x+1][y+4] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y+3 <= 10) {
  240.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  241.                 matrizU1[x][y+1] = 'O'; //cria o segundo componente do barco, virado para direita
  242.                 matrizU1[x][y+2] = 'O'; //cria o terceiro componente do barco, virado para direita
  243.                 matrizU1[x][y+3] = 'O'; //cria o quarto componente do barco, virado para direita
  244.                 contadorInterno = contadorInterno + 1;
  245.             }else{
  246.                 printf("Coordenada inválida. Volte a introduzir.");
  247.             }
  248.     }
  249.     break;
  250.  
  251.     case 2: {
  252.         if (matrizU1[x][y] == '~' && matrizU1[x-4][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x-2][y+1] == '~' && matrizU1[x-2][y-1] == '~' && matrizU1[x-3][y-1] == '~' && matrizU1[x-3][y+1] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x-2][y] == '~' && matrizU1[x-3][y] == '~' && matrizU1[x-4][y-1] == '~' && matrizU1[x-4][y+1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x-3 >= 1) {
  253.             matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  254.             matrizU1[x-1][y] = 'O'; //cria o segundo componente do barco, virado para cima
  255.             matrizU1[x-2][y] = 'O'; //cria o terceiro componente do barco, virado para cima
  256.             matrizU1[x-3][y] = 'O'; //cria o quarto componente do barco, virado para cima
  257.             contadorInterno = contadorInterno + 1;
  258.         }else {
  259.             printf("Coordenada inválida. Volte a introduzir.");
  260.         }
  261.     }
  262.     break;
  263.  
  264.     case 3: {
  265.         if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-4] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x-1][y-2] == '~' && matrizU1[x+1][y-2] == '~' && matrizU1[x+1][y-3] == '~' && matrizU1[x-1][y-3] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y-2] == '~' && matrizU1[x][y-3] == '~' && matrizU1[x-1][y-4] == '~' && matrizU1[x+1][y-4] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y-3 >= 1) {
  266.             matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  267.             matrizU1[x][y-1] = 'O'; //cria o segundo componente do barco, virado para esquerda
  268.             matrizU1[x][y-2] = 'O'; //cria o terceiro componente do barco, virado para esquerda
  269.             matrizU1[x][y-3] = 'O'; //cria o quarto componente do barco, virado para esquerda
  270.             contadorInterno = contadorInterno + 1;
  271.         }else {
  272.             printf("Coordenada inválida. Volte a introduzir.");
  273.         }
  274.     }
  275.     break;
  276.  
  277.     case 4: {
  278.         if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+4][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x+2][y-1] == '~' && matrizU1[x+2][y+1] == '~' && matrizU1[x+3][y-1] == '~' && matrizU1[x+3][y+1] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x+2][y] == '~' && matrizU1[x+3][y] == '~' && matrizU1[x+4][y+1] == '~' && matrizU1[x+4][y-1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x+3 <= 10 ) {
  279.             matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  280.             matrizU1[x+1][y] = 'O'; //cria o segundo componente do barco, virado para baixo
  281.             matrizU1[x+2][y] = 'O'; //cria o terceiro componente do barco, virado para baixo
  282.             matrizU1[x+3][y] = 'O'; //cria o quarto componente do barco, virado para baixo
  283.             contadorInterno = contadorInterno + 1;
  284.         }else {
  285.             printf("Coordenada inválida. Volte a introduzir.");
  286.         }
  287.     }
  288.     break;
  289.  
  290.     default:
  291.         printf("posição inválida");
  292.     }
  293. } while (contadorInterno < 1);
  294.  
  295. printf("grelha do humano\n");
  296. // numeração da coluna
  297. for(i=-1;i<10;i++){
  298.     if(i == -1){
  299.         printf("@ ");
  300.     }else if(i < 9){
  301.         printf("0 ");
  302.     }else{
  303.         printf("1 ");
  304.     }
  305. }
  306. printf("\n");
  307.     for(coluna=0;coluna<=10;coluna++){
  308.         if(coluna == 0){
  309.             printf("@");
  310.         }else if(coluna<10){
  311.             printf(" %d",coluna);
  312.         }else{
  313.             printf(" %d", coluna-10);
  314.         }
  315.     }
  316. printf("\n");
  317. linha = 'A';
  318. for(i=1;i<11;i++){
  319.     for(j=0;j<11;j++){
  320.         if(j == 0){
  321.             printf("%c", linha);
  322.             linha++;
  323.         }else{
  324.             printf(" %c", matrizU1[i][j]);
  325.         }
  326.     }
  327.     printf("\n");
  328. }
  329. printf("\n");
  330.  
  331. //colocação dos tres canos no campo do utilizador
  332. contadorInterno = 0;
  333. do {
  334.     printf("Introduza a cordenada do tres canos %d de 2\n", contadorInterno+1);
  335.     printf("introduza a coordenada do elemento principal do tres canos\n");
  336.     printf("x=");
  337.     scanf("%s", &coord1);
  338.     printf("y=");
  339.     scanf("%d", &y);
  340.     coord1=toupper(coord1);
  341.     x=coord1-64;
  342.     printf("Pretende virar o barco? Introduza 1 para direita, 2 para cima, 3 para esquerda ou 4 para baixo.");
  343.     scanf("%d",&posicao);
  344.  
  345.     switch (posicao){                           //////INICIO DO SWITCH DA POSIÇÃO
  346.  
  347.         case 1 :{
  348.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+3] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x+1][y+2] == '~' && matrizU1[x-1][y+2] == '~' && matrizU1[x-1][y+3] == '~' && matrizU1[x+1][y+3] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x][y+2] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y+2 <= 10) {
  349.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  350.                 matrizU1[x][y+1] = 'O'; //cria o segundo componente do barco, virado para direita
  351.                 matrizU1[x][y+2] = 'O'; //cria o terceiro componente do barco, virado para direita
  352.                 contadorInterno = contadorInterno + 1;
  353.             }else{
  354.                 printf("Coordenada inválida. Volte a introduzir.");
  355.             }
  356.         }
  357.         break;
  358.  
  359.         case 2: {
  360.             if (matrizU1[x][y] == '~' && matrizU1[x-3][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x-2][y+1] == '~' && matrizU1[x-2][y-1] == '~' && matrizU1[x-3][y-1] == '~' && matrizU1[x-3][y+1] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x-2][y] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x-2 >= 1) {
  361.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  362.                 matrizU1[x-1][y] = 'O'; //cria o segundo componente do barco, virado para cima
  363.                 matrizU1[x-2][y] = 'O'; //cria o terceiro componente do barco, virado para cima
  364.                 contadorInterno = contadorInterno + 1;
  365.             }else {
  366.                 printf("Coordenada inválida. Volte a introduzir.");
  367.             }
  368.         }
  369.         break;
  370.  
  371.         case 3: {
  372.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-3] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x-1][y-2] == '~' && matrizU1[x+1][y-2] == '~' && matrizU1[x+1][y-3] == '~' && matrizU1[x-1][y-3] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+2] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y-2 >= 1) {
  373.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  374.                 matrizU1[x][y-1] = 'O'; //cria o segundo componente do barco, virado para esquerda
  375.                 matrizU1[x][y-2] = 'O'; //cria o terceiro componente do barco, virado para esquerda
  376.                 contadorInterno = contadorInterno + 1;
  377.             }else {
  378.                 printf("Coordenada inválida. Volte a introduzir.");
  379.             }
  380.         }
  381.         break;
  382.  
  383.         case 4: {
  384.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+3][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x+2][y-1] == '~' && matrizU1[x+2][y+1] == '~' && matrizU1[x+3][y-1] == '~' && matrizU1[x+3][y+1] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x+2][y] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x+2 <= 10 ) {
  385.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  386.                 matrizU1[x+1][y] = 'O'; //cria o segundo componente do barco, virado para baixo
  387.                 matrizU1[x+2][y] = 'O'; //cria o terceiro componente do barco, virado para baixo
  388.                 contadorInterno = contadorInterno + 1;
  389.             }else {
  390.                 printf("Coordenada inválida. Volte a introduzir.");
  391.             }
  392.         }
  393.         break;
  394.     }
  395.  
  396.     printf("grelha do humano\n");
  397.     // numeração da coluna
  398.     for(i=-1;i<10;i++){
  399.         if(i == -1){
  400.             printf("@ ");
  401.         }else if(i < 9){
  402.             printf("0 ");
  403.         }else{
  404.             printf("1 ");
  405.         }
  406.     }
  407.     printf("\n");
  408.     for(coluna=0;coluna<=10;coluna++){
  409.         if(coluna == 0){
  410.             printf("@");
  411.         }else if(coluna<10){
  412.             printf(" %d",coluna);
  413.         }else{
  414.             printf(" %d", coluna-10);
  415.         }
  416.     }
  417.     printf("\n");
  418.     linha = 'A';
  419.     for(i=1;i<11;i++){
  420.         for(j=0;j<11;j++){
  421.             if(j == 0){
  422.                 printf("%c", linha);
  423.                 linha++;
  424.             }else{
  425.                 printf(" %c", matrizU1[i][j]);
  426.             }
  427.         }
  428.     printf("\n");
  429.     }
  430.     printf("\n");
  431. } while (contadorInterno < 2);
  432.  
  433.  
  434. //colocação do dois canos na matriz do utilizador
  435. contadorInterno = 0;
  436. do {
  437.     printf("Introduza a cordenada do dois canos %d de 3\n", contadorInterno+1);
  438.     printf("introduza a coordenada do elemento principal do dois canos\n");
  439.     printf("x=");
  440.     scanf("%s", &coord1);
  441.     printf("\ny=");
  442.     scanf("%d", &y);
  443.     coord1=toupper(coord1);
  444.     x=coord1-64;
  445.     printf("Pretende virar o barco? Introduza 1 para direita, 2 para cima, 3 para esquerda ou 4 para baixo.");
  446.     scanf("%d",&posicao);
  447.  
  448.     switch (posicao){                           //////INICIO DO SWITCH DA POSIÇÃO
  449.  
  450.         case 1:{
  451.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+2] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x+1][y+2] == '~' && matrizU1[x-1][y+2] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y+1 <= 10) {
  452.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  453.                 matrizU1[x][y+1] = 'O'; //cria o segundo componente do barco, virado para direita
  454.                 contadorInterno = contadorInterno + 1;
  455.             }else {
  456.                 printf("Coordenada inválida. Volte a introduzir.");
  457.             }
  458.         }
  459.         break;
  460.  
  461.         case 2 :{
  462.             if (matrizU1[x][y] == '~' && matrizU1[x][y] == '~' && matrizU1[x-2][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x-2][y+1] == '~' && matrizU1[x-2][y-1] == '~' && matrizU1[x-1][y] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x-1 >= 1) {
  463.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  464.                 matrizU1[x-1][y] = 'O'; //cria o segundo componente do barco, virado para cima
  465.                 contadorInterno = contadorInterno + 1;
  466.             }else {
  467.                 printf("Coordenada inválida. Volte a introduzir.");
  468.             }
  469.         }
  470.         break;
  471.  
  472.         case 3: {
  473.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-2] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x-1][y-2] == '~' && matrizU1[x+1][y-2] == '~' && matrizU1[x][y-1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y-1 >= 1) {
  474.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  475.                 matrizU1[x][y-1] = 'O'; //cria o segundo componente do barco, virado para esquerda
  476.                 contadorInterno = contadorInterno + 1;
  477.             }else {
  478.                 printf("Coordenada inválida. Volte a introduzir.");
  479.             }
  480.         }
  481.         break;
  482.  
  483.         case 4: {
  484.             if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+2][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && matrizU1[x+2][y-1] == '~' && matrizU1[x+2][y+1] == '~' && matrizU1[x+1][y] == '~' && x <= 10 && y <= 10 && x >= 0 && y >= 0 && x+1 < 10) {
  485.                 matrizU1[x][y] = 'O'; //Cria o primeiro componente do barco
  486.                 matrizU1[x+1][y] = 'O'; //cria o segundo componente do barco, virado para baixo
  487.                 contadorInterno = contadorInterno + 1;
  488.             }else {
  489.                 printf("Coordenada inválida. Volte a introduzir.");
  490.             }
  491.         }
  492.         break;
  493.     }
  494.     printf("grelha do humano\n");
  495.     // numeração da coluna
  496.     for(i=-1;i<10;i++){
  497.         if(i == -1){
  498.             printf("@ ");
  499.         }else if(i < 9){
  500.             printf("0 ");
  501.         }else{
  502.             printf("1 ");
  503.         }
  504.     }
  505.     printf("\n");
  506.     for(coluna=0;coluna<=10;coluna++){
  507.         if(coluna == 0){
  508.             printf("@");
  509.         }else if(coluna<10){
  510.             printf(" %d",coluna);
  511.         }else{
  512.             printf(" %d", coluna-10);
  513.         }
  514.     }
  515.     printf("\n");
  516.     linha = 'A';
  517.     for(i=1;i<11;i++){
  518.         for(j=0;j<11;j++){
  519.             if(j == 0){
  520.                 printf("%c", linha);
  521.                 linha++;
  522.             }else{
  523.                 printf(" %c", matrizU1[i][j]);
  524.             }
  525.         }
  526.     printf("\n");
  527.     }
  528.     printf("\n");
  529. } while (contadorInterno < 3);///// FIM DO CRIADOR DO BARCO DE DOIS CANOS
  530.  
  531. contadorInterno = 0;
  532. do {
  533.     printf("Introduza a cordenada do submarino %d de 4\n", contadorInterno+1);
  534.     printf("introduza a coordenada do elemento principal do submarino\n");
  535.     printf("x=");
  536.     scanf("%s", &coord1);
  537.     printf("y=");
  538.     scanf("%d", &y);
  539.     coord1=toupper(coord1);
  540.     x=coord1-64;
  541.     if (matrizU1[x][y] == '~' && matrizU1[x-1][y] == '~' && matrizU1[x+1][y] == '~' && matrizU1[x][y-1] == '~' && matrizU1[x][y+1] == '~' && matrizU1[x-1][y-1] == '~' && matrizU1[x-1][y+1] == '~' && matrizU1[x+1][y-1] == '~' && matrizU1[x+1][y+1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1) {
  542.         matrizU1[x][y] = 'O'; //cria o submarino, que é composto por um só bloco (O)
  543.         contadorInterno = contadorInterno + 1;
  544.     }else {
  545.         printf("Coordenada inválida. Volte a introduzir.");
  546.     }
  547.     printf("grelha do humano\n");
  548.     // numeração da coluna
  549.     for(i=-1;i<10;i++){
  550.         if(i == -1){
  551.             printf("@ ");
  552.         }else if(i < 9){
  553.             printf("0 ");
  554.         }else{
  555.             printf("1 ");
  556.         }
  557.     }
  558.     printf("\n");
  559.     for(coluna=0;coluna<=10;coluna++){
  560.         if(coluna == 0){
  561.             printf("@");
  562.         }else if(coluna<10){
  563.             printf(" %d",coluna);
  564.         }else{
  565.             printf(" %d", coluna-10);
  566.         }
  567.     }
  568.     printf("\n");
  569.     linha = 'A';
  570.     for(i=1;i<11;i++){
  571.         for(j=0;j<11;j++){
  572.             if(j == 0){
  573.                 printf("%c", linha);
  574.                 linha++;
  575.             }else{
  576.                 printf(" %c", matrizU1[i][j]);
  577.             }
  578.         }
  579.     printf("\n");
  580.     }
  581.     printf("\n");
  582. } while (contadorInterno < 4);
  583.  
  584. printf("aguarde enquanto o computador coloca os barcos...");
  585. //colocação dos barcos na matrizC1 (computador)
  586. //colocar porta avioes
  587. contadorInterno = 0;
  588. do {
  589.     x = rand() %10;
  590.                 y = rand() %10;
  591.                 posicao = rand() %4;
  592.  
  593.     switch (posicao){                           //////INICIO DO SWITCH DA POSIÇÃO
  594.  
  595.         case 1: {
  596.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+3] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x+1][y+2] == '~' && matrizC1[x-1][y+2] == '~' && matrizC1[x-1][y+3] == '~' && matrizC1[x+1][y+3] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x][y+2] == '~' && matrizC1[x-2][y+1] == '~' && matrizC1[x-2][y] == '~' && matrizC1[x-2][y-1] == '~' && matrizC1[x+2][y-1] == '~' && matrizC1[x+2][y] == '~' && matrizC1[x+2][y+1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y+2 <= 10 && x-1 >= 1 && x+1 <= 10 ){
  597.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  598.                 matrizC1[x][y+1] = 'O'; //cria o segundo componente do barco, virado para direita
  599.                 matrizC1[x][y+2] = 'O'; //cria o terceiro componente do barco, virado para direita
  600.                 matrizC1[x-1][y] = 'O'; //cria o quarto componente do barco, virado para direita
  601.                 matrizC1[x+1][y] = 'O'; //cria o quinto componente do barco, virado para direita
  602.                 contadorInterno = contadorInterno + 1;
  603.             }else {
  604.                 continue;
  605.             }
  606.         }
  607.         break;
  608.  
  609.         case 2: {
  610.             if (matrizC1[x][y] == '~' && matrizC1[x-3][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x-2][y+1] == '~' && matrizC1[x-2][y-1] == '~' && matrizC1[x-3][y-1] == '~' && matrizC1[x-3][y+1] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x-2][y] == '~' && matrizC1[x][y-2] == '~' && matrizC1[x][y+2] == '~' && matrizC1[x-1][y-2] == '~' && matrizC1[x-1][y+2] == '~' && matrizC1[x+1][y-2] == '~' && matrizC1[x+1][y+2] == '~' && x <= 9 && y <= 9 && x >= 0 && y >= 0 && x-2 >= 0 && y-1 >= 0 && y+1 < 10) {
  611.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  612.                 matrizC1[x-1][y] = 'O'; //cria o segundo componente do barco, virado para cima
  613.                 matrizC1[x-2][y] = 'O'; //cria o terceiro componente do barco, virado para cima
  614.                 matrizC1[x][y-1] = 'O'; //cria o quarto componente do barco, virado para cima
  615.                 matrizC1[x][y+1] = 'O'; //cria o quinto componente do barco, virado para cima
  616.                 contadorInterno = contadorInterno + 1;
  617.             }
  618.         }
  619.         break;
  620.  
  621.         case 3: {
  622.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-3] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x-1][y-2] == '~' && matrizC1[x+1][y-2] == '~' && matrizC1[x+1][y-3] == '~' && matrizC1[x-1][y-3] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y-2] == '~' && matrizC1[x+2][y] == '~' && matrizC1[x+2][y-1] == '~' && matrizC1[x+2][y-1] == '~' && matrizC1[x-2][y-1] == '~' && matrizC1[x-2][y] == '~' && matrizC1[x-2][y+1] == '~' && x <= 9 && y <= 9 && x >= 0 && y >= 0 && y-2 >= 0 && x-1 >= 0 && x+1 < 10) {
  623.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  624.                 matrizC1[x][y-1] = 'O'; //cria o segundo componente do barco, virado para esquerda
  625.                 matrizC1[x][y-2] = 'O'; //cria o terceiro componente do barco, virado para esquerda
  626.                 matrizC1[x-1][y] = 'O'; //cria o quarto componente do barco, virado para esquerda
  627.                 matrizC1[x+1][y] = 'O'; //cria o quinto componente do barco, virado para esquerda
  628.                 contadorInterno = contadorInterno + 1;
  629.             }else {
  630.                 continue;
  631.             }
  632.         }
  633.         break;
  634.  
  635.         case 4: {
  636.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+3][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x+2][y-1] == '~' && matrizC1[x+2][y+1] == '~' && matrizC1[x+3][y-1] =='~' && matrizC1[x+3][y+1] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x+2][y] == '~' && matrizC1[x][y-2] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x+1][y-2] == '~' && matrizC1[x][y+2] == '~' && matrizC1[x-1][y+2] == '~' && matrizC1[x+1][y+2] == '~' && x <= 9 && y <= 9 && x >= 0 && y >= 0 && x+2 < 10 && y-1 >= 0 && y+1 <10 ) {
  637.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  638.                 matrizC1[x+1][y] = 'O'; //cria o segundo componente do barco, virado para baixo
  639.                 matrizC1[x+2][y] = 'O'; //cria o terceiro componente do barco, virado para baixo
  640.                 matrizC1[x][y-1] = 'O'; //cria o quarto componente do barco, virado para baixo
  641.                 matrizC1[x][y+1] = 'O'; //cria o quinto componente do barco, virado para baixo
  642.                 contadorInterno = contadorInterno + 1;
  643.             }else {
  644.                 continue;
  645.             }
  646.         }
  647.         break;
  648.     }
  649. } while (contadorInterno < 1);
  650. //colocar barcos de 4 canos
  651. contadorInterno = 0;
  652. do {
  653.     x = rand() %10;
  654.                 y = rand() %10;
  655.                 posicao = rand() %4;
  656.  
  657.     switch (posicao){                           //////INICIO DO SWITCH DA POSIÇÃO
  658.  
  659.         case 1: {
  660.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+4] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x+1][y+2] == '~' && matrizC1[x-1][y+2] == '~' && matrizC1[x-1][y+3] == '~' && matrizC1[x+1][y+3] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x][y+2] == '~' && matrizC1[x][y+3] == '~' && matrizC1[x-1][y+4] == '~' && matrizC1[x+1][y+4] == '~' && x <= 9 && y <= 9 && x >= 0 && y >= 0 && y+3 < 10) {
  661.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  662.                 matrizC1[x][y+1] = 'O'; //cria o segundo componente do barco, virado para direita
  663.                 matrizC1[x][y+2] = 'O'; //cria o terceiro componente do barco, virado para direita
  664.                 matrizC1[x][y+3] = 'O'; //cria o quarto componente do barco, virado para direita
  665.                 contadorInterno = contadorInterno + 1;
  666.             }else {
  667.                 continue;
  668.             }
  669.         }
  670.         break;
  671.  
  672.         case 2: {
  673.             if (matrizC1[x][y] == '~' && matrizC1[x-4][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x-2][y+1] == '~' && matrizC1[x-2][y-1] == '~' && matrizC1[x-3][y-1] == '~' && matrizC1[x-3][y+1] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x-2][y] == '~' && matrizC1[x-3][y] == '~' && matrizC1[x-4][y-1] == '~' && matrizC1[x-4][y+1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x-3 >= 1) {
  674.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  675.                 matrizC1[x-1][y] = 'O'; //cria o segundo componente do barco, virado para cima
  676.                 matrizC1[x-2][y] = 'O'; //cria o terceiro componente do barco, virado para cima
  677.                 matrizC1[x-3][y] = 'O'; //cria o quarto componente do barco, virado para cima
  678.                 contadorInterno = contadorInterno + 1;
  679.             }else {
  680.                 continue;
  681.             }
  682.         }
  683.         break;
  684.  
  685.         case 3: {
  686.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-4] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x-1][y-2] == '~' && matrizC1[x+1][y-2] == '~' && matrizC1[x+1][y-3] == '~' && matrizC1[x-1][y-3] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y-2] == '~' && matrizC1[x][y-3] == '~' && matrizC1[x-1][y-4] == '~' && matrizC1[x+1][y-4] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y-3 >= 1) {
  687.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  688.                 matrizC1[x][y-1] = 'O'; //cria o segundo componente do barco, virado para esquerda
  689.                 matrizC1[x][y-2] = 'O'; //cria o terceiro componente do barco, virado para esquerda
  690.                 matrizC1[x][y-3] = 'O'; //cria o quarto componente do barco, virado para esquerda
  691.                 contadorInterno = contadorInterno + 1;
  692.             }else {
  693.                 continue;
  694.             }
  695.         }
  696.         break;
  697.  
  698.         case 4: {
  699.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+4][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x+2][y-1] == '~' && matrizC1[x+2][y+1] == '~' && matrizC1[x+3][y-1] == '~' && matrizC1[x+3][y+1] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x+2][y] == '~' && matrizC1[x+3][y] == '~' && matrizC1[x+4][y+1] == '~' && matrizC1[x+4][y-1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x+3 <= 10 ) {
  700.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  701.                 matrizC1[x+1][y] = 'O'; //cria o segundo componente do barco, virado para baixo
  702.                 matrizC1[x+2][y] = 'O'; //cria o terceiro componente do barco, virado para baixo
  703.                 matrizC1[x+3][y] = 'O'; //cria o quarto componente do barco, virado para baixo
  704.                 contadorInterno = contadorInterno + 1;
  705.             }else {
  706.                 continue;
  707.             }
  708.         }
  709.         break;
  710.     }
  711.  
  712. } while (contadorInterno < 1);
  713. //colocar barcos de tres canos
  714. contadorInterno = 0;
  715. do {
  716.     x = rand() %10;
  717.                 y = rand() %10;
  718.                 posicao = rand() %4;
  719.  
  720.     switch (posicao){                           //////INICIO DO SWITCH DA POSIÇÃO
  721.  
  722.         case 1: {
  723.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+3] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x+1][y+2] == '~' && matrizC1[x-1][y+2] == '~' && matrizC1[x-1][y+3] == '~' && matrizC1[x+1][y+3] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x][y+2] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y+2 <= 10) {
  724.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  725.                 matrizC1[x][y+1] = 'O'; //cria o segundo componente do barco, virado para direita
  726.                 matrizC1[x][y+2] = 'O'; //cria o terceiro componente do barco, virado para direita
  727.                 contadorInterno = contadorInterno + 1;
  728.             }else {
  729.                 continue;
  730.             }
  731.         }
  732.         break;
  733.  
  734.         case 2: {
  735.             if (matrizC1[x][y] == '~' && matrizC1[x-3][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x-2][y+1] == '~' && matrizC1[x-2][y-1] == '~' && matrizC1[x-3][y-1] == '~' && matrizC1[x-3][y+1] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x-2][y] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x-2 >= 1) {
  736.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  737.                 matrizC1[x-1][y] = 'O'; //cria o segundo componente do barco, virado para cima
  738.                 matrizC1[x-2][y] = 'O'; //cria o terceiro componente do barco, virado para cima
  739.                 contadorInterno = contadorInterno + 1;
  740.             }else {
  741.                 continue;
  742.             }
  743.         }
  744.         break;
  745.  
  746.         case 3: {
  747.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-3] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x-1][y-2] == '~' && matrizC1[x+1][y-2] == '~' && matrizC1[x+1][y-3] == '~' && matrizC1[x-1][y-3] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+2] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y-2 >= 1) {
  748.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  749.                 matrizC1[x][y-1] = 'O'; //cria o segundo componente do barco, virado para esquerda
  750.                 matrizC1[x][y-2] = 'O'; //cria o terceiro componente do barco, virado para esquerda
  751.                 contadorInterno = contadorInterno + 1;
  752.             }else {
  753.                 continue;
  754.             }
  755.         }
  756.         break;
  757.  
  758.         case 4: {
  759.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+3][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x+2][y-1] == '~' && matrizC1[x+2][y+1] == '~' && matrizC1[x+3][y-1] == '~' && matrizC1[x+3][y+1] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x+2][y] =='~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && x+2 <= 10 ) {
  760.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  761.                 matrizC1[x+1][y] = 'O'; //cria o segundo componente do barco, virado para baixo
  762.                 matrizC1[x+2][y] = 'O'; //cria o terceiro componente do barco, virado para baixo
  763.                 contadorInterno = contadorInterno + 1;
  764.             }else {
  765.                 continue;
  766.             }
  767.         }
  768.         break;
  769.     }
  770. } while (contadorInterno < 2);
  771. //colocação barcos de dois canos
  772. contadorInterno = 0;
  773. do {
  774.     x = rand() %10;
  775.     y = rand() %10;
  776.     posicao = rand() %4;
  777.  
  778.     switch (posicao){                           //////INICIO DO SWITCH DA POSIÇÃO
  779.  
  780.         case 1: {
  781.             if(matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+2] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x+1][y+2] == '~' && matrizC1[x-1][y+2] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1 && y+1 <= 10){
  782.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  783.                 matrizC1[x][y+1] = 'O'; //cria o segundo componente do barco, virado para direita
  784.                 contadorInterno = contadorInterno + 1;
  785.             }else{
  786.                 continue;
  787.             }
  788.         }
  789.         break;
  790.  
  791.         case 2:{
  792.             if (matrizC1[x][y] == '~' && matrizC1[x][y] == '~' && matrizC1[x-2][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x-2][y+1] == '~' && matrizC1[x-2][y-1] == '~' && matrizC1[x-1][y] == '~' && x <= 9 && y <= 9 && x >= 0 && y >= 0 && x-1 >= 0) {
  793.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  794.                 matrizC1[x-1][y] = 'O'; //cria o segundo componente do barco, virado para cima
  795.                 contadorInterno = contadorInterno + 1;
  796.             }else {
  797.                 continue;
  798.             }
  799.         }
  800.         break;
  801.  
  802.         case 3 :{
  803.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-2] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x-1][y-2] == '~' && matrizC1[x+1][y-2] == '~' && matrizC1[x][y-1] == '~' && x <= 9 && y <= 9 && x >= 0 && y >= 0 && y-1 >= 0) {
  804.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  805.                 matrizC1[x][y-1] = 'O'; //cria o segundo componente do barco, virado para esquerda
  806.                 contadorInterno = contadorInterno + 1;
  807.             }else {
  808.                 continue;
  809.             }
  810.         }
  811.         break;
  812.  
  813.         case 4: {
  814.             if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+2][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && matrizC1[x+2][y-1] == '~' && matrizC1[x+2][y+1] == '~' && matrizC1[x+1][y] == '~' && x <= 9 && y <= 9 && x >= 0 && y >= 0 && x+1 < 10) {
  815.                 matrizC1[x][y] = 'O'; //Cria o primeiro componente do barco
  816.                 matrizC1[x+1][y] = 'O'; //cria o segundo componente do barco, virado para baixo
  817.                 contadorInterno = contadorInterno + 1;
  818.             }else {
  819.                 continue;
  820.             }
  821.         }
  822.         break;
  823.     }
  824. } while (contadorInterno < 3);
  825. //colocação dos submarinos
  826. contadorInterno = 0;
  827. do {
  828.     x = rand() %10;
  829.     y = rand() %10 ;
  830.     if (matrizC1[x][y] == '~' && matrizC1[x-1][y] == '~' && matrizC1[x+1][y] == '~' && matrizC1[x][y-1] == '~' && matrizC1[x][y+1] == '~' && matrizC1[x-1][y-1] == '~' && matrizC1[x-1][y+1] == '~' && matrizC1[x+1][y-1] == '~' && matrizC1[x+1][y+1] == '~' && x <= 10 && y <= 10 && x >= 1 && y >= 1) {
  831.         matrizC1[x][y] = 'O'; //cria o submarino, que é composto por um só bloco (O)
  832.         contadorInterno = contadorInterno + 1;
  833.     }else {
  834.         continue;
  835.     }
  836. } while (contadorInterno < 4);
  837.  
  838. xAnteriorComp = 0;
  839. yAnteriorComp = 0;
  840. do{
  841.     numTiro = 0;
  842.     //jogada do utilizador
  843.     do{
  844.         if (blocosComputador == 0 || blocosUtilizador == 0){
  845.             numTiro = 3;
  846.         }else{
  847.             printf("grelha do jogador\n");
  848.             // numeração da coluna
  849.             for(i=-1;i<10;i++){
  850.                 if(i == -1){
  851.                     printf("@ ");
  852.                 }else if(i < 9){
  853.                     printf("0 ");
  854.                 }else{
  855.                     printf("1 ");
  856.                 }
  857.             }
  858.             printf("\n");
  859.             for(coluna=0;coluna<=10;coluna++){
  860.                 if(coluna == 0){
  861.                     printf("@");
  862.                 }else if(coluna<10){
  863.                     printf(" %d",coluna);
  864.                 }else{
  865.                     printf(" %d", coluna-10);
  866.                 }
  867.             }
  868.             printf("\n");
  869.             linha = 'A';
  870.             for(i=1;i<11;i++){
  871.                 for(j=0;j<11;j++){
  872.                     if(j == 0){
  873.                         printf("%c", linha);
  874.                         linha++;
  875.                     }else{
  876.                         printf(" %c", matrizU1[i][j]);
  877.                     }
  878.                 }
  879.                 printf("\n");
  880.             }
  881.             printf("\n");
  882.             printf("grelha do inimigo\n");
  883.             // numeração da coluna
  884.             for(i=-1;i<10;i++){
  885.                 if(i == -1){
  886.                     printf("@ ");
  887.                 }else if(i < 9){
  888.                     printf("0 ");
  889.                 }else{
  890.                     printf("1 ");
  891.                 }
  892.             }
  893.             printf("\n");
  894.             for(coluna=0;coluna<=10;coluna++){
  895.                 if(coluna == 0){
  896.                     printf("@");
  897.                 }else if(coluna<10){
  898.                     printf(" %d",coluna);
  899.                 }else{
  900.                     printf(" %d", coluna-10);
  901.                 }
  902.             }
  903.             printf("\n");
  904.             linha = 'A';
  905.             for(i=1;i<11;i++){
  906.                 for(j=0;j<11;j++){
  907.                     if(j == 0){
  908.                         printf("%c", linha);
  909.                         linha++;
  910.                     }else{
  911.                         printf(" %c", matrizU2[i][j]);
  912.                     }
  913.                 }
  914.                 printf("\n");
  915.             }
  916.             printf("\n");
  917.             printf("Introduza a coordenada a disparar\n");
  918.             printf("x=");
  919.             scanf("%s", &coord1);
  920.             printf("y=");
  921.             scanf("%d", &y);
  922.             coord1=toupper(coord1);
  923.             x=coord1-64;
  924.             if (y<=10 && y>=1 && x<=10 && x>=1 && matrizU2[x][y] == '~'){
  925.                 numTiro = numTiro+1;
  926.                 if (matrizC1[x][y] == '~'){
  927.                     matrizC1[x][y] = 'X';
  928.                     matrizU2[x][y] = 'X';
  929.                     printf("tiro na água\n");
  930.                 }else{
  931.                     matrizC1[x][y] = 'B';
  932.                     matrizU2[x][y] = 'B';
  933.                     if (matrizC1[x-1][y] == 'O' || matrizC1[x+1][y] == 'O' || matrizC1[x-1][y] == 'B' || matrizC1[x+1][y] == 'B'){
  934.                         verificacao = 0;
  935.                         if ((matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] ==  'B') && (matrizC1[x-2][y] == 'O' || matrizC1[x-2][y] == 'B') && ((matrizC1[x-2][y-1] == 'O' || matrizC1[x-2][y-1] == 'B') || (matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B')) && ((matrizC1[x-2][y+1] == 'O' || matrizC1[x-2][y+1] == 'B') || (matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B'))){
  936.                             printf("tiro num porta aviões\n");
  937.                             verificacao = 1;
  938.                             tipoDeBarco = 5;
  939.                         }else if ((matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B') && (matrizC1[x+2][y] == 'O' || matrizC1[x+2][y] == 'B') && ((matrizC1[x+2][y-1] == 'O' || matrizC1[x+2][y-1] == 'B') || (matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B')) && ((matrizC1[x+2][y+1] == 'O' || matrizC1[x+2][y+1] == 'B') || (matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B'))){
  940.                             printf("tiro num porta aviões\n");
  941.                             verificacao = 1;
  942.                             tipoDeBarco = 5;
  943.                         }else if ((matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B') && (matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B') && ((matrizC1[x-1][y-1] == 'O' || matrizC1[x-1][y-1] == 'B') || (matrizC1[x+1][y-1] == 'O' || matrizC1[x+1][y-1] == 'B')) && ((matrizC1[x-1][y+1] == 'O' || matrizC1[x-1][y+1] == 'B') || (matrizC1[x+1][y+1] == 'O' || matrizC1[x+1][y+1] == 'B'))){
  944.                             printf("tiro num porta aviões\n");
  945.                             verificacao = 1;
  946.                             tipoDeBarco = 5;
  947.                         }else if ((matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B') && (matrizC1[x][y+2] == 'O' || matrizC1[x][y+2] == 'B') && ((matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B') || (matrizC1[x-1][y+2] == 'O' || matrizC1[x-1][y+2] == 'B')) && ((matrizC1[x+1][y+2] == 'O' || matrizC1[x+1][y+2] == 'B') || (matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B'))){
  948.                             printf("tiro num porta aviões\n");
  949.                             verificacao = 1;
  950.                             tipoDeBarco = 5;
  951.                         }else if ((matrizC1[x+2][y] == 'O' || matrizC1[x+2][y] == 'B') && (matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B') && ((matrizC1[x+1][y+1] == 'O' || matrizC1[x+1][y+1] == 'B') || (matrizC1[x+1][y-1] == 'O' || matrizC1[x+1][y-1] == 'B')) && (((matrizC1[x+1][y-2] == 'O' || matrizC1[x+1][y-2] == 'B')) || (matrizC1[x+1][y+2] == 'O' || matrizC1[x+1][y+2] =='B'))){
  952.                             printf("tiro num porta aviões\n");
  953.                             verificacao = 1;
  954.                             tipoDeBarco = 5;
  955.                         }else if ((matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B') && (matrizC1[x][y+2] == 'O' || matrizC1[x][y+2] == 'B') && ((matrizC1[x+1][y+1] == 'O' || matrizC1[x+1][y+1] == 'B') || (matrizC1[x-1][y+1] == 'O' || matrizC1[x-1][y+1] == 'B')) && ((matrizC1[x+2][y+1] == 'O' || matrizC1[x+2][y+1] == 'B') || (matrizC1[x-2][y+1] == 'O' || matrizC1[x-2][y+1] == 'B'))){
  956.                             printf("tiro num porta aviões\n");
  957.                             verificacao = 1;
  958.                             tipoDeBarco = 5;
  959.                         }else if ((matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B') && (matrizC1[x][y-2] == 'O' || matrizC1[x][y-2] == 'B') && ((matrizC1[x+1][y-1] == 'O' || matrizC1[x+1][y-1] == 'B') || (matrizC1[x-1][y-1] == 'O' || matrizC1[x-1][y-1] == 'B')) && ((matrizC1[x+2][y-1] == 'O' || matrizC1[x+2][y-1] == 'B') || (matrizC1[x-2][y-1] == 'O' || matrizC1[x-2][y-1] == 'B'))){
  960.                             printf("tiro num porta aviões\n");
  961.                             verificacao = 1;
  962.                             tipoDeBarco = 5;
  963.                         }else if ((matrizC1[x-2][y] == 'O' || matrizC1[x-2][y] == 'B') && (matrizC1[x-2][y] == 'O' || matrizC1[x-2][y] == 'B') && ((matrizC1[x-1][y+1] == 'O' || matrizC1[x-1][y+1] == 'B') || (matrizC1[x-1][y-1] == 'O' || matrizC1[x-1][y-1] == 'B')) && ((matrizC1[x-1][y-2] == 'O' || matrizC1[x-1][y-2] == 'B') || (matrizC1[x-1][y+2] == 'O' || matrizC1[x-1][y+2] == 'B'))){
  964.                             printf("tiro num porta aviões\n");
  965.                             verificacao = 1;
  966.                             tipoDeBarco = 5;
  967.                         }else if ((matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B') && (matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B') && ((matrizC1[x-1][y+1] == 'O' || matrizC1[x-1][y+1] == 'B') || (matrizC1[x-1][y-1] == 'O' || matrizC1[x-1][y-1] == 'B')) && ((matrizC1[x+1][y+1] == 'O' || matrizC1[x+1][y+1] == 'B') || (matrizC1[x+1][y-1] == 'O' || matrizC1[x+1][y-1] == 'B'))){
  968.                             printf("tiro num porta aviões\n");
  969.                             verificacao = 1;
  970.                             tipoDeBarco = 5;
  971.                         }else if ((matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B') && (matrizC1[x][y-2] == 'O' || matrizC1[x][y-2] == 'B') && ((matrizC1[x-1][y-2] == 'O' || matrizC1[x-1][y-2] == 'B') || (matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B')) && ((matrizC1[x+1][y-2] == 'O' || matrizC1[x+1][y-2] == 'B') || (matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B'))){
  972.                             printf("tiro num porta aviões\n");
  973.                             verificacao = 1;
  974.                             tipoDeBarco = 5;
  975.                         }else{
  976.                             verificacao = 0;
  977.                         }
  978.  
  979.                         //verificar se e quatro canos usando todas as combinações possiveis para vertical
  980.  
  981.                         if(verificacao == 0){
  982.                             if((matrizC1[x-3][y] == 'O' || matrizC1[x-3][y] == 'B') && (matrizC1[x-2][y] == 'O' || matrizC1[x-2][y] =='B') && (matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B')){
  983.                                 printf("tiro num quatro canos\n");
  984.                                 verificacao = 1;
  985.                                 tipoDeBarco = 4;
  986.                             }else{
  987.                                 verificacao = 0;
  988.                             }
  989.                             if((matrizC1[x-2][y] == 'O' || matrizC1[x-2][y] == 'B') && (matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B') && (matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B')){
  990.                                 printf("tiro num quatro canos\n");
  991.                                 verificacao = 1;
  992.                                 tipoDeBarco = 4;
  993.                             }else{
  994.                                 verificacao = 0;
  995.                             }
  996.                             if((matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B') && (matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B') && (matrizC1[x+2][y] == 'O' || matrizC1[x+2][y] == 'B')){
  997.                                 printf("tiro num quatro canos\n");
  998.                                 verificacao = 1;
  999.                                 tipoDeBarco = 4;
  1000.                             }else{
  1001.                                 verificacao = 0;
  1002.                             }
  1003.                             if((matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B') && (matrizC1[x+2][y] == 'O' || matrizC1[x+2][y] == 'B') && (matrizC1[x+3][y] == 'O' || matrizC1[x+3][y] == 'B')){
  1004.                                 printf("tiro num quatro canos\n");
  1005.                                 verificacao = 1;
  1006.                                 tipoDeBarco = 4;
  1007.                             }else{
  1008.                                 verificacao = 0;
  1009.                             }
  1010.                         }
  1011.                                         // verificar se e tres canos usando todas as combinacoes possiveis para vertical
  1012.  
  1013.                         if(verificacao == 0){
  1014.                             if((matrizC1[x-2][y] == 'O' || matrizC1[x-2][y] == 'B') && (matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B')){
  1015.                                 printf("tiro num tres canos\n");
  1016.                                 verificacao = 1;
  1017.                                 tipoDeBarco = 3;
  1018.                             }else{
  1019.                                 verificacao = 0;
  1020.                             }
  1021.  
  1022.                             if((matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B') && (matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B')){
  1023.                                 printf("tiro num tres canos\n");
  1024.                                 verificacao = 1;
  1025.                                 tipoDeBarco = 3;
  1026.                             }else{
  1027.                                 verificacao = 0;
  1028.                             }
  1029.                             if((matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B') && (matrizC1[x+2][y] == 'O' || matrizC1[x+2][y] == 'B')){
  1030.                                 printf("tiro num tres canos\n");
  1031.                                 verificacao = 1;
  1032.                                 tipoDeBarco = 3;
  1033.                             }else{
  1034.                                 verificacao = 0;
  1035.                             }
  1036.                         }
  1037.  
  1038.                                         //veririficar se e dois canos usando todas as combinações possiveis verticais
  1039.                         if(verificacao == 0){
  1040.                             if(matrizC1[x-1][y] == 'O' || matrizC1[x-1][y] == 'B'){
  1041.                                 printf("tiro num dois canos\n");
  1042.                                 verificacao = 1;
  1043.                                 tipoDeBarco = 2;
  1044.                             }else{
  1045.                                 verificacao = 0;
  1046.                             }
  1047.                             if((matrizC1[x+1][y] == 'O' || matrizC1[x+1][y] == 'B')){
  1048.                                 printf("tiro num dois canos\n");
  1049.                                 verificacao = 1;
  1050.                                 tipoDeBarco = 2;
  1051.                             }else{
  1052.                                 printf("Pedimos desculpa mas devido a um erro não previsto não foi possivel detectar o barco atingido. no entanto a jogada foi validada.\n");
  1053.                             }
  1054.                         }
  1055.  
  1056.  
  1057.                         if(tipoDeBarco == 4){
  1058.                             if(matrizC1[x-3][y] == 'B' && matrizC1[x-2][y] == 'B' && matrizC1[x-1][y] == 'B'){
  1059.                                 printf("quatro canos afundado");
  1060.                                 verificacao = 1;
  1061.                                 barcoAfundado = 1;
  1062.                             }else{
  1063.                                 verificacao = 0;
  1064.                             }
  1065.                             if(matrizC1[x-2][y] == 'B' && matrizC1[x-1][y] == 'B' && matrizC1[x+1][y] == 'B'){
  1066.                                 printf("quatro canos afundado");
  1067.                                 verificacao = 1;
  1068.                                 barcoAfundado = 1;
  1069.                             }else{
  1070.                                 verificacao = 0;
  1071.                             }
  1072.                             if(matrizC1[x-1][y] == 'B' && matrizC1[x+1][y] == 'B' && matrizC1[x+2][y] == 'B'){
  1073.                                 printf("quatro canos afundado");
  1074.                                 verificacao = 1;
  1075.                                 barcoAfundado = 1;
  1076.                             }else{
  1077.                                 verificacao = 0;
  1078.                             }
  1079.                             if(matrizC1[x+1][y] == 'B' && matrizC1[x+2][y] == 'B' && matrizC1[x+3][y] == 'B'){
  1080.                                 printf("quatro canos afundado");
  1081.                                 verificacao = 1;
  1082.                                 barcoAfundado = 1;
  1083.                             }else{
  1084.                                 verificacao = 0;
  1085.                                 barcoAfundado = 0;
  1086.                             }
  1087.                         }else if(tipoDeBarco == 3){
  1088.                             if(matrizC1[x-2][y] == 'B' && matrizC1[x-1][y] == 'B'){
  1089.                                 printf("tres canos afundados");
  1090.                                 verificacao = 1;
  1091.                                 barcoAfundado = 1;
  1092.                             }else{
  1093.                                 verificacao = 0;
  1094.                             }
  1095.                             if(matrizC1[x-1][y] == 'B' && matrizC1[x+1][y] == 'B'){
  1096.                                 printf("tres canos afundados");
  1097.                                 verificacao = 1;
  1098.                                 barcoAfundado = 1;
  1099.                             }else{
  1100.                                 verificacao = 0;
  1101.                             }
  1102.                             if(matrizC1[x+1][y] == 'B' && matrizC1[x+2][y] == 'B'){
  1103.                                 printf("tres canos afundados");
  1104.                                 verificacao = 1;
  1105.                                 barcoAfundado = 1;
  1106.                             }else{
  1107.                                 verificacao = 0;
  1108.                                 barcoAfundado = 0;
  1109.                             }
  1110.                         }else if(tipoDeBarco == 2){
  1111.                             if(matrizC1[x-1][y] == 'B'){
  1112.                                 printf("dois canos afundado");
  1113.                                 verificacao = 1;
  1114.                                 barcoAfundado = 1;
  1115.                             }else{
  1116.                                 verificacao = 0;
  1117.                             }
  1118.                             if(matrizC1[x+1][y] == 'B'){
  1119.                                 printf("dois canos afundado");
  1120.                                 verificacao = 1;
  1121.                                 barcoAfundado = 1;
  1122.                             }
  1123.                         }
  1124.                     }else if(matrizC1[x][y-1] == 'O' || matrizC1[x][y+1] == 'O' || matrizC1[x][y-1] == 'B' || matrizC1[x][y+1] == 'B'){
  1125.                         if(verificacao == 0){
  1126.                             if((matrizC1[x][y-3] == 'O' || matrizC1[x][y-3] == 'B') && (matrizC1[x][y-2] == 'O' || matrizC1[x][y-2] == 'B') && (matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B')){
  1127.                                 printf("tiro num quatro canos\n");
  1128.                                 verificacao = 1;
  1129.                                 tipoDeBarco = 4;
  1130.                             }else{
  1131.                                 verificacao = 0;
  1132.                             }
  1133.                             if((matrizC1[x][y-2] == 'O' || matrizC1[x][y-2] == 'B') && (matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B') && (matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B')){
  1134.                                 printf("tiro num quatro canos\n");
  1135.                                 verificacao = 1;
  1136.                                 tipoDeBarco = 4;
  1137.                             }else{
  1138.                                 verificacao = 0;
  1139.                             }
  1140.                             if((matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B') && (matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B') && (matrizC1[x][y+2] == 'O' || matrizC1[x][y+2] == 'B')){
  1141.                                 printf("tiro num quatro canos\n");
  1142.                                 verificacao = 1;
  1143.                                 tipoDeBarco = 4;
  1144.                             }else{
  1145.                                 verificacao = 0;
  1146.                             }
  1147.                             if((matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B') && (matrizC1[x][y+2] == 'O' || matrizC1[x][y+2] == 'B') && (matrizC1[x][y+3] == 'O' || matrizC1[x][y+3] == 'B')){
  1148.                                 printf("tiro num quatro canos\n");
  1149.                                 verificacao = 1;
  1150.                                 tipoDeBarco = 4;
  1151.                             }else{
  1152.                                 verificacao = 0;
  1153.                             }
  1154.                         }else{
  1155.                             continue;
  1156.                         }
  1157.  
  1158. // verificar se e tres canos usando todas as combinacoes possiveis para horizontal
  1159.  
  1160.                         if(verificacao == 0){
  1161.                             if((matrizC1[x][y-2] == 'O' || matrizC1[x][y-2] == 'B') && (matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B')){
  1162.                                 printf("tiro num tres canos\n");
  1163.                                 verificacao = 1;
  1164.                                 tipoDeBarco = 3;
  1165.                             }else{
  1166.                                 verificacao = 0;
  1167.                             }
  1168.                             if((matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B') && (matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B')){
  1169.                                 printf("tiro num tres canos\n");
  1170.                                 verificacao = 1;
  1171.                                 tipoDeBarco = 3;
  1172.                             }else{
  1173.                                 verificacao = 0;
  1174.                             }
  1175.                             if((matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B') && (matrizC1[x][y+2] == 'O' || matrizC1[x][y+2] == 'B')){
  1176.                                 printf("tiro num tres canos\n");
  1177.                                 verificacao = 1;
  1178.                                 tipoDeBarco = 3;
  1179.                             }else{
  1180.                                 verificacao = 0;
  1181.                             }
  1182.                         }else{
  1183.                             continue;
  1184.                         }
  1185. //veririficar se e dois canos usando todas as combinações possiveis para horizontal
  1186.                         if(verificacao == 0){
  1187.                             if((matrizC1[x][y-1] == 'O' || matrizC1[x][y-1] == 'B')){
  1188.                                 printf("tiro num dois canos\n");
  1189.                                 verificacao = 1;
  1190.                                 tipoDeBarco = 2;
  1191.                             }else{
  1192.                                 verificacao = 0;
  1193.                             }
  1194.                             if((matrizC1[x][y+1] == 'O' || matrizC1[x][y+1] == 'B')){
  1195.                                 printf("tiro num dois canos\n");
  1196.                                 verificacao = 1;
  1197.                                 tipoDeBarco = 2;
  1198.                             }else{
  1199.                                 printf("devido a um erro não foi possível determinar qual barco foi atingido. no entanto o tiro foi registado\n");
  1200.                             }
  1201.                         }
  1202.                     //          verificarHorizontal(x, y, matrizComputador)
  1203.                                 }else if(matrizC1[x-1][y] == 'X' || matrizC1[x+1][y] == 'X' || matrizC1[x-1][y] == '~' || matrizC1[x+1][y] == '~' || matrizC1[x][y-1] == 'X' || matrizC1[x][y+1] == 'X' || matrizC1[x][y-1] == '~' || matrizC1[x][y+1] == '~'){
  1204.                                     printf("afundou um submarino\n");
  1205.                                 }
  1206.                                 if(tipoDeBarco == 5){
  1207.                                     if (matrizC1[x-1][y] == 'B' && matrizC1[x-2][y] == 'B' && (matrizC1[x-2][y-1] == 'B' || matrizC1[x][y-1] == 'B') && (matrizC1[x-2][y+1] == 'B' || matrizC1[x][y+1] == 'B' )){
  1208.                                         printf("porta avioes afundado\n");
  1209.                                         verificacao = 1; //condicao verificada logo nao deixa os proximos if's comecarem
  1210.                                         barcoAfundado = 1;
  1211.  
  1212.                                     }else if (matrizC1[x+1][y] == 'B' && matrizC1[x+2][y] == 'B' && (matrizC1[x+2][y-1] == 'B' || matrizC1[x][y-1] == 'B') && (matrizC1[x+2][y+1] == 'B' || matrizC1[x][y+1] == 'B' )){
  1213.                                         printf("porta avioes afundado\n");
  1214.                                         verificacao = 1;
  1215.                                         barcoAfundado = 1;
  1216.  
  1217.                                         }else if (matrizC1[x+1][y] == 'B' && matrizC1[x-1][y] == 'B' && (matrizC1[x-1][y-1] == 'B' || matrizC1[x+1][y-1] == 'B') && (matrizC1[x-1][y+1] == 'B' || matrizC1[x+1][y+1] == 'B')){
  1218.                                             printf("porta avioes afundado\n");
  1219.                                             verificacao = 1;
  1220.                                             barcoAfundado = 1;
  1221.  
  1222.                                             }else if (matrizC1[x][y+1] == 'B' && matrizC1[x][y+2] == 'B' && (matrizC1[x-1][y] == 'B' || matrizC1[x-1][y+2] == 'B') && (matrizC1[x+1][y+2] == 'B' || matrizC1[x+1][y] == 'B')){
  1223.                                                 printf("porta avioes afundado\n");
  1224.                                                 verificacao = 1;
  1225.                                                 barcoAfundado = 1;
  1226.  
  1227.                                                 }else if (matrizC1[x+2][y] == 'B' && matrizC1[x+1][y] == 'B' && (matrizC1[x+1][y+1] == 'B' || matrizC1[x+1][y-1] == 'B') && (matrizC1[x+1][y-2] == 'B' || matrizC1[x+1][y+2] == 'B')){
  1228.                                                     printf("porta avioes afundado\n");
  1229.                                                     verificacao = 1;
  1230.                                                     barcoAfundado = 1;
  1231.  
  1232.                                                     }else if (matrizC1[x][y+1] == 'B' && matrizC1[x][y+2] == 'B' && (matrizC1[x+1][y+1] == 'B' || matrizC1[x-1][y+1] == 'B') && (matrizC1[x+2][y+1] == 'B' || matrizC1[x-2][y+1] == 'B')){
  1233.                                                         printf("porta avioes afundado\n");
  1234.                                                         verificacao = 1;
  1235.                                                         barcoAfundado = 1;
  1236.  
  1237.                                                         }else if (matrizC1[x][y-1] == 'B' && matrizC1[x][y-2] == 'B' && (matrizC1[x+1][y-1] == 'B' || matrizC1[x-1][y-1] == 'B') && (matrizC1[x+2][y-1] == 'B' || matrizC1[x-2][y-1] == 'B')){
  1238.                                                             printf("porta avioes afundado\n");
  1239.                                                             verificacao = 1;
  1240.                                                             barcoAfundado = 1;
  1241.  
  1242.                                                             }else if (matrizC1[x-2][y] == 'B' && matrizC1[x-1][y] == 'B' && (matrizC1[x-1][y+1] == 'B' || matrizC1[x-1][y-1] == 'B') && (matrizC1[x-1][y-2] == 'B' || matrizC1[x-1][y+2] == 'B')){
  1243.                                                                 printf("porta avioes afundado\n");
  1244.                                                                 verificacao = 1;
  1245.                                                                 barcoAfundado = 1;
  1246.  
  1247.                                                                 }else if (matrizC1[x][y-1] == 'B' && matrizC1[x][y+1] == 'B' && (matrizC1[x-1][y+1] == 'B' || matrizC1[x-1][y-1] == 'B') && (matrizC1[x+1][y+1] == 'B' || matrizC1[x+1][y-1] == 'B')){
  1248.                                                                     printf("porta avioes afundado\n");
  1249.                                                                     verificacao = 1;
  1250.                                                                     barcoAfundado = 1;
  1251.  
  1252.                                                                     }else if (matrizC1[x][y-1] == 'B' && matrizC1[x][y-2] == 'B' && (matrizC1[x-1][y-2] == 'B' || matrizC1[x-1][y] == 'B') && (matrizC1[x+1][y-2] == 'B' || matrizC1[x+1][y] == 'B')){
  1253.                                                                         printf("porta avioes afundado\n");
  1254.                                                                         verificacao = 1;
  1255.                                                                         barcoAfundado = 1;
  1256.  
  1257.                                                                         }else{
  1258.                                                                             verificacao = 0;
  1259.                                                                             barcoAfundado = 0;
  1260.                                                                         }
  1261.                                 }
  1262.                     }
  1263.                                 blocosComputador = blocosComputador-1;
  1264.                 }else{
  1265.                     printf("coordenada inválida. Reintroduza a coordenada sobre a qual disparar\n");
  1266.                 }
  1267.             }
  1268.         } while(numTiro<3);
  1269.         numTiro = 0;
  1270.  
  1271.  
  1272.         x = 0;
  1273.         y = 0;
  1274.  
  1275.  
  1276.  
  1277.         // AI - Tiros do computador
  1278.         do{
  1279.             x = xAnteriorComp;
  1280.             y = yAnteriorComp;
  1281.             if (blocosUtilizador == 0 || blocosComputador == 0){
  1282.                 numTiro = 3;
  1283.             }else if(matrizC2[x][y] == 'B' && barcoAfundado == '0'){ //variavel barcoAfundado 0 para nao, 1 para sim
  1284.                 //numTiro = numTiro+1;
  1285.                 switch(tipoDeBarco){
  1286.  
  1287.                 case 2:
  1288.                     if (matrizC2[x][y-1] == '~'){
  1289.                         y=y-1;
  1290.                     }else if (matrizC2[x][y+1] == '~'){
  1291.                         y=y+1;
  1292.                     }else if (matrizC2[x-1][y] == '~'){
  1293.                         x=x-1;
  1294.                     }else if (matrizC2[x+1][y] == '~'){
  1295.                         x=x+1;
  1296.                     }else{
  1297.                         x=rand() %10;
  1298.                         y=rand() %10;
  1299.                     }
  1300.                 break;
  1301.  
  1302.                 case 3:
  1303.                     if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == '~'){
  1304.                         y=y-2;
  1305.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == '~'){
  1306.                         y=y+2;
  1307.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == '~'){
  1308.                         x=x-2;
  1309.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+1][y] == '~'){
  1310.                         x=x+2;
  1311.                     }else if (matrizC2[x][y-1] == '~'){
  1312.                         y=y-1;
  1313.                     }else if (matrizC2[x][y+1] == '~'){
  1314.                         y=y+1;
  1315.                     }else if (matrizC2[x-1][y] == '~'){
  1316.                         x=x-1;
  1317.                     }else if (matrizC2[x+1][y] == '~'){
  1318.                         x=x+1;
  1319.                     }else{
  1320.                         x=rand() %10;
  1321.                         y=rand() %10;
  1322.                     }
  1323.                 break;
  1324.  
  1325.                 case 4:
  1326.                     if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x][y-3] == '~'){
  1327.                         y=y-3;
  1328.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x][y+3] == '~'){
  1329.                         y=y+3;
  1330.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x-3][y] == '~'){
  1331.                         x=x-3;
  1332.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x+3][y] == '~'){
  1333.                         x=x+3;
  1334.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == '~'){
  1335.                         y=y-2;
  1336.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == '~'){
  1337.                         y=y+2;
  1338.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == '~'){
  1339.                         x=x-2;
  1340.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+1][y] == '~'){
  1341.                         x=x+2;
  1342.                     }else if (matrizC2[x][y-1] == '~'){
  1343.                         y=y-1;
  1344.                     }else if (matrizC2[x][y+1] == '~'){
  1345.                         y=y+1;
  1346.                     }else if (matrizC2[x-1][y] == '~'){
  1347.                         x=x-1;
  1348.                     }else if (matrizC2[x+1][y] == '~'){
  1349.                         x=x+1;
  1350.                     }else{
  1351.                         x=rand() %10;
  1352.                         y=rand() %10;
  1353.                     }
  1354.                 break;
  1355.  
  1356.                 case 5:
  1357.                     if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x][y+1] == '~'){
  1358.                         y=y+1;
  1359.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x][y-1] == '~'){
  1360.                         y=y-1;
  1361.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x][y-1] == '~'){
  1362.                         y=y-1;
  1363.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == '~'){
  1364.                         y=y+1;
  1365.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x][y-1] == '~'){
  1366.                         y=y-1;
  1367.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x+1][y-1] == 'B' && matrizC2[x][y+1] == '~'){
  1368.                         y=y+1;
  1369.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x-1][y+1] == '~'){
  1370.                         x=x-1;
  1371.                         y=y+1;
  1372.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x-1][y+1] == 'B' && matrizC2[x-1][y+2] == '~'){
  1373.                         x=x-1;
  1374.                         y=y+2;
  1375.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x-1][y-1] == '~'){
  1376.                         x=x-1;
  1377.                         y=y-1;
  1378.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == 'B' && matrizC2[x-1][y-1] == 'B' && matrizC2[x-1][y-2] == '~'){
  1379.                         x=x-1;
  1380.                         y=y-2;
  1381.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x-1][y+1] == '~'){
  1382.                         x=x-1;
  1383.                         y=y+1;
  1384.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x-1][y+1] == 'B' && matrizC2[x-1][y-1] == '~'){
  1385.                         x=x-1;
  1386.                         y=y-1;
  1387.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x+1][y-1] == '~'){
  1388.                         x=x+1;
  1389.                         y=y-1;
  1390.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x+1][y-1] == 'B' && matrizC2[x+1][y+1] == '~'){
  1391.                         x=x+1;
  1392.                         y=y+1;
  1393.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x][y+1] == '~'){
  1394.                         y=y+1;
  1395.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == '~'){
  1396.                         y=y+2;
  1397.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x][y-1] == '~'){
  1398.                         y=y-1;
  1399.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == '~'){
  1400.                         y=y-2;
  1401.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == 'B' && matrizC2[x][y+1] == '~'){
  1402.                         y=y+1;
  1403.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x][y-1] == '~'){
  1404.                         y=y-1;
  1405.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == 'B' && matrizC2[x+2][y-1] == '~'){
  1406.                         x=x+2;
  1407.                         y=y-1;
  1408.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == 'B' && matrizC2[x+2][y-1] == 'B' && matrizC2[x+2][y+1] == '~'){
  1409.                         x=x+1;
  1410.                         y=y+1;
  1411.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == 'B' && matrizC2[x+1][y+1] == '~'){
  1412.                         x=x+1;
  1413.                         y=y+1;
  1414.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == 'B' && matrizC2[x+1][y+1] == 'B' && matrizC2[x+1][y+2] == '~'){
  1415.                         x=x+1;
  1416.                         y=y+2;
  1417.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == 'B' && matrizC2[x+1][y-1] == '~'){
  1418.                         x=x+1;
  1419.                         y=y-1;
  1420.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == 'B' && matrizC2[x+1][y-1] == 'B' && matrizC2[x+1][y+1] == '~'){
  1421.                         x=x+1;
  1422.                         y=y+1;
  1423.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x+1][y]  == '~'){
  1424.                         x=x+1;
  1425.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x-1][y] == '~'){
  1426.                         x=x-1;
  1427.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x+1][y+2] == '~'){
  1428.                         x=x+1;
  1429.                         y=y+2;
  1430.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x-1][y+2] == '~'){
  1431.                         x=x-1;
  1432.                         y=y+2;
  1433.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x-1][y] == '~'){
  1434.                         x=x-1;
  1435.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x+1][y+2] == 'B' && matrizC2[x-1][y+2] == '~'){
  1436.                         x=x-1;
  1437.                         y=y+2;
  1438.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x-1][y+1] == '~'){
  1439.                         x=x-1;
  1440.                         y=y+1;
  1441.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x+1][y+1] == '~'){
  1442.                         x=x+1;
  1443.                         y=y+1;
  1444.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x-1][y+1] == 'B' && matrizC2[x-2][y+1] == '~'){
  1445.                         x=x-2;
  1446.                         y=y+1;
  1447.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == 'B' && matrizC2[x+1][y+1] == 'B' && matrizC2[x+2][y+1] == '~'){
  1448.                         x=x+2;
  1449.                         y=y+1;
  1450.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x+1][y-1] == '~'){
  1451.                         x=x+1;
  1452.                         y=y-1;
  1453.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x-1][y-1] == '~'){
  1454.                         x=x-1;
  1455.                         y=y-1;
  1456.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x-1][y+1] == '~' && matrizC2[x+1][y+1] == 'B' ){
  1457.                         x=x-1;
  1458.                         y=y+1;
  1459.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x+1][y+1] == '~' && matrizC2[x-1][y+1] == 'B'){
  1460.                         x=x+1;
  1461.                         y=y+1;
  1462.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x+1][y] == '~'){
  1463.                         x=x+1;
  1464.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x-1][y] == '~'){
  1465.                         x=x-1;
  1466.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x+2][y] == '~'){
  1467.                         x=x+2;
  1468.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y+1] == 'B' && matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == '~'){
  1469.                         x=x-2;
  1470.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x+1][y] == '~'){
  1471.                         x=x+1;
  1472.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x+1][y-2] == '~'){
  1473.                         x=x+1;
  1474.                         y=y-2;
  1475.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x-1][y-1] == '~'){
  1476.                         x=x-1;
  1477.                         y=y-1;
  1478.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x+1][y] == 'B' && matrizC2[x-1][y] == '~'){
  1479.                         x=x-1;
  1480.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x+1][y-2] == 'B' && matrizC2[x-1][y-2] == '~'){
  1481.                         x=x-1;
  1482.                         y=y-2;
  1483.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x-1][y-1] == 'B' && matrizC2[x-2][y-1] == '~'){
  1484.                         x=x-2;
  1485.                         y=y-1;
  1486.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x+1][y-1] == 'B' && matrizC2[x+2][y-1] == '~'){
  1487.                         x=x+2;
  1488.                         y=y-1;
  1489.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == 'B' && matrizC2[x+1][y-1] == '~'){
  1490.                         x=x+1;
  1491.                         y=y-1;
  1492.                     }else if (matrizC2[x][y-1] == 'B' && matrizC2[x][y-2] == '~'){
  1493.                         y=y-2;
  1494.                     }else if (matrizC2[x][y+1] == 'B' && matrizC2[x][y+2] == '~'){
  1495.                         y=y+2;
  1496.                     }else if (matrizC2[x-1][y] == 'B' && matrizC2[x-2][y] == '~'){
  1497.                         x=x-2;
  1498.                     }else if (matrizC2[x+1][y] == 'B' && matrizC2[x+1][y] == '~'){
  1499.                         x=x+2;
  1500.                     }else if (matrizC2[x][y-1] == '~'){
  1501.                         y=y-1;
  1502.                     }else if (matrizC2[x][y+1] == '~'){
  1503.                         y=y+1;
  1504.                     }else if (matrizC2[x-1][y] == '~'){
  1505.                         x=x-1;
  1506.                     }else if (matrizC2[x+1][y] == '~'){
  1507.                         x=x+1;
  1508.                     }else{
  1509.                     x=rand() %10;
  1510.                     y=rand() %10;
  1511.                     }
  1512.                     break;
  1513.                 }
  1514.                 if(x>=0 && y>=0 && x<=10 && y<=10){
  1515.                     if (matrizU1[x][y] == '~'){
  1516.                             matrizU1[x][y] = 'X';
  1517.                             matrizC2[x][y] = 'X';
  1518.                             printf("o computador deu um tiro na água");
  1519.                             barcoAfundado = 0;
  1520.                         }else{
  1521.                             matrizU1[x][y] = 'B';
  1522.                             matrizC2[x][y] = 'B';
  1523.                             if (matrizU1[x-1][y] == 'O' || matrizU1[x+1][y] == 'O' || matrizU1[x-1][y] == 'B' || matrizU1[x+1][y] == 'B'){
  1524.                             /*  barcoVertical(x, y, matrizUtilizador, tipoDeBarco)
  1525.                                 verificarVertical(x, y, matrizUtilizador, barcoAfundado)*/
  1526.                             }else if(matrizU1[x][y-1] == 'O' || matrizU1[x][y+1] == 'O' || matrizU1[x][y-1] == 'B' || matrizU1[x][y+1] == 'B'){
  1527.                                 /*barcoHorizontal(x, y, matrizUtilizador, tipoDeBarco)
  1528.                                 verificarHorizontal(x, y, matrizUtilizador, barcoAfundado)*/
  1529.                             }else{
  1530.                                 printf("O computador afundou um submarino");
  1531.                                 barcoAfundado = 1;
  1532.                             }
  1533.                         if(tipoDeBarco == 5){
  1534.                             if (matrizU1[x-1][y] == 'B' && matrizU1[x-2][y] == 'B' && (matrizU1[x-2][y-1] == 'B' || matrizU1[x][y-1] == 'B') && (matrizU1[x-2][y+1] == 'B' || matrizU1[x][y+1] == 'B' )){
  1535.                                 printf("porta avioes afundado\n");
  1536.                                 verificacao = 1; //condicao verificada logo nao deixa os proximos if's comecarem
  1537.                                 barcoAfundado = 1;
  1538.  
  1539.                             }else if (matrizU1[x+1][y] == 'B' && matrizU1[x+2][y] == 'B' && (matrizU1[x+2][y-1] == 'B' || matrizU1[x][y-1] == 'B') && (matrizU1[x+2][y+1] == 'B' || matrizU1[x][y+1] == 'B' )){
  1540.                                 printf("porta avioes afundado\n");
  1541.                                 verificacao = 1;
  1542.                                 barcoAfundado = 1;
  1543.                             }else if (matrizU1[x+1][y] == 'B' && matrizU1[x-1][y] == 'B' && (matrizU1[x-1][y-1] == 'B' || matrizU1[x+1][y-1] == 'B') && (matrizU1[x-1][y+1] == 'B' || matrizU1[x+1][y+1] == 'B')){
  1544.                                 printf("porta avioes afundado\n");
  1545.                                 verificacao = 1;
  1546.                                 barcoAfundado = 1;
  1547.                             }else if (matrizU1[x][y+1] == 'B' && matrizU1[x][y+2] == 'B' && (matrizU1[x-1][y] == 'B' || matrizU1[x-1][y+2] == 'B') && (matrizU1[x+1][y+2] == 'B' || matrizU1[x+1][y] == 'B')){
  1548.                                 printf("porta avioes afundado\n");
  1549.                                 verificacao = 1;
  1550.                                 barcoAfundado = 1;
  1551.                             }else if (matrizU1[x+2][y] == 'B' && matrizU1[x+1][y] == 'B' && (matrizU1[x+1][y+1] == 'B' || matrizU1[x+1][y-1] == 'B') && (matrizU1[x+1][y-2] == 'B' || matrizU1[x+1][y+2] == 'B')){
  1552.                                 printf("porta avioes afundado\n");
  1553.                                 verificacao = 1;
  1554.                                 barcoAfundado = 1;
  1555.                             }else if (matrizU1[x][y+1] == 'B' && matrizU1[x][y+2] == 'B' && (matrizU1[x+1][y+1] == 'B' || matrizU1[x-1][y+1] == 'B') && (matrizU1[x+2][y+1] == 'B' || matrizU1[x-2][y+1] == 'B')){
  1556.                                 printf("porta avioes afundado\n");
  1557.                                 verificacao = 1;
  1558.                                 barcoAfundado = 1;
  1559.                             }else if (matrizU1[x][y-1] == 'B' && matrizU1[x][y-2] == 'B' && (matrizU1[x+1][y-1] == 'B' || matrizU1[x-1][y-1] == 'B') && (matrizU1[x+2][y-1] == 'B' || matrizU1[x-2][y-1] == 'B')){
  1560.                                 printf("porta avioes afundado\n");
  1561.                                 verificacao = 1;
  1562.                                 barcoAfundado = 1;
  1563.                             }else if (matrizU1[x-2][y] == 'B' && matrizU1[x-1][y] == 'B' && (matrizU1[x-1][y+1] == 'B' || matrizU1[x-1][y-1] == 'B') && (matrizU1[x-1][y-2] == 'B' || matrizU1[x-1][y+2] == 'B')){
  1564.                                 printf("porta avioes afundado\n");
  1565.                                 verificacao = 1;
  1566.                                 barcoAfundado = 1;
  1567.                             }else if (matrizU1[x][y-1] == 'B' && matrizU1[x][y+1] == 'B' && (matrizU1[x-1][y+1] == 'B' || matrizU1[x-1][y-1] == 'B') && (matrizU1[x+1][y+1] == 'B' || matrizU1[x+1][y-1] == 'B')){
  1568.                                 printf("porta avioes afundado\n");
  1569.                                 verificacao = 1;
  1570.                                 barcoAfundado = 1;
  1571.                             }else if (matrizU1[x][y-1] == 'B' && matrizU1[x][y-2] == 'B' && (matrizU1[x-1][y-2] == 'B' || matrizU1[x-1][y] == 'B') && (matrizU1[x+1][y-2] == 'B' || matrizU1[x+1][y] == 'B')){
  1572.                                 printf("porta avioes afundado\n");
  1573.                                 verificacao = 1;
  1574.                                 barcoAfundado = 1;
  1575.                             }else{
  1576.                                 verificacao = 0;
  1577.                                 barcoAfundado = 0;
  1578.                             }
  1579.                         }
  1580.                         blocosUtilizador = blocosUtilizador-1;
  1581.                     }
  1582.                 }
  1583.             }else{
  1584.                 x = rand() %10;
  1585.                 y = rand() %10;
  1586.                 if(x>=0 && y>=0 && x<=10 && y<=10){
  1587.                     if (matrizC2[x][y] == '~'){
  1588.                         xAnteriorComp = x;
  1589.                         yAnteriorComp = y;
  1590.                         numTiro = numTiro+1;
  1591.                         if (matrizU1[x][y] == '~'){
  1592.                             matrizU1[x][y] = 'X';
  1593.                             matrizC2[x][y] = 'X';
  1594.                             printf("o computador deu um tiro na água");
  1595.                             barcoAfundado = 0;
  1596.                         }else{
  1597.                             matrizU1[x][y] = 'B';
  1598.                             matrizC2[x][y] = 'B';
  1599.                             if (matrizU1[x-1][y] == 'O' || matrizU1[x+1][y] == 'O' || matrizU1[x-1][y] == 'B' || matrizU1[x+1][y] == 'B'){
  1600.                                     /*barcoVertical(x, y, matrizUtilizador, tipoDeBarco)
  1601.                                     verificarVertical(x, y, matrizUtilizador, barcoAfundado)*/
  1602.                             }else if(matrizU1[x][y-1] == 'O' || matrizU1[x][y+1] == 'O' || matrizU1[x][y-1] == 'B' || matrizU1[x][y+1] == 'B'){
  1603.                                     /*barcoHorizontal(x, y, matrizUtilizador, tipoDeBarco)
  1604.                                     verificarHorizontal(x, y, matrizUtilizador, barcoAfundado)*/
  1605.                             }else{
  1606.                                 printf("O computador afundou um submarino");
  1607.                                 barcoAfundado = 1;
  1608.                             }
  1609.                             if(tipoDeBarco == 5){
  1610.                                 if (matrizU1[x-1][y] == 'B' && matrizU1[x-2][y] == 'B' && (matrizU1[x-2][y-1] == 'B' || matrizU1[x][y-1] == 'B') && (matrizU1[x-2][y+1] == 'B' || matrizU1[x][y+1] == 'B' )){
  1611.                                     printf("porta avioes afundado\n");
  1612.                                     verificacao = 1; //condicao verificada logo nao deixa os proximos if's comecarem
  1613.                                     barcoAfundado = 1;
  1614.                                 }else if (matrizU1[x+1][y] == 'B' && matrizU1[x+2][y] == 'B' && (matrizU1[x+2][y-1] == 'B' || matrizU1[x][y-1] == 'B') && (matrizU1[x+2][y+1] == 'B' || matrizU1[x][y+1] == 'B' )){
  1615.                                     printf("porta avioes afundado\n");
  1616.                                     verificacao = 1;
  1617.                                     barcoAfundado = 1;
  1618.                                 }else if (matrizU1[x+1][y] == 'B' && matrizU1[x-1][y] == 'B' && (matrizU1[x-1][y-1] == 'B' || matrizU1[x+1][y-1] == 'B') && (matrizU1[x-1][y+1] == 'B' || matrizU1[x+1][y+1] == 'B')){
  1619.                                     printf("porta avioes afundado\n");
  1620.                                     verificacao = 1;
  1621.                                     barcoAfundado = 1;
  1622.                                 }else if (matrizU1[x][y+1] == 'B' && matrizU1[x][y+2] == 'B' && (matrizU1[x-1][y] == 'B' || matrizU1[x-1][y+2] == 'B') && (matrizU1[x+1][y+2] == 'B' || matrizU1[x+1][y] == 'B')){
  1623.                                     printf("porta avioes afundado\n");
  1624.                                     verificacao = 1;
  1625.                                     barcoAfundado = 1;
  1626.                                 }else if (matrizU1[x+2][y] == 'B' && matrizU1[x+1][y] == 'B' && (matrizU1[x+1][y+1] == 'B' || matrizU1[x+1][y-1] == 'B') && (matrizU1[x+1][y-2] == 'B' || matrizU1[x+1][y+2] == 'B')){
  1627.                                     printf("porta avioes afundado\n");
  1628.                                     verificacao = 1;
  1629.                                     barcoAfundado = 1;
  1630.                                 }else if (matrizU1[x][y+1] == 'B' && matrizU1[x][y+2] == 'B' && (matrizU1[x+1][y+1] == 'B' || matrizU1[x-1][y+1] == 'B') && (matrizU1[x+2][y+1] == 'B' || matrizU1[x-2][y+1] == 'B')){
  1631.                                     printf("porta avioes afundado\n");
  1632.                                     verificacao = 1;
  1633.                                     barcoAfundado = 1;
  1634.                                 }else if (matrizU1[x][y-1] == 'B' && matrizU1[x][y-2] == 'B' && (matrizU1[x+1][y-1] == 'B' || matrizU1[x-1][y-1] == 'B') && (matrizU1[x+2][y-1] == 'B' || matrizU1[x-2][y-1] == 'B')){
  1635.                                     printf("porta avioes afundado\n");
  1636.                                     verificacao = 1;
  1637.                                     barcoAfundado = 1;
  1638.                                 }else if (matrizU1[x-2][y] == 'B' && matrizU1[x-1][y] == 'B' && (matrizU1[x-1][y+1] == 'B' || matrizU1[x-1][y-1] == 'B') && (matrizU1[x-1][y-2] == 'B' || matrizU1[x-1][y+2] == 'B')){
  1639.                                     printf("porta avioes afundado\n");
  1640.                                     verificacao = 1;
  1641.                                     barcoAfundado = 1;
  1642.                                 }else if (matrizU1[x][y-1] == 'B' && matrizU1[x][y+1] == 'B' && (matrizU1[x-1][y+1] == 'B' || matrizU1[x-1][y-1] == 'B') && (matrizU1[x+1][y+1] == 'B' || matrizU1[x+1][y-1] == 'B')){
  1643.                                     printf("porta avioes afundado\n");
  1644.                                     verificacao = 1;
  1645.                                     barcoAfundado = 1;
  1646.                                 }else if (matrizU1[x][y-1] == 'B' && matrizU1[x][y-2] == 'B' && (matrizU1[x-1][y-2] == 'B' || matrizU1[x-1][y] == 'B') && (matrizU1[x+1][y-2] == 'B' || matrizU1[x+1][y] == 'B')){
  1647.                                     printf("porta avioes afundado\n");
  1648.                                     verificacao = 1;
  1649.                                     barcoAfundado = 1;
  1650.                                 }else{
  1651.                                     verificacao = 0;
  1652.                                     barcoAfundado = 0;
  1653.                                 }
  1654.                             }
  1655.                             blocosUtilizador = blocosUtilizador-1;
  1656.                         }
  1657.                     }else{
  1658.                         continue;
  1659.                     }
  1660.                 }
  1661.             }
  1662.         } while (numTiro<3);
  1663.     } while(blocosComputador != 0 || blocosUtilizador != 0);
  1664.  
  1665.     if(blocosComputador == 0){
  1666.         printf("Parabéns! Ganhou o combate!");
  1667.     }else{
  1668.         printf("Perdeu o combate!");
  1669.     }
  1670. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement