SAE11_2024/SAé1.1/blocus_test.c

245 lines
6.2 KiB
C
Raw Permalink Normal View History

2024-11-11 17:11:17 +01:00
#include<graph.h>
#include<stdio.h>
#include<stdlib.h>
#define posx 250
#define posy 100
#define taille_case 70
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 main(void){
int case_click[9][9];
int x, y, i, j;
int solo, multi = 0;
int modegrille, grille = 0;
int touche;
int tx, ty = grille*taille_case;
int case_x, case_y;
int last_case_x_j1, last_case_y_j1, last_case_x_j2, last_case_y_j2; /*dernières positions des cases du joueur 1 et 2*/
int game = 1;
int joueur = 1;
int sprite = 1;
int placement1=0;
int placement2=0;
int rouge;
int bleu;
int blocage;
/*int limite_tour = 50*/ /*Pour la limite de sprite à 50*/
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);
}
/* creation fenetre et menu principal*/
InitialiserGraphique();
CreerFenetre(posx,posy,500,500);
EcrireTexte(200,200,"Blocus", 2);
sleep(1);
EffacerEcran(CouleurParNom("white"));
sleep(1);
/* Dessin des rectangles du menu*/
DessinerRectangle(75,75,350,100); /* rectangle 1 (1 joueur)*/
DessinerRectangle(75,250,350,100);/*rectangle 2 (2 joueurs)*/
/*Texte du menu*/
EcrireTexte(150,125, "1 Joueur",2);
EcrireTexte(150,300,"2 Joueurs", 2);
/*Vérifier si un clic a été effectué*/
while(game == 1){
if(SourisCliquee()) {
SourisPosition();
x= _X;
y= _Y;
/*Vérifier si les coordonnées sont dans le premier rectangle*/
if (_X >= 75 && _X <= 425 && _Y >= 75 && _Y <= 175) {
EffacerEcran(CouleurParNom("white"));
solo = 1;
modegrille = 1;
}
/* Vérifier si les coordonnées sont dans le deuxième rectangle*/
else if (_X >= 75 && _X <= 425 && _Y >= 250 && _Y <= 350) {
EffacerEcran(CouleurParNom("white"));
multi = 1;
modegrille = 1;
}
}
/* Choix de la taille de la grille après avoir choisi le mode de jeu*/
for(modegrille;modegrille==1;){
EcrireTexte(125,100,"Taille de la grille", 2);
while(grille==0){ /* choisir taille de la grille*/
touche = Touche();
if(touche == XK_KP_9){
grille = 9;
}
if(touche == XK_KP_8){
grille = 8;
}
if(touche == XK_KP_7){
grille = 7;
}
if(touche == XK_KP_6){
grille = 6;
}
if(touche == XK_KP_5){
grille = 5;
}
if(touche == XK_KP_4){
grille = 4;
}
if(touche == XK_KP_3){
grille = 3;
}
}
tx = grille * taille_case;
ty = grille * taille_case;
FermerGraphique(); /*Creation d'une fenetre aux dimensions de la grille choisie*/
InitialiserGraphique();
CreerFenetre(posx,posy,tx,ty);
for(i=0;i<grille;i++){ /*tracer la grille de la partie*/
for(j=0;j<grille;j++){
DessinerRectangle(j*taille_case, i*taille_case,taille_case,taille_case);
}
}
while(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);
if(case_x < grille && case_y < grille && case_click[case_x][case_y] != 1) {
if(placement1!=1){
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;
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");
}
AfficherSprite(rouge, case_x*taille_case, case_y*taille_case);
last_case_x_j1 = case_x;
last_case_y_j1 = case_y;
placement1=1;
case_click[case_x][case_y]=1;
}
else if(placement2!=1){
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;
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");
}
AfficherSprite(bleu, 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]=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);
if(case_x < grille && case_y < grille && case_click[case_x][case_y] != 1 && sprite == 1) {
if(joueur == 1 && placement1 == 1){
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");
}
AfficherSprite(blocage, case_x*taille_case+1, case_y*taille_case+1);
case_click[case_x][case_y]=1;
placement2-=1;
}
else if(joueur == -1 && placement2 == 1){
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");
}
AfficherSprite(blocage, case_x*taille_case, case_y*taille_case);
case_click[case_x][case_y]=1;
placement1-=1;
}
/*Changement de joueur*/
joueur=-(joueur);
}
}
}
}
}
/*Fermeture des fichiers*/
fclose(SpriteRouge);
fclose(SpriteBleu);
fclose(SpriteBlocage);
}