Compare commits

..

No commits in common. "bekkouch-patch-1" and "main" have entirely different histories.

10 changed files with 0 additions and 519 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,289 +0,0 @@
#include<graph.h>
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include "blocus.h"
#define posx 250
#define posy 100
#define taille_case 70
int main(void){
int case_click[9][9] = {0};
int game = 1;
int joueur = 1;
int last_case_x_j1, last_case_y_j1;
int last_case_x_j2, last_case_y_j2;
int sprite = 0;
int sprite2 = 0;
int placement1 = 0;
int placement2 = 0;
int solo = 0;
int multi = 0;
int x = 0, y = 0, i, j;
int mode_grille = 0;
int grille = 0;
int tx = 0, ty = 0;
int case_x = 0, case_y = 0;
int rouge;
int bleu;
int blocage;
int gagnant = 0;
int aleatoirex;
int aleatoirey;
int coordX, coordY;
int blocX, blocY;
int deplacementX, deplacementY;
/* Pointeurs de fichiers pour les sprites */
FILE *spriteRouge = fopen("rouge.bmp","r");
FILE *spriteBleu = fopen("bleu.bmp","r");
FILE *spriteBlocage = fopen("blocage.bmp","r");
if(spriteRouge == NULL){
printf("Le fichier 'rouge.bmp' est introuvable.\n");
} else{
printf("Le fichier 'rouge.bmp' est trouvé !\n");
fclose(spriteRouge);
}
if(spriteBleu == NULL){
printf("Le fichier 'bleu.bmp' est introuvable.\n");
} else{
printf("Le fichier 'bleu.bmp' est trouvé.\n");
fclose(spriteBleu);
}
if(spriteBlocage == NULL){
printf("Le fichier 'blocage.bmp' est introuvable.\n");
} else{
printf("Le fichier 'blocage.bmp' est trouvé.\n");
fclose(spriteBlocage);
}
creer_menu(&solo,&multi,&mode_grille,&grille);
initialiser_grille(grille);
/* Chargement des sprites du jeu*/
ChargerImage("spriteBlocage", case_x*taille_case, case_y*taille_case,70,70, 70, 70);
blocage = ChargerSprite("blocage.bmp");
if(blocage == -1){
printf("Erreur lors du chargement du sprite");}
ChargerImage("spriteBleu", case_x*taille_case, case_y*taille_case,70,70, 70, 70);
bleu = ChargerSprite("bleu.bmp");
if(bleu == -1){
printf("Erreur lors du chargement du sprite");}
ChargerImage("spriteRouge", case_x*taille_case, case_y*taille_case,70,70, 70, 70);
rouge = ChargerSprite("rouge.bmp");
if(rouge == -1){
printf("Erreur lors du chargement du sprite");}
while(game==1){
while(placement1!=1 || placement2 != 1){
if(SourisCliquee()){
x = _X;
y = _Y;
case_x = x / taille_case;
case_y = y / taille_case;
printf("case choisie : %d, %d\n", case_x, case_y);
/* Premier tour */
if(case_x < grille && case_y < grille && case_click[case_x][case_y] != 1) {
if(sprite == 0 && case_click[case_x][case_y] != 3){
AfficherSprite(rouge, case_x*taille_case, case_y*taille_case);
sprite = 1;
last_case_x_j2 = case_x; /*j2 car il sera le deuxième à joueur sauf au placement pour pas le désavantager*/
last_case_y_j2 = case_y;
case_click[case_x][case_y]=2;
if(solo == 1){
CoordIA(grille, &coordX, &coordY);
AfficherSprite(bleu, (coordX-1)*taille_case, (coordY-1)*taille_case);
sprite2 =1;
placement1 = 1;
last_case_x_j1 = coordX-1;
last_case_y_j1 = coordY-1;
}
}
else if(multi == 1 && sprite2 == 0 && case_click[case_x][case_y] != 2){
AfficherSprite(bleu, case_x*taille_case, case_y*taille_case);
sprite2 = 1;
placement2 = 1;
last_case_x_j1 = case_x;
last_case_y_j1 = case_y;
case_click[case_x][case_y]=3;
ChoisirCouleurDessin(CouleurParNom("blue")); /*Affichage de l'indication de tour pour le joueur rouge en début de partie*/
RemplirRectangle(0,ty+1,tx,ty-100);
}
if(case_click[case_x][case_y] !=1 && case_click[case_x][case_y] !=2 && sprite == 1 && sprite2 == 1 && placement1!=1 && estAdjacent(last_case_x_j1, last_case_y_j1, case_x, case_y)) {
EffacerAncienSprite(last_case_x_j1*taille_case, last_case_y_j1*taille_case, taille_case, taille_case);
case_click[last_case_x_j1][last_case_y_j1]=0;
AfficherSprite(bleu, case_x*taille_case, case_y*taille_case);
last_case_x_j1 = case_x; /*recupère la coordonnée*/
last_case_y_j1 = case_y;
placement1=1;
case_click[case_x][case_y]=3;
}
else if(case_click[case_x][case_y] != 1 && case_click[case_x][case_y] !=3 && sprite == 1 && sprite2 == 1 && placement2!= 1 && estAdjacent(last_case_x_j2, last_case_y_j2, case_x, case_y)) {
EffacerAncienSprite(last_case_x_j2*taille_case, last_case_y_j2*taille_case, taille_case, taille_case);
case_click[last_case_x_j2][last_case_y_j2]=0;
AfficherSprite(rouge, case_x*taille_case, case_y*taille_case);
last_case_x_j2 = case_x;
last_case_y_j2 = case_y;
placement2=1;
case_click[case_x][case_y]=2;
}
}
}
}
if(SourisCliquee()){
x = _X;
y = _Y;
case_x = x / taille_case;
case_y = y / taille_case;
printf("case choisie : %d, %d\n", case_x, case_y);
if(case_x < grille && case_y < grille && case_click[case_x][case_y] != 1) {
if(joueur == 1 && placement1 == 1 && case_click[case_x][case_y] != 1 && case_click[case_x][case_y]!=2 && case_click[case_x][case_y]!=3){
AfficherSprite(blocage, case_x*taille_case+1, case_y*taille_case+1);
case_click[case_x][case_y]=1;
placement2-=1;
ChoisirCouleurDessin(CouleurParNom("red"));
RemplirRectangle(0,ty+1,tx,ty-100);
if(solo == 1){
for (i = 0; i < grille; i++) {
for (j = 0; j < grille; j++) {
if (case_click[j][i] == 3 && (j + 1 >= grille || case_click[j + 1][i] != 0) &&
(j - 1 < 0 || case_click[j - 1][i] != 0) &&
(i + 1 >= grille || case_click[j][i + 1] != 0) &&
(i - 1 < 0 || case_click[j][i - 1] != 0) &&
(j + 1 >= grille || i + 1 >= grille || case_click[j + 1][i + 1] != 0) &&
(j + 1 >= grille || i - 1 < 0 || case_click[j + 1][i - 1] != 0) &&
(j - 1 < 0 || i + 1 >= grille || case_click[j - 1][i + 1] != 0) &&
(j - 1 < 0 || i - 1 < 0 || case_click[j - 1][i - 1] != 0)) {
printf("GG ROUGE\n");
sleep(1);
gagnant = 2;
ecran_de_fin(gagnant);
}
}
}
do{
do{
DeplacementIAX(grille, &deplacementX);
}while(last_case_x_j1+deplacementX < 0 || last_case_x_j1+deplacementX >= grille);
do{
DeplacementIAY(grille, &deplacementY);
}while((last_case_y_j1+deplacementY < 0 || last_case_y_j1+deplacementY >= grille));
}while(case_click[last_case_x_j1+deplacementX][last_case_y_j1+deplacementY] != 0 || (deplacementX == 0 && deplacementY == 0));
EffacerAncienSprite(last_case_x_j1*taille_case, last_case_y_j1*taille_case, taille_case, taille_case);
case_click[last_case_x_j1][last_case_y_j1]=0;
AfficherSprite(bleu, (last_case_x_j1+deplacementX)*taille_case, (last_case_y_j1+deplacementY)*taille_case);
last_case_x_j1 = last_case_x_j1 + deplacementX; /*recupère la coordonnée*/
last_case_y_j1 = last_case_y_j1 + deplacementY;
placement1=1;
case_click[last_case_x_j1][last_case_y_j1]=3;
do{
CoordBlocageIA(grille, &blocX, &blocY);
}while(case_click[blocX-1][blocY-1] != 0);
AfficherSprite(blocage, (blocX-1)*taille_case, (blocY-1)*taille_case);
case_click[blocX-1][blocY-1] = 1;
}
}
else if(joueur == -1 && placement2 == 1 && case_click[case_x][case_y] != 1 && case_click[case_x][case_y]!=2 && case_click[case_x][case_y]!=3){
if(multi == 1){
AfficherSprite(blocage, case_x*taille_case, case_y*taille_case);
case_click[case_x][case_y]=1;
placement1-=1;
ChoisirCouleurDessin(CouleurParNom("blue"));
RemplirRectangle(0,ty+1,tx,ty-100);
}
}
/*Vérification si les joueurs peuvent encore bouger*/
for (i = 0; i < grille; i++) {
for (j = 0; j < grille; j++) {
if (case_click[j][i] == 2 && (j + 1 >= grille || case_click[j + 1][i] != 0) &&
(j - 1 < 0 || case_click[j - 1][i] != 0) &&
(i + 1 >= grille || case_click[j][i + 1] != 0) &&
(i - 1 < 0 || case_click[j][i - 1] != 0) &&
(j + 1 >= grille || i + 1 >= grille || case_click[j + 1][i + 1] != 0) &&
(j + 1 >= grille || i - 1 < 0 || case_click[j + 1][i - 1] != 0) &&
(j - 1 < 0 || i + 1 >= grille || case_click[j - 1][i + 1] != 0) &&
(j - 1 < 0 || i - 1 < 0 || case_click[j - 1][i - 1] != 0)) {
printf("GG BLEU\n");
sleep(1);
gagnant = 1;
ecran_de_fin(gagnant);
}
if (case_click[j][i] == 3 && (j + 1 >= grille || case_click[j + 1][i] != 0) &&
(j - 1 < 0 || case_click[j - 1][i] != 0) &&
(i + 1 >= grille || case_click[j][i + 1] != 0) &&
(i - 1 < 0 || case_click[j][i - 1] != 0) &&
(j + 1 >= grille || i + 1 >= grille || case_click[j + 1][i + 1] != 0) &&
(j + 1 >= grille || i - 1 < 0 || case_click[j + 1][i - 1] != 0) &&
(j - 1 < 0 || i + 1 >= grille || case_click[j - 1][i + 1] != 0) &&
(j - 1 < 0 || i - 1 < 0 || case_click[j - 1][i - 1] != 0)) {
printf("GG ROUGE\n");
sleep(1);
gagnant = 2;
ecran_de_fin(gagnant);
}
}
}
}
if(multi == 1){
/*Changement de joueur sauf lors des placements des pions*/
joueur=-(joueur);
}
}
}
/*Fermeture des fichiers*/
fclose(spriteRouge);
fclose(spriteBleu);
fclose(spriteBlocage);
}

View File

@ -1,23 +0,0 @@
#ifndef BLOCUS_H
#define BLOCUS_H
#include <graph.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define posx 250
#define posy 100
#define taille_case 70
void EffacerAncienSprite(int x_ancien, int y_ancien, int largeur, int hauteur);
int estAdjacent(int x1, int y1, int x2, int y2);
int ecran_de_fin(int gagnant);
void creer_menu(int *solo, int *multi, int *mode_grille, int *grille);
void initialiser_grille(int grille);
void CoordIA(int grille, int *coordX, int *coordY);
void CoordBlocageIA(int grille, int *blocX, int *blocY);
void DeplacementIAX(int grille, int *deplacementX);
void DeplacementIAY(int grille, int *deplacementY);
#endif /*BLOCUS_H*/

View File

@ -1,32 +0,0 @@
#include "blocus.h"
void EffacerAncienSprite(int x_ancien, int y_ancien, int largeur, int hauteur) {
ChoisirCouleurDessin(CouleurParNom("white"));
RemplirRectangle(x_ancien + 1, y_ancien + 1, largeur - 1, hauteur - 1);
}
int ecran_de_fin(int gagnant) {
FermerGraphique();
InitialiserGraphique();
CreerFenetre(posx, posy, 400, 400);
if (gagnant == 1) { /* 1 = bleu*/
EcrireTexte(90, 100, "Le joueur bleu gagne", 1);
} else if (gagnant == 2) { /* 2 = rouge*/
EcrireTexte(90, 100, "Le joueur rouge gagne", 1);
}
DessinerRectangle(50, 150, 100, 50);
DessinerRectangle(250, 150, 100, 50); /*Nouvelle fenetre avec boutons quitter et rejouer*/
EcrireTexte(70, 175, "Rejouer", 1);
EcrireTexte(270, 175, "Quitter", 1);
while (1) {
if (SourisCliquee()) {
SourisPosition();
if (_X >= 50 && _X <= 150 && _Y >= 150 && _Y <= 200) {
FermerGraphique(); /*si coos clique = coos rectangle rejouer, fermer fenetre et relancer le jeu*/
return main();
} else if (_X >= 250 && _X <= 350 && _Y >= 150 && _Y <= 200) {
FermerGraphique(); /*si coos clique = coos rectangle quitter, fermer fenetre*/
}
}
}
}

View File

@ -1,50 +0,0 @@
#include "blocus.h"
void CoordIA(int grille, int *coordX, int *coordY) {
int aleatoirex, aleatoirey;
srand(time(NULL));
aleatoirex = rand();
do {
aleatoirex = aleatoirex / 4;
} while (aleatoirex > grille);
aleatoirey = rand();
do {
aleatoirey = aleatoirey / 4;
} while (aleatoirey > grille);
*coordX = aleatoirex;
*coordY = aleatoirey;
}
void CoordBlocageIA(int grille, int *blocX, int *blocY) {
int aleatoirex, aleatoirey;
srand(time(NULL));
aleatoirex = rand();
do {
aleatoirex = aleatoirex / 3;
} while (aleatoirex > grille);
aleatoirey = rand();
do {
aleatoirey = aleatoirey / 3;
} while (aleatoirey > grille);
*blocX = aleatoirex;
*blocY = aleatoirey;
}
void DeplacementIAX(int grille, int *deplacementX) {
int aleatoirex;
srand(time(NULL));
do {
aleatoirex = rand() % 3 - 1; /*Génère -1, 0 ou 1*/
} while (aleatoirex > grille);
*deplacementX = aleatoirex;
}
void DeplacementIAY(int grille, int *deplacementY) {
int aleatoirey;
srand(time(NULL));
do {
aleatoirey = rand() % 3 - 1; /*Génère -1, 0 ou 1*/
} while (aleatoirey > grille);
*deplacementY = aleatoirey;
}

View File

@ -1,33 +0,0 @@
CC = gcc
CFLAGS = -ansi -pedantic -g
OFILES = menu.o blocus.o utils.o graphics.o ia.o
EXE = exe
LIBS = -lgraph
install : $(EXE)
$(EXE) : $(OFILES)
$(CC) $(CFLAGS) -o $(EXE) $(OFILES) $(LIBS)
blocus.o : blocus.h menu.c graphics.c utils.c ia.c
menu.o : blocus.h
$(CC) $(CFLAGS) -c menu.c $(END)
graphics.o : blocus.h
$(CC) $(CFLAGS) -c graphics.c $(END)
utils.o : blocus.h
$(CC) $(CFLAGS) -c utils.c $(END)
ia.o : blocus.h
$(CC) $(CFLAGS) -c ia.c $(END)
run : install
./$(EXE)
clean :
rm -r *.o
cleanall : clean
rm -r $(EXE)

View File

@ -1,68 +0,0 @@
#include "blocus.h"
char* textes[] = {"3x3", "4x4", "5x5", "6x6", "7x7", "8x8", "9x9"}; /*Tableau pour grille*/
void creer_menu(int *solo, int *multi, int *mode_grille, int *grille) {
int i;
InitialiserGraphique();
CreerFenetre(posx,posy,500,500);
EcrireTexte(200, 200, "Blocus", 2);
sleep(1);
EffacerEcran(CouleurParNom("white"));
sleep(1);
DessinerRectangle(75, 75, 350, 100);
DessinerRectangle(75, 250, 350, 100);
EcrireTexte(185, 135, "1 Joueur", 2);
EcrireTexte(180, 310, "2 Joueurs", 2);
while (1) {
if (SourisCliquee()) {
SourisPosition();
if (_X >= 75 && _X <= 425 && _Y >= 75 && _Y <= 175) { /*Si clique = rectangle 1 joueur*/
EffacerEcran(CouleurParNom("white"));
*solo = 1;
*mode_grille = 1;
break;
} else if (_X >= 75 && _X <= 425 && _Y >= 250 && _Y <= 350) { /*Si clique = rectangle 2 joueurs*/
EffacerEcran(CouleurParNom("white"));
*multi = 1;
*mode_grille = 1;
break;
}
}
}
if (*mode_grille == 1) {
EcrireTexte(125, 100, "Taille de la grille", 2);
for (i = 0; i < 7; i++) {
DessinerRectangle(45 + i * 60, 150, 50, 50); /*Tracer rectangles pour choisir taille grille*/
EcrireTexte(45 + i * 60 + 15, 175, textes[i], 1); /*Ecris texte tableau dans rectangles*/
}
while (*grille == 0) {
if (SourisCliquee()) {
SourisPosition();
if (_Y >= 150 && _Y <= 200) { /*regarde si coordonnées clique = coos rectangle pour choisir taille grille*/
if (_X >= 45 && _X <= 95) {
*grille = 3;
} else if (_X >= 105 && _X <= 155) {
*grille = 4;
} else if (_X >= 165 && _X <= 215) {
*grille = 5;
} else if (_X >= 225 && _X <= 275) {
*grille = 6;
} else if (_X >= 285 && _X <= 335) {
*grille = 7;
} else if (_X >= 345 && _X <= 395) {
*grille = 8;
} else if (_X >= 405 && _X <= 455) {
*grille = 9;
}
}
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,24 +0,0 @@
#include "blocus.h"
int estAdjacent(int x1, int y1, int x2, int y2) { /*Fonction qui vérifie si deux cases sont adjacentes*/
return (x1 == x2 + 1 && y1 == y2 + 1) || (x1 == x2 - 1 && y1 == y2 - 1) ||
(x1 == x2 + 1 && y1 == y2 - 1) || (x1 == x2 - 1 && y1 == y2 + 1) ||
(x1 == x2 + 1 && y1 == y2) || (x1 == x2 - 1 && y1 == y2) ||
(x1 == x2 && y1 == y2 - 1) || (x1 == x2 && y1 == y2 + 1);
}
void initialiser_grille(int grille) {
int i, j;
int ty = grille * taille_case; /*Taille en y de la grille choisie*/
int tx = grille * taille_case; /*Taille en x de la grille choisie*/
FermerGraphique();
InitialiserGraphique(); /* creation nouvelles fenetre aux dimensions de la grille choisie*/
CreerFenetre(posx,posy,tx,ty+100); /*+100 pour indiquer tour joueur*/
for(i = 0; i < grille; i++){
for(j = 0; j < grille; j++){ /*Tracer grille*/
DessinerRectangle(j*taille_case, i*taille_case, taille_case, taille_case);
}
}
}