0% ont trouvé ce document utile (0 vote)
13 vues8 pages

Jeu de Puissance 4 en C : Code Source

Transféré par

gyyhhhhh
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats RTF, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
13 vues8 pages

Jeu de Puissance 4 en C : Code Source

Transféré par

gyyhhhhh
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats RTF, PDF, TXT ou lisez en ligne sur Scribd

#include <stdio.

h>

#include <stdlib.h>

#include <stdbool.h>

#define ROWS 6

#define COLS 7

enum cell { BLUE, RED, NONE };

typedef enum cell cell;

typedef struct {

cell board[ROWS][COLS];

} connect;

void print(cell c) {

if (c == BLUE)

printf("🔵");

if (c == RED)

printf("🔴");

if (c == NONE)

printf(" ");

void print_line(int n, char c) {

for (int i = 0; i < n; i++) {


printf("%c", c);

void init_plateau(connect *jeu) {

for (int i = 0; i < ROWS; i++) {

for (int j = 0; j < COLS; j++) {

jeu->board[i][j] = NONE;

void affichage_plateau(connect *jeu) {

for (int i = 0; i < ROWS; i++) {

for (int j = 0; j < COLS; j++) {

print(jeu->board[i][j]);

printf("\n");

print_line(COLS * 3, '-');

printf("\n");

for (int j = 1; j <= COLS; j++) {

printf(" %d ", j);


}

printf("\n\n");

int drop_jeton(connect *jeu, int col, cell player) {

if (col < 1 || col > COLS) {

printf("Erreur, veuillez choisir une colonne entre 1 et %d.\n", COLS);

return 0;

col--;

for (int i = ROWS - 1; i >= 0; i--) {

if (jeu->board[i][col] == NONE) {

jeu->board[i][col] = player;

return 1;

printf("La colonne est pleine, veuillez choisir une autre colonne.\n");

return 0;

int verif_winner(connect *jeu, int row, int col) {


cell player = jeu->board[row][col];

// Verif horizontal

int count = 1;

int i = col - 1;

while (i >= 0 && jeu->board[row][i] == player) {

count++;

i--;

i = col + 1;

while (i < COLS && jeu->board[row][i] == player) {

count++;

i++;

if (count >= 5) {

return 1; // Gagnant

// Verif verticale

count = 1;

int j = row - 1;

while (j >= 0 && jeu->board[j][col] == player) {

count++;

j--;

}
j = row + 1;

while (j < ROWS && jeu->board[j][col] == player) {

count++;

j++;

if (count >= 5) {

return 1;

// Verif diagonale 1 (droite)

count = 1;

i = col - 1;

j = row - 1;

while (i >= 0 && j >= 0 && jeu->board[j][i] == player) {

count++;

i--;

j--;

i = col + 1;

j = row + 1;

while (i < COLS && j < ROWS && jeu->board[j][i] == player) {

count++;

i++;

j++;

}
if (count >= 5) {

return 1;

// Verif diagonale 2 (gauche)

count = 1;

i = col + 1;

j = row - 1;

while (i < COLS && j >= 0 && jeu->board[j][i] == player) {

count++;

i++;

j--;

i = col - 1;

j = row + 1;

while (i >= 0 && j < ROWS && jeu->board[j][i] == player) {

count++;

i--;

j++;

if (count >= 5) {

return 1;

return 0; // Pas de vainqueur


}

int main() {

connect jeu;

init_plateau(&jeu);

int turn = 0; // 0 pour le joueur Bleu, 1 pour le joueur Rouge

int column;

do {

affichage_plateau(&jeu);

if (turn == 0) {

printf("Au tour du joueur BLEU de jouer\n");

} else {

printf("AU tour du joueur ROUGE de jouer\n");

printf("Entrer un numéro de colonne : (1-%d): ", COLS);

scanf("%d", &column);

if (drop_jeton(&jeu, column, turn == 0 ? BLUE : RED)) {

if (verif_winner(&jeu, ROWS - 1, column - 1)) {

affichage_plateau(&jeu);

printf("Le joueur %s a gagné, Félicitacions!\n", turn == 0 ? "BLUE" : "RED");


break;

turn = 1 - turn; // changer de tour

} while (1);

return 0;

Vous aimerez peut-être aussi