online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <stdio.h> #include <stdbool.h> #include <ctype.h> #include <stdlib.h> #include <time.h> #define VISIBLE 1 #define INVISIBLE 0 int modeAffichage; // 1 pour visible, 0 pour invisible typedef struct { // D�finition de notre structure Navire pour les bateaux en jeu. char* nom; int taille; } Navire; void Init_grille(char grille[10][10]) { // Initialisation de la grille de jeu for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { grille[i][j] = 'O'; } } } void Affiche_grille(char grille[10][10]) { // Affichage de la grille printf(" "); for (char lettre = 'A'; lettre < 'J'; lettre++) { printf("%c ", lettre); // Affiche les lettres des colonnes } printf("\n"); for (int i = 0; i < 9; i++) { printf("%d ", i + 1); // Commence � afficher les num�ros de ligne � partir de 1 for (int j = 0; j < 9; j++) { char cellule = grille[i][j]; if (modeAffichage == INVISIBLE && (cellule == 'P' || cellule == 'C' || cellule == 'S' || cellule == 'T')) { printf("O "); // Remplace les bateaux par de l'eau si en mode invisible } else { printf("%c ", cellule); } } printf("\n"); } } bool estDansLaGrille(int taille, int ligne, int colonne, char orientation) {// Verification de est ce que les coordonn�es sont dans la grille if (orientation == 'H') { return colonne + taille <= 9; } else if (orientation == 'V') { return ligne + taille <= 9; } return false; } bool estChevauchement(char grille[10][10], int taille, int ligne, int colonne, char orientation) { // Verification simple de chevauchement if (orientation == 'H') { for (int i = 0; i < taille; i++) { if (grille[ligne][colonne + i] != 'O') return true; } } else if (orientation == 'V') { for (int i = 0; i < taille; i++) { if (grille[ligne + i][colonne] != 'O') return true; } } return false;https://www.onlinegdb.com/online_c_compiler#tab-stdin } int Init_bateau(char grille[10][10], Navire navire, int ligne, int colonne, char orientation) { if (colonne >= 'A' && colonne <= 'I') { colonne -= 'A'; } else if (colonne >= 'a' && colonne <= 'i') { colonne -= 'a'; } // Ajuster la ligne et la colonne pour commencer � A:1 ligne--; colonne--; while (!estDansLaGrille(navire.taille, ligne, colonne, orientation) || estChevauchement(grille, navire.taille, ligne, colonne, orientation)) { // Si les conditions ne sont pas remplies, on g�n�re de nouvelles coordonn�es al�atoires ligne = rand() % 9 + 1; colonne = rand() % 9 + 1; } // Une fois que des coordonn�es valides sont trouv�es, on place le navire sur la grille for (int i = 0; i < navire.taille; i++) { if (orientation == 'H') { grille[ligne][colonne + i] = navire.nom[0]; // on vient nommer les position avec la premiere lettre du navire } else if (orientation == 'V') { grille[ligne + i][colonne] = navire.nom[0]; } } return 1; } void placer_bateaux_aleatoirement(char grille[10][10]) { srand(time(NULL)); // Initialiser le g�n�rateur de nombres al�atoires Navire porte_avion = {"P", 5}; Navire croiseur = {"C", 4}; Navire sous_marin = {"S", 3}; Navire torpilleur = {"T", 2}; // Placer le porte-avions char orientation = rand() % 2 == 0 ? 'H' : 'V'; // Choix al�atoire de l'orientation int ligne = rand() % 9 + 1; // Ligne al�atoire entre 1 et 9 int colonne = rand() % 9 + 1; // Colonne al�atoire entre 1 et 9 Init_bateau(grille, porte_avion, ligne, colonne, orientation); // Placer le croiseur do { orientation = rand() % 2 == 0 ? 'H' : 'V'; ligne = rand() % 9 + 1; colonne = rand() % 9 + 1; } while (!Init_bateau(grille, croiseur, ligne, colonne, orientation)); // Placer le sous-marin do { orientation = rand() % 2 == 0 ? 'H' : 'V'; ligne = rand() % 9 + 1; colonne = rand() % 9 + 1; } while (!Init_bateau(grille, sous_marin, ligne, colonne, orientation)); // Placer le torpilleur do { orientation = rand() % 2 == 0 ? 'H' : 'V'; ligne = rand() % 9 + 1; colonne = rand() % 9 + 1; } while (!Init_bateau(grille, torpilleur, ligne, colonne, orientation)); } void Test_tirs(char grille[10][10]) { char colonneLet; int ligne, colonne; // On demande les coordonn�es x et y et on les mets dans les variable colonneLet,ligne printf("Entrez les coordonnees horizontale du tir (A,B,C,D,E,F,G,H,I) : "); scanf(" %c", &colonneLet); printf("Entrez les coordonnees verticale du tir (1,2,3,4,5,6,7,8,9) : "); scanf(" %d", &ligne); colonne = toupper(colonneLet) - 'A' + 1; // toupper et une fonction servant a mettre tout en majuscule (pratique pour ne g�rer que un cas (les minuscules)) if (ligne < 1 || ligne > 9 || colonne < 1 || colonne > 9) { // Modifier les limites pour exclure J printf("Coordonnees invalides.\n"); return; } if (grille[ligne - 1][colonne - 1] == 'O') { printf("Coup dans l'eau.\n"); grille[ligne - 1][colonne - 1] = 'E'; } else if (grille[ligne - 1][colonne - 1] != ' ' && grille[ligne - 1][colonne - 1] != 'E' && grille[ligne - 1][colonne - 1] != 'X') { printf("Bateau %c touche!\n", grille[ligne - 1][colonne - 1]); grille[ligne - 1][colonne - 1] = 'X'; } } bool Test_fin_jeu(char grille[10][10]) { for (int i = 0; i < 9; i++) { // Modifier le nombre de lignes for (int j = 0; j < 9; j++) { // Modifier le nombre de colonnes if (grille[i][j] != 'O' && grille[i][j] != 'E' && grille[i][j] != 'X') { return false; // On vient passer en revu tout notre grille si a un seul moment on constate autre chose que O (rien dans cette position) ou E (tirs �chou�) ou X (tir r�ussi) alors on peut en d�duire que tout les bateaux ne sont pas encore d�truits donc return false. } } } printf("Jeu termine!\n"); // Cas �ch�ant ici return true; } int main() { char grille[10][10]; Init_grille(grille); printf("Voulez-vous placer les bateaux al�atoirement ? (1 pour oui, 0 pour non) : "); int choix; scanf("%d", &choix); if (choix == 1) { placer_bateaux_aleatoirement(grille); } else { // D�finition de nos bateaux gr�ce � notre structure. Navire porte_avion = {"P", 5}; Navire croiseur = {"C", 4}; Navire sous_marin = {"S", 3}; Navire torpilleur = {"T", 2}; // Initialisation de nos bateaux Init_bateau(grille, porte_avion, 1, 1, 'H'); Init_bateau(grille, croiseur, 3, 4, 'V'); Init_bateau(grille, sous_marin, 5, 5, 'H'); Init_bateau(grille, torpilleur, 8, 7, 'V'); } printf("Voulez-vous afficher les bateaux ? (1 pour oui, 0 pour non) : "); scanf("%d", &modeAffichage); Affiche_grille(grille); bool jeuTermine = false; do { Test_tirs(grille); Affiche_grille(grille); jeuTermine = Test_fin_jeu(grille); // si le jeu est termin� alors notre while (!jeuTermine) cesse. } while (!jeuTermine); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue