modification et améliorations des codes + ajout du melange + jeu fonctionnel
This commit is contained in:
@@ -1,24 +1,39 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include "affichage.h"
|
#include "affichage.h"
|
||||||
#include <graph.h>
|
#include <graph.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "partie.h"
|
#include "partie.h"
|
||||||
|
|
||||||
int main(void){
|
int main(void){
|
||||||
int grille[NB_LIGNES][NB_COLS],touche;
|
int grille[NB_LIGNES][NB_COLS], touche;
|
||||||
|
|
||||||
init_affichage();
|
init_affichage();
|
||||||
|
|
||||||
initialiser_plateau(grille);
|
initialiser_plateau(grille);
|
||||||
|
|
||||||
|
melanger_plateau(grille);
|
||||||
|
|
||||||
afficher_plateau(grille);
|
afficher_plateau(grille);
|
||||||
|
|
||||||
while(1){
|
while(1){
|
||||||
|
|
||||||
if (ToucheEnAttente()){
|
if (ToucheEnAttente()){
|
||||||
touche = Touche();
|
touche = Touche();
|
||||||
if (touche == XK_q)break;
|
|
||||||
|
|
||||||
|
/* Pour quitter cliquer sur q minuscule ou Escape (27) */
|
||||||
|
if (touche == 'q' || touche == 27) break;
|
||||||
|
|
||||||
|
/* Debug : affiche le code touche */
|
||||||
|
printf("Touche appuyée : %d\n", touche);
|
||||||
|
|
||||||
|
/* Déplacement et mise a jour de l'affichage */
|
||||||
|
deplacer(grille, touche);
|
||||||
|
afficher_plateau(grille);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fermer_affichage();
|
fermer_affichage();
|
||||||
return 0;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
#include "partie.h"
|
#include "partie.h"
|
||||||
|
/* On inclut stdio au cas où */
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
/* Codes des touches avec les fleches (standards X11) */
|
||||||
|
#define FL_GAUCHE 65361
|
||||||
|
#define FL_HAUT 65362
|
||||||
|
#define FL_DROITE 65363
|
||||||
|
#define FL_BAS 65364
|
||||||
|
|
||||||
void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]){
|
void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]){
|
||||||
int i, j;
|
int i, j;
|
||||||
int compteur = 1;
|
int compteur = 1;
|
||||||
@@ -12,3 +22,67 @@ void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]){
|
|||||||
/*On laisse la dernière case du tableu vide pour le taquin*/
|
/*On laisse la dernière case du tableu vide pour le taquin*/
|
||||||
grille[NB_LIGNES - 1 ][NB_COLS - 1] = 0;
|
grille[NB_LIGNES - 1 ][NB_COLS - 1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void deplacer(int grille[NB_LIGNES][NB_COLS], int touche) {
|
||||||
|
int i, j;
|
||||||
|
int vide_i, vide_j;
|
||||||
|
int cible_i, cible_j;
|
||||||
|
int temp;
|
||||||
|
|
||||||
|
/* Trouver la case vide */
|
||||||
|
vide_i = -1;
|
||||||
|
for(i = 0; i < NB_LIGNES; i++) {
|
||||||
|
for(j = 0; j< NB_COLS; j++) {
|
||||||
|
if (grille[i][j] == 0) {
|
||||||
|
vide_i = i;
|
||||||
|
vide_j = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* INiitialisation cible */
|
||||||
|
cible_i = vide_i;
|
||||||
|
cible_j = vide_j;
|
||||||
|
|
||||||
|
/* Calculer la cible */
|
||||||
|
if(touche == FL_GAUCHE) cible_j = vide_j + 1;
|
||||||
|
if(touche == FL_DROITE) cible_j = vide_j - 1;
|
||||||
|
if(touche == FL_HAUT) cible_i = vide_i + 1;
|
||||||
|
if(touche == FL_BAS) cible_i = vide_i - 1;
|
||||||
|
|
||||||
|
/* Vérifier les murs */
|
||||||
|
if (cible_i < 0 || cible_i >= NB_LIGNES ||
|
||||||
|
cible_j < 0 || cible_j >= NB_COLS) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Echanger */
|
||||||
|
temp = grille[cible_i][cible_j];
|
||||||
|
grille[cible_i][cible_j] = 0;
|
||||||
|
grille[vide_i][vide_j] = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void melanger_plateau(int grille[NB_LIGNES][NB_COLS]) {
|
||||||
|
int i;
|
||||||
|
int touche_aleatoire;
|
||||||
|
int direction;
|
||||||
|
|
||||||
|
srand(time(NULL));
|
||||||
|
|
||||||
|
/* On fais 500 mouvements aléatoires */
|
||||||
|
for (i = 0; i < 500; i++) {
|
||||||
|
/* tirage d'un nombre entre 0 et 3 */
|
||||||
|
direction = rand() % 4;
|
||||||
|
|
||||||
|
/* On convertit ce nombre en code de touche fléchée */
|
||||||
|
/* Rappel : FL_GAUCHE vaut 65361 donc 65361 + 0, 1, 2 ou 3 donne les 4 flèches */
|
||||||
|
touche_aleatoire = FL_GAUCHE + direction;
|
||||||
|
|
||||||
|
if (i < 5) {
|
||||||
|
printf("DEBUG: Coup %d, Direction %d, Touche %d\n", i, direction, touche_aleatoire);
|
||||||
|
}
|
||||||
|
/* On joue le coup */
|
||||||
|
deplacer(grille, touche_aleatoire);
|
||||||
|
}
|
||||||
|
printf("---DEBUG: Fin du mélange ! ---\n");
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,6 +4,9 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]);
|
void initialiser_plateau(int grille[NB_LIGNES][NB_COLS]);
|
||||||
|
/*Nouvelle fonction pour gérer le déplacment */
|
||||||
|
void deplacer(int grille[NB_LIGNES][NB_COLS], int touche);
|
||||||
|
|
||||||
|
void melanger_plateau(int grille[NB_LIGNES][NB_COLS]);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user