Untitled
unknown
plain_text
8 months ago
3.1 kB
11
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