245 lines
6.2 KiB
C
245 lines
6.2 KiB
C
|
|
||
|
|
||
|
#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);
|
||
|
|
||
|
|
||
|
}
|
||
|
|