Untitled
unknown
plain_text
a month ago
4.2 kB
2
Indexable
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> // Para usar toupper() #define TAMANHO 10 void imprimirTabuleiro(int tabuleiroVisivel[TAMANHO][TAMANHO]) { char colunas[10] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}; printf("\n "); for (int i = 0; i < TAMANHO; i++) { printf(" %c", colunas[i]); } printf("\n"); for (int i = 0; i < TAMANHO; i++) { printf("%2d ", i + 1); for (int j = 0; j < TAMANHO; j++) { if (tabuleiroVisivel[i][j] == 3) // Acertou um navio printf("3 "); else if (tabuleiroVisivel[i][j] == -1) // Tiro errado printf("X "); else // Posição ainda não revelada printf("0 "); } printf("\n"); } } void inicializarTabuleiros(int tabuleiro[TAMANHO][TAMANHO], int tabuleiroVisivel[TAMANHO][TAMANHO]) { for (int i = 0; i < TAMANHO; i++) { for (int j = 0; j < TAMANHO; j++) { tabuleiro[i][j] = 0; // 0 representa água tabuleiroVisivel[i][j] = 0; // Tabuleiro visível inicial sem revelações } } // Posicionamento fixo dos navios (3 representa um navio) tabuleiro[0][0] = 3; tabuleiro[0][1] = 3; tabuleiro[0][2] = 3; tabuleiro[2][0] = 3; tabuleiro[3][0] = 3; tabuleiro[4][0] = 3; tabuleiro[4][4] = 3; tabuleiro[5][5] = 3; tabuleiro[6][6] = 3; tabuleiro[6][3] = 3; tabuleiro[7][2] = 3; tabuleiro[8][1] = 3; } int jogar(int tabuleiro[TAMANHO][TAMANHO], int tabuleiroVisivel[TAMANHO][TAMANHO]) { char entrada[10]; int linha; char coluna; int colunaIndex; while (1) { printf("\nDigite a linha (1-10) ou 'S' para sair: "); scanf("%s", entrada); // Converte para maiúscula e verifica se é "S" if (toupper(entrada[0]) == 'S') { printf("Jogo encerrado!\n"); return 0; } linha = atoi(entrada); // Converte para número printf("Digite a coluna (A-J) ou 'S' para sair: "); scanf(" %s", entrada); if (toupper(entrada[0]) == 'S') { printf("Jogo encerrado!\n"); return 0; } coluna = toupper(entrada[0]); // Ajusta para índice do array linha -= 1; colunaIndex = coluna - 'A'; if (linha < 0 || linha >= TAMANHO || colunaIndex < 0 || colunaIndex >= TAMANHO) { printf("Coordenada inválida! Tente novamente.\n"); continue; } if (tabuleiroVisivel[linha][colunaIndex] != 0) { printf("⚠️ Você já atirou aqui! Escolha outra posição.\n"); continue; } if (tabuleiro[linha][colunaIndex] == 3) { printf("\n💥 Acertou um navio!\n"); tabuleiroVisivel[linha][colunaIndex] = 3; } else { printf("\n🌊 Água! Nenhum navio aqui.\n"); tabuleiroVisivel[linha][colunaIndex] = -1; } return 1; // Continua o jogo } } int main() { int opcao; int tabuleiro[TAMANHO][TAMANHO]; int tabuleiroVisivel[TAMANHO][TAMANHO]; inicializarTabuleiros(tabuleiro, tabuleiroVisivel); do { printf("\n---------------- Bem-Vindo ao Batalha Naval ----------------\n"); printf("1. Regras do Jogo\n"); printf("2. Jogar\n"); printf("3. Sair\n"); printf("Escolha uma opção: "); scanf("%d", &opcao); switch (opcao) { case 1: printf("Regras em desenvolvimento...\n"); break; case 2: while (1) { imprimirTabuleiro(tabuleiroVisivel); if (!jogar(tabuleiro, tabuleiroVisivel)) break; // Sai do jogo se o jogador digitar "S" } break; case 3: printf("Saindo do jogo...\n"); break; default: printf("\n----------------### OPÇÃO INVÁLIDA ###----------------\n\n"); break; } } while (opcao != 3); return 0; }
Editor is loading...
Leave a Comment