#include "partie.h" #include #include #include #include void initialiser_plateau(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne){ int i, j; int compteur = 1; grille[0][0] = 0; for (i = 0; i < nb_ligne; i++){ for(j = 0; j < nb_colonne; j++){ /*On saute la 1er case*/ if (i == 0 && j== 0)continue; grille[i][j] = compteur; compteur++; } } } int deplacer(int grille[MAX_TAILLE][MAX_TAILLE],int nb_ligne,int nb_colonne,int touche) { int i, j; int vide_i = -1, vide_j = -1; int cible_i, cible_j; int temp; /* Trouver la case vide */ for(i = 0; i < nb_ligne; i++) { for(j = 0; j< nb_colonne; j++) { if (grille[i][j] == 0) { /*vide i/j est l'adresse du trou*/ vide_i = i; vide_j = j; } } } /*cible i/j c'est l'adress de la case voisine qu'on veut faire glisser */ cible_i = vide_i; cible_j = vide_j; /* Calculer la cible */ if(touche == XK_Left) cible_j = vide_j - 1; else if(touche == XK_Right) cible_j = vide_j + 1; else if(touche == XK_Up) cible_i = vide_i - 1; else if(touche == XK_Down) cible_i = vide_i + 1; else { return 0; } /* Vérifier les bords */ if (cible_i < 0 || cible_i >= nb_ligne || cible_j < 0 || cible_j >= nb_colonne) { return 0; } /* Echanger */ temp = grille[cible_i][cible_j]; grille[cible_i][cible_j] = 0; grille[vide_i][vide_j] = temp; return 1; } int deplacer_souris(int grille[MAX_TAILLE][MAX_TAILLE], int nb_ligne, int nb_colonne, int clic_x, int clic_y, int l_case, int h_case) { int case_x = clic_x / l_case; int case_y = clic_y / h_case; int vide_i, vide_j, i, j; /* si on clique dehors ça ne fais rien */ if (case_x >= nb_colonne || case_y >= nb_ligne) return 0; /* recherche case vide */ for(i=0; i