Téléverser les fichiers vers "/"
This commit is contained in:
commit
ddb902638c
25
blocus.h
Normal file
25
blocus.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef BLOCUS_H
|
||||
#define BLOCUS_H
|
||||
|
||||
#define EMPTY 0
|
||||
#define PLAYER1 1
|
||||
#define PLAYER2 2
|
||||
#define BLOCKED -1
|
||||
|
||||
typedef struct {
|
||||
int size;
|
||||
int grid[9][9];
|
||||
int player1_x, player1_y;
|
||||
int player2_x, player2_y;
|
||||
int current_player;
|
||||
int winner;
|
||||
} Game;
|
||||
|
||||
// Prototypes
|
||||
void initialize_game(Game *game, int size);
|
||||
int is_valid_move(Game *game, int x, int y);
|
||||
void move_player(Game *game, int x, int y);
|
||||
void block_cell(Game *game, int x, int y);
|
||||
int has_lost(Game *game);
|
||||
|
||||
#endif
|
149
graph.h
Normal file
149
graph.h
Normal file
@ -0,0 +1,149 @@
|
||||
#ifndef _GRAPH_H
|
||||
#define _GRAPH_H
|
||||
|
||||
#include<X11/Xlib.h>
|
||||
#include<X11/Xutil.h>
|
||||
#include<X11/keysym.h>
|
||||
|
||||
extern int _X;
|
||||
extern int _Y;
|
||||
|
||||
#define NB_PIXMAP 10
|
||||
|
||||
typedef unsigned long couleur;
|
||||
typedef XPoint Point;
|
||||
|
||||
int InitialiserGraphique();
|
||||
/* initialise le mode graphique : renvoie 1 en cas de succes, 0 sinon */
|
||||
|
||||
int CreerFenetre(int posx,int posy,int X,int Y);
|
||||
/* creer la fenetre graphique de largeur X et longueur Y, et la positionne
|
||||
sur l'ecran au point (posx,posy). Une seule fenetre autorisée */
|
||||
|
||||
void ChoisirTitreFenetre(char *s);
|
||||
/* change le titre de la fenetre */
|
||||
|
||||
void ChoisirCurseur(unsigned int forme);
|
||||
/* change le curseur de la fenetre */
|
||||
|
||||
void CacherFenetre(void);
|
||||
/* cache la fenetre */
|
||||
|
||||
void AfficherFenetre(void);
|
||||
/* affiche la fenetre */
|
||||
|
||||
void ChoisirEcran(int n);
|
||||
/* fixe l'ecran ou le dessin est effectue : cette ecran est soit 0 (la fenetre
|
||||
visible, ecran par defaut au demarrage), soit le numero de l'écran virtuel correspondant */
|
||||
|
||||
void ChoisirCouleurDessin(couleur c);
|
||||
/* fixe la couleur qui sert au dessin */
|
||||
|
||||
couleur CouleurParNom(char * nom);
|
||||
/* fait la traduction d'une couleur a partir de son nom : le fichier rgb.txt
|
||||
contient la liste des couleurs accessibles via leur nom */
|
||||
|
||||
couleur CouleurParComposante(unsigned char r, unsigned char v,unsigned char b);
|
||||
/* renvoie la couleur définie par ses trois composantes */
|
||||
|
||||
int Maxx();
|
||||
/* renvoie la largeur de l'ecran : il faut que le mode graphique ait été
|
||||
initialise !!! */
|
||||
|
||||
int Maxy();
|
||||
/* renvoie la hauteur de l'ecran : il faut que le mode graphique ait été
|
||||
initialise !!! */
|
||||
|
||||
void DessinerPixel(int x,int y);
|
||||
/* allume un pixel avec la couleur de dessin */
|
||||
|
||||
void DessinerSegment(int x,int y,int xx,int yy);
|
||||
/* idem precedent, mais avec la couleur de dessin */
|
||||
|
||||
void DessinerSegments(Point * sommets,int nb_sommets);
|
||||
/* trace pour chaque paire sommet[i],sommet[i+1] le segment correspondant. Si le deux extrémités correspondent, le polygone est fermé */
|
||||
|
||||
void DessinerRectangle(int x,int y,int l,int h);
|
||||
/* idem, mais utilise la couleur de dessin */
|
||||
|
||||
void RemplirRectangle(int x,int y,int l,int h);
|
||||
/* trace un rectangle plein, rempli avec c */
|
||||
|
||||
void DessinerArc(int x,int y,int l,int h,int angle1,int angle2);
|
||||
/* idem, mais utilise la couleur de dessin */
|
||||
|
||||
void RemplirArc(int x,int y,int l,int h,int angle1,int angle2);
|
||||
/* trace un arc plein avec c */
|
||||
|
||||
void RemplirTriangle(int x,int y,int xx,int yy,int xxx,int yyy);
|
||||
/* trace un triangle plein */
|
||||
|
||||
void RemplirPolygone(Point * sommets,int nb_sommet);
|
||||
/* Trace un polygone plein défini par son tableau de sommets. Si les extremités ne coincident pas, le polygone est fermé automatiquement.
|
||||
*/
|
||||
|
||||
int ToucheEnAttente();
|
||||
/* renvoie 1 si une touche a été enfoncée, 0 sinon */
|
||||
|
||||
KeySym Touche();
|
||||
/* renvoie la premiere touche du tampon : cette fonction est bloquante =>
|
||||
utiliser ToucheEnAttente pour la rendre non bloquante */
|
||||
|
||||
void EcrireTexte(int x,int y,char *texte,int taille);
|
||||
/* ecrit la chaine texte au point (x,y) : taille indique la taille (0<->petit,1<->moyen,2<->grand) */
|
||||
#ifdef HAVE_XPM
|
||||
void SauverImage(char * file,int x,int y,int l,int h);
|
||||
/* sauvegarde d'une partie de la fenetre (x,y,x+l,y+h) au format xpm */
|
||||
#endif
|
||||
|
||||
int ChargerImage(char *file,int x,int y,int xx,int yy,int l,int h);
|
||||
/* charge une partie (xx,yy,xx+l,yy+h) d'image au format xpm dans
|
||||
la fenetre a la position (x,y) */
|
||||
|
||||
void ChargerImageFond(char *file);
|
||||
/* charge une image qui remplit le fond de la fen\^etre, en la r\'ep\'etant si necessaire */
|
||||
|
||||
void EffacerEcran(couleur c);
|
||||
/* efface l'ecran avec la couleur c*/
|
||||
|
||||
void ChoisirModeDessin(int m);
|
||||
/* fixe le mode d'affichage : 0<->ecrasement 1<->xor */
|
||||
|
||||
int TailleChaineEcran(char *t,int taile);
|
||||
/* renvoie, en pixel, la taille horizontale occupee par la chaine à l'écran :taille est la taille de la police (0,1,2) */
|
||||
|
||||
int TailleSupPolice(int taille);
|
||||
/* renvoie la taiile maximale de la police, en pixel, au dessus de la ligne d'écriture */
|
||||
|
||||
int TailleInfPolice(int taille);
|
||||
/* renvoie la taille maximale de la police, en pixel, en dessous de la ligne d'écriture */
|
||||
|
||||
void CopierZone(int src,int dst,int ox,int oy,int L,int H,int dx,int dy);
|
||||
/* copie une zone de l'écran vers l'écran dst. La zone copiée est le rectangle delimite par le coin superieure hauche (ox,oy) et sa largeur l et hauteur h. Cette zone est copié au point (dx,dy) de l'ecran dst */
|
||||
|
||||
void FermerGraphique();
|
||||
/* fermeture du mode graphique */
|
||||
|
||||
unsigned long Microsecondes();
|
||||
/* renvoie le nombre de microsecondes ecoulées depuis le
|
||||
lancement du programme */
|
||||
|
||||
void SourisPosition();
|
||||
/* recupere les coordonnees de la souris dans la fenetre et les place dans _X et _Y*/
|
||||
|
||||
int SourisCliquee();
|
||||
/* indique un clic de souris (1 si oui, 0 sinon), et recupere si c'est le cas la position au moment du clic dans _X et _Y */
|
||||
|
||||
|
||||
/* fonctions a réécrire proprement */
|
||||
|
||||
int ChargerSprite(char *file);
|
||||
/* charge un srpite en mémoire, et renvoie son numéro
|
||||
* -1 en cas d'echec */
|
||||
void AfficherSprite(int n,int x,int y);
|
||||
/* affiche le sprite correspondant à son numéro */
|
||||
void LibererSprite(int n);
|
||||
/* libere les ressources associées au sprite
|
||||
* n */
|
||||
|
||||
#endif
|
36
graphics_utils.c
Normal file
36
graphics_utils.c
Normal file
@ -0,0 +1,36 @@
|
||||
#include "graphics_utils.h"
|
||||
#include <graph.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void draw_grid(Game *game) {
|
||||
EffacerEcran(CouleurParNom("white"));
|
||||
int cell_size = 500 / game->size;
|
||||
|
||||
for (int i = 0; i <= game->size; i++) {
|
||||
DessinerSegment(50 + i * cell_size, 50, 50 + i * cell_size, 50 + game->size * cell_size);
|
||||
DessinerSegment(50, 50 + i * cell_size, 50 + game->size * cell_size, 50 + i * cell_size);
|
||||
}
|
||||
}
|
||||
|
||||
int choose_grid_size(int *mode) {
|
||||
EffacerEcran(CouleurParNom("white"));
|
||||
EcrireTexte(100, 100, "Choisissez une taille de grille (3 à 9)", 2);
|
||||
EcrireTexte(100, 200, "Mode : 1 joueur (1) ou 2 joueurs (2)", 2);
|
||||
|
||||
int grid_size = 5;
|
||||
|
||||
while (!SourisCliquee());
|
||||
SourisPosition();
|
||||
|
||||
grid_size = (_X - 50) / 100 + 3; // Ajustez selon votre interface
|
||||
*mode = (_Y < 300) ? 1 : 2;
|
||||
|
||||
return grid_size;
|
||||
}
|
||||
|
||||
void display_winner(int player) {
|
||||
EffacerEcran(CouleurParNom("white"));
|
||||
char msg[50];
|
||||
sprintf(msg, "Le gagnant est le joueur %d!", player);
|
||||
EcrireTexte(200, 250, msg, 2);
|
||||
}
|
10
graphics_utils.h
Normal file
10
graphics_utils.h
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef GRAPHICS_UTILS_H
|
||||
#define GRAPHICS_UTILS_H
|
||||
|
||||
#include "blocus.h"
|
||||
|
||||
void draw_grid(Game *game);
|
||||
void display_winner(int player);
|
||||
int choose_grid_size(int *mode);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user