clucasg

Untitled-1

Feb 20th, 2021
665
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2.  
  3.  
  4. int main(void) {
  5.     int tamanhoTaboleiroX;
  6.     int tamanhoTaboleiroY;
  7.     int spawnX;
  8.     int spawnY;
  9.     char direcao;
  10.     int numeroMovimentos;
  11.     scanf("%d", & tamanhoTaboleiroX);
  12.     scanf("%d", & tamanhoTaboleiroY);
  13.     char taboleiro[tamanhoTaboleiroX][tamanhoTaboleiroY];
  14.  
  15.     for (int x = 0; x < tamanhoTaboleiroX; x++) {
  16.         for (int y = 0; y < tamanhoTaboleiroY; y++) {
  17.             scanf(" %c", & taboleiro[x][y]);
  18.         }
  19.     }
  20.  
  21.     scanf("%d", & spawnX);
  22.     spawnX--;
  23.     scanf("%d", & spawnY);
  24.     spawnY--;
  25.     scanf(" %c", & direcao);
  26.  
  27.     scanf("%d", & numeroMovimentos);
  28.     //andar
  29.     //andar para direita spawnX + 1
  30.     //andar para esquerda spawnX - 1
  31.     //andar para cima spawnY + 1
  32.     //andar para baixo spawnY - 1
  33.     while(numeroMovimentos>0){
  34.         if (direcao == 'L') {
  35.             if (spawnY + 1 < tamanhoTaboleiroY) {
  36.                 if (taboleiro[spawnX][spawnY + 1] == '.') {
  37.                     spawnY++;
  38.                     // printf("andou p direita\n");
  39.                     // puts("Nova coordenada");
  40.                     // printf("%d %d\n", spawnX, spawnY);
  41.                 } else if (taboleiro[spawnX][spawnY + 1] == '*') {
  42.                     // puts("pedra a frente, virando a esquerda");
  43.                     direcao = 'N';
  44.                 } else {
  45.                     // puts("parede a frente, virando a direita");
  46.                     direcao = 'S';
  47.                 }
  48.             } else {
  49.                 // puts("saindo do taboleiro, virando a direita");
  50.                 direcao = 'S';
  51.             }
  52.         }
  53.         else if (direcao == 'O') {
  54.             if (spawnY - 1 >= 0) {
  55.                 if (taboleiro[spawnX][spawnY - 1] == '.') {
  56.                     spawnY--;
  57.                     // printf("andou p esquerda\n");
  58.                     // puts("Nova coordenada");
  59.                     // printf("%d %d\n", spawnX, spawnY);
  60.                 } else if (taboleiro[spawnX][spawnY - 1] == '*') {
  61.                     // puts("pedra a frente, virando a esquerda");
  62.                     direcao = 'S';
  63.                 } else {
  64.                     // puts("parede a frente, virando a direita");
  65.                     direcao = 'N';
  66.                 }
  67.             } else {
  68.                 // puts("saindo do taboleiro, virando a direita");
  69.                 direcao = 'N';
  70.             }
  71.         }
  72.         else if (direcao == 'N') {
  73.             if (spawnX + 1 >= 0) {
  74.                 if (taboleiro[spawnX - 1][spawnY] == '.') {
  75.                     spawnX--;
  76.                     // printf("andou p cima\n");
  77.                     // puts("Nova coordenada");
  78.                     // printf("%d %d\n", spawnX, spawnY);
  79.                 } else if (taboleiro[spawnX - 1][spawnY] == '*') {
  80.                     // puts("pedra a frente, virando a esquerda");
  81.                     direcao = 'O';
  82.                 } else {
  83.                     // puts("parede a frente, virando a direita");
  84.                     direcao = 'L';
  85.                 }
  86.             } else {
  87.                 // puts("saindo do taboleiro, virando a direita");
  88.                 direcao = 'L';
  89.             }
  90.         }
  91.         else if (direcao == 'S') {
  92.             if (spawnX - 1 < tamanhoTaboleiroY) {
  93.                 if (taboleiro[spawnX + 1][spawnY] == '.') {
  94.                     spawnX++;
  95.                     // printf("andou p baixo\n");
  96.                     // puts("Nova coordenada");
  97.                     // printf("%d %d\n", spawnX, spawnY);
  98.                 } else if (taboleiro[spawnX + 1][spawnY] == '*') {
  99.                     // puts("pedra a frente, virando a esquerda");
  100.                     direcao = 'L';
  101.                 } else {
  102.                     // puts("parede a frente, virando a direita");
  103.                     direcao = 'O';
  104.                 }
  105.             } else {
  106.                 // puts("saindo do taboleiro, virando a direita");
  107.                 direcao = 'O';
  108.             }
  109.         }
  110.     numeroMovimentos--;
  111.     // printf("GASTOU UM MOVIMENTO\nFALTAM:%d (DIRECAO) %c\n",numeroMovimentos,direcao);
  112.     }
  113.     printf("Posição final: %d %d", spawnX + 1, spawnY + 1);
  114.  
  115.     return 0;
  116. }
RAW Paste Data