Untitled
unknown
plain_text
24 days ago
3.1 kB
7
Indexable
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 10 // Tamanho máximo fixo para a matriz void lerJogo(int *l, int *c, char matriz[MAX_SIZE][MAX_SIZE]) { FILE *ficheiro = fopen("jogo.txt", "r"); if (ficheiro == NULL) { perror("Erro ao abrir o arquivo"); return; } if (fscanf(ficheiro, "%d %d", l, c) != 2) { printf("Erro ao ler dimensoes do tabuleiro\n"); fclose(ficheiro); return; } // Verifica se as dimensões são válidas if (*l <= 0 || *c <= 0 || *l > MAX_SIZE || *c > MAX_SIZE) { printf("Dimensoes invalidas! Maximo: %dx%d\n", MAX_SIZE, MAX_SIZE); fclose(ficheiro); return; } while (fgetc(ficheiro) != '\n'); // Consome a quebra de linha char linha[MAX_SIZE + 2]; // Buffer para cada linha (+ \n e \0) for (int i = 0; i < *l; i++) { if (fgets(linha, sizeof(linha), ficheiro) == NULL) { printf("Erro ao ler linha %d do tabuleiro\n", i+1); break; } // Remove a quebra de linha linha[strcspn(linha, "\n")] = '\0'; for (int j = 0; j < *c; j++) { if (linha[j] == '\0') { printf("Aviso: linha %d menor que o esperado\n", i+1); break; } matriz[i][j] = linha[j]; } } fclose(ficheiro); printf("\nTabuleiro inicial (%dx%d):\n", *l, *c); for (int i = 0; i < *l; i++) { for (int j = 0; j < *c; j++) { printf("%c ", matriz[i][j]); } printf("\n"); } } int main() { int l = 0, c = 0; // Inicializa com 0 char comando[100]; char matriz[MAX_SIZE][MAX_SIZE]; printf("Digite um comando (l jogo para carregar): "); fgets(comando, sizeof(comando), stdin); // Remove o '\n' no final comando[strcspn(comando, "\n")] = '\0'; if (strcmp(comando, "l jogo") == 0) { lerJogo(&l, &c, matriz); } else { printf("Comando inválido.\n"); } // Resto do código... int x; char y; char command; while (l > 0 && c > 0) { // Só permite comandos se o tabuleiro foi carregado printf("> "); if (scanf(" %c %c%d", &command, &y, &x) != 3) { printf("Formato invalido! Use: b a1 ou r b2\n"); while (getchar() != '\n'); // Limpa o buffer de entrada continue; } int ord = y - 'a'; if (x >= 0 && x < l && ord >= 0 && ord < c) { if (command == 'r') { matriz[x][ord] = '#'; } else if (command == 'b') { matriz[x][ord] = matriz[x][ord] - 32; // Para maiúscula } // Mostra tabuleiro atualizado printf("\n"); for (int i = 0; i < l; i++) { for (int j = 0; j < c; j++) { printf("%c ", matriz[i][j]); } printf("\n"); } } else { printf("Coordenada invalida!\n"); } } return 0; }
Editor is loading...
Leave a Comment