Compare commits

..

2 Commits

Author SHA1 Message Date
Simoes Lukas
b08e96be47 docker 2026-02-11 14:59:27 +01:00
Simoes Lukas
b2ebfe848e ANDROID WE 2026-01-22 14:28:35 +01:00
22 changed files with 737 additions and 40 deletions

View File

@@ -0,0 +1,3 @@
*.o
app
.git

12
DEV1.1/TP12/Dockerfile Normal file
View File

@@ -0,0 +1,12 @@
FROM gcc:13 AS build
WORKDIR /app
COPY . .
RUN gcc -ansi -pedantic tests.c -o app
FROM debian:bookworm-slim
WORKDIR /app
COPY --from=build /app/app .
CMD ["./app"]
# sudo docker build -t app-c
# sudo docker run app-c

View File

@@ -5,7 +5,6 @@
int main(void){
int tab[TAILLE_TABLEAU];
int tab_inverse[TAILLE_TABLEAU];
int i;
srand(time(NULL));
@@ -34,33 +33,6 @@ int main(void){
printf("+-----");
}
printf("+\n");
/* Remplissage du tableau inverse */
for (i = 0; i != TAILLE_TABLEAU; i++) {
tab_inverse[i] = tab[TAILLE_TABLEAU-i-1];
}
/* Affichage du tableau */
for (i = 0; i != TAILLE_TABLEAU; i++) {
printf("+-----");
}
printf("+\n");
for (i = 0; i != TAILLE_TABLEAU; i++) {
if (tab_inverse[i] < 10 && tab_inverse[i] >= 0) {
printf("| %d ", tab_inverse[i]);
}
else if (tab_inverse[i] < -9) {
printf("| %d ", tab_inverse[i]);
}
else {
printf("| %d ", tab_inverse[i]);
}
}
printf("|\n");
for (i = 0; i != TAILLE_TABLEAU; i++) {
printf("+-----");
}
printf("+\n");
return EXIT_SUCCESS;
}
}

Binary file not shown.

View File

@@ -0,0 +1,31 @@
import java.util.ArrayDeque;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
ArrayDeque<String> textes = new ArrayDeque<>();
ArrayDeque<Integer> entiers = new ArrayDeque<>();
for (String chaine : args) {
try {
Integer entier = new Integer(Integer.parseInt(chaine));
entiers.addLast(entier.intValue());
} catch (NumberFormatException e) {
textes.addLast(chaine);
}
}
for (Integer entier : entiers) {
System.out.print(entier + " ");
}
System.out.println("");
for (String texte : textes) {
System.out.print(texte + " ");
}
System.out.println("");
}
}

Binary file not shown.

View File

@@ -0,0 +1,112 @@
public class ABR {
private String valeur;
private ABR filsGauche;
private ABR filsDroit;
private int compteur = 0;
public ABR() {
this.valeur = null;
this.filsDroit = null;
this.filsGauche = null;
}
public ABR(String valeur) {
this.valeur = valeur;
}
public boolean authentifier(String id, String password) {
// Si le noeud courant est vide, aller dans le fils gauche
if (this.valeur == null) {
if (this.filsGauche != null) {
return this.filsGauche.authentifier(id, password);
}
return false; // rien dans l'arbre
}
// Si on trouve l'id au noeud courant
if (this.valeur.equals(id)) {
if (this.filsDroit != null && this.filsDroit.valeur.equals(password)) {
return true;
}
return false;
}
// Sinon, continuer à gauche
if (this.filsGauche != null) {
return this.filsGauche.authentifier(id, password);
}
return false;
}
public void supprimer(String id) {
if (this.filsGauche != null) {
if (this.filsGauche.valeur.equals(id)) {
if (this.filsGauche.filsGauche != null) {
this.filsGauche = this.filsGauche.filsGauche;
} else {
this.filsGauche = null;
}
System.out.println("Suppression effectuée.");
} else {
this.filsGauche.supprimer(id);
}
}
}
public void ajouterUtilisateur(String id, String password) {
if (this.filsGauche != null && this.filsGauche.equals(id)) {
System.out.println("Valeur déjà présente.");
return;
}
if (this.filsGauche != null) {
this.filsGauche.ajouterUtilisateur(id, password);
} else {
this.filsGauche = new ABR(id);
this.filsGauche.filsDroit = new ABR(password);
}
}
public boolean estPresent(String id) {
if (this.filsGauche == null) {
return false;
}
if (this.compteur == 0) {
this.compteur++;
this.filsGauche.estPresent(id);
}
if (this.compteur != 0 && this.valeur == null) {
return false;
}
if (this.valeur.equals(id)) {
return true;
} else {
return this.filsGauche.estPresent(id);
}
}
public String toString() {
String aRenvoyer = "";
if (this.filsDroit == null && this.filsGauche == null) {
return "";
} else {
if (this.filsGauche == null) {
return "";
} else {
aRenvoyer += "Identifiant : " + this.filsGauche.valeur + " / Mot de passe : " + this.filsGauche.filsDroit.valeur + "\n";
return aRenvoyer + this.filsGauche.toString();
}
}
}
}

View File

@@ -1,42 +1,43 @@
import java.awt.*;
import java.util.HashMap;
import java.util.Map;
import java.io.*;
public class Authentification {
private Map<String, String> dictionnaire;
private ABR dictionnaire;
public Authentification() {
this.dictionnaire = new HashMap<>();
this.dictionnaire = new ABR();
}
public void ajouter(String username, String password) {
if (this.dictionnaire.get(username) != null) {
if (this.dictionnaire.estPresent(username)) {
System.out.println("L'utilisateur '" + username + "' existe déjà.");
} else {
this.dictionnaire.put(username, password);
this.dictionnaire.ajouterUtilisateur(username, password);
System.out.println("Utilisateur ajouté.");
}
System.out.println(this.dictionnaire);
}
public void authentifier(String username, String password) {
if (this.dictionnaire.get(username) == null) {
if (!this.dictionnaire.estPresent(username)) {
System.out.println("L'utilisateur '" + username + "' n'existe pas.");
} else if (!this.dictionnaire.get(username).equals(password)) {
} else if (!this.dictionnaire.authentifier(username, password)) {
System.out.println("Le mot de passe est incorrect.");
} else {
System.out.println("L'utilisateur '" + username + "' est authentifié.");
}
System.out.println(this.dictionnaire);
}
public void supprimer(String username) {
if (this.dictionnaire.get(username) == null) {
if (!this.dictionnaire.estPresent(username)) {
System.out.println("L'utilisateur '" + username + "' n'existe pas.");
} else {
this.dictionnaire.remove(username);
this.dictionnaire.supprimer(username);
System.out.println("L'utilisateur '" + username + "' a été supprimé");
}
System.out.println(this.dictionnaire);
}
public static void main(String[] args) {
@@ -63,7 +64,7 @@ public class Authentification {
auth.authentifier(ligne[1], ligne[2]);
} else if (input.equals("del")) {
auth.supprimer(ligne[1]);
} else if (input.equals("quit")) {
} else. if (input.equals("quit")) {
} else {
System.out.println("Commande non reconnue.");

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#555"
android:padding="10dp"
tools:context=".MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="660dp"
android:layout_gravity="top"
android:background="@color/white"
android:inputType="textMultiLine"
android:layout_marginBottom="10dp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:layout_weight="1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK"
android:textSize="20dp"
android:gravity="center"
/>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#555"
android:padding="10dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/champPrincipal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginBottom="10dp"
android:background="@color/white"
android:inputType="textMultiLine" />
<EditText
android:id="@+id/champSecondaire"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:layout_gravity="bottom"
android:gravity="bottom"
android:layout_toStartOf="@+id/bouton"
android:layout_below="@+id/champPrincipal"
/>
<Button
android:id="@+id/bouton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_below="@+id/champPrincipal"
android:text="OK"
android:textSize="20sp" />
</RelativeLayout>

43
Docker/Infos.txt Normal file
View File

@@ -0,0 +1,43 @@
---------------------------------------------
Dockerfile Java
---------------------------------------------
FROM eclipse-temurin:17-jdk
WORKDIR /Ecriture
COPY Ecriture.java .
RUN javac Ecriture.java
CMD ["java", "Ecriture"]
---------------------------------------------
Commandes
---------------------------------------------
Build & run :
--------------
sudo docker build -t appli .
sudo docker run --r appli
Statut docker :
----------------
sudo docker ps (--> Liste l'ensemble des processus dockers en cours, équivalent de ls pour les dockers lancés)
Accéder aux fichiers du conteneur :
-----------------------
sudo docker exec -it <id_du_conteneur> bash (--> Permet d'accéder aux fichiers du conteneur, on obtient l'id du conteneur avec sudo docker ps)
Créer un volume (monter un dossier de sa machine dans le docker) :
------------------------------------------------------------------
sudo docker run -v $(pwd):/appli nom-image (--> le dossier ":/appli" doit être le nom spécifié dans le Dockerfile, soit WORKDIR /appli)

8
Docker/TP2/Dockerfile Normal file
View File

@@ -0,0 +1,8 @@
FROM eclipse-temurin:17-jdk
WORKDIR /Ecriture
COPY Ecriture.java .
RUN javac Ecriture.java
CMD ["java", "Ecriture"]

BIN
Docker/TP2/Ecriture.class Normal file

Binary file not shown.

48
Docker/TP2/Ecriture.java Normal file
View File

@@ -0,0 +1,48 @@
import java.awt.*;
import java.io.*;
public class Ecriture {
public static void ecrireFichier() {
try {
BufferedWriter flux = new BufferedWriter(new FileWriter("Texte.txt", true));
try {
String aEcrire = "Hello world!";
flux.write(aEcrire, 0, aEcrire.length());
flux.newLine();
try {
flux.close();
} catch (IOException e3) {
System.err.println("Erreur de fermeture.");
}
} catch (IOException e2) {
System.err.println("Erreur d'écriture.");
}
} catch (IOException e1) {
System.err.println("Erreur d'ouverture.");
}
}
public static void main(String[] args) {
while (true) {
Ecriture.ecrireFichier();
System.out.println("Fichier modifié.");
try {
Thread.sleep(5000);
} catch (InterruptedException e4) {
System.err.println("Erreur de timer.");
}
}
}
}

2
Docker/TP2/Texte.txt Normal file
View File

@@ -0,0 +1,2 @@
Hello world!
Hello world!

11
SAE11_2025/Makefile Normal file
View File

@@ -0,0 +1,11 @@
jeu : jeu_principal.o
gcc -o jeu jeu_principal.o -lgraph
jeu_principal.o : jeu_principal.c jeu_principal.h
gcc -c jeu_principal.c -lgraph
clean :
rm *.o
run : jeu
./jeu

BIN
SAE11_2025/img/p4.img Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
SAE11_2025/jeu Executable file

Binary file not shown.

337
SAE11_2025/jeu_principal.c Normal file
View File

@@ -0,0 +1,337 @@
#include <stdio.h>
#include <stdlib.h>
#include <graph.h>
#include <time.h>
void affiche_grille(int grille[8][8], int nb_de_lignes, int nb_de_colonnes) {
int i, j;
for (i = 0; i < nb_de_lignes; i++) {
for (j = 0; j < nb_de_colonnes; j++) {
printf("%d ", grille[i][j]);
}
putchar('\n');
}
}
int verifie_si_taquin_complet(int grille[8][8], int nb_de_lignes, int nb_de_colonnes) {
int compteur = 0;
int i, j;
for (i = 0; i < nb_de_lignes; i++) {
for (j = 0; j < nb_de_colonnes; j++) {
if (grille[i][j] != compteur) {
return 0; /* Pas complet */
}
compteur++;
}
}
return 1; /* Complet */
}
int peut_decaler_en_haut(int grille[8][8], int nb_de_lignes, int nb_de_colonnes) {
int i;
for (i = 0; i != nb_de_lignes; i++) {
if (grille[nb_de_colonnes-1][i] == 0) {
return 0;
}
}
return 1;
}
int peut_decaler_en_bas(int grille[8][8], int nb_de_lignes, int nb_de_colonnes) {
int i;
for (i = 0; i != nb_de_lignes; i++) {
if (grille[0][i] == 0) {
return 0;
}
}
return 1;
}
int peut_decaler_a_gauche(int grille[8][8], int nb_de_lignes, int nb_de_colonnes) {
int i;
for (i = 0; i != nb_de_colonnes; i++) {
if (grille[i][nb_de_lignes-1] == 0) {
return 0;
}
}
return 1;
}
int peut_decaler_a_droite(int grille[8][8], int nb_de_lignes, int nb_de_colonnes) {
int i;
for (i = 0; i != nb_de_colonnes; i++) {
if (grille[i][0] == 0) {
return 0;
}
}
return 1;
}
void mettre_a_jour_grille(int tab_image[8][8], int nb_de_lignes, int nb_de_colonnes, int decalage, int indice_case_vide_x, int indice_case_vide_y, int direction_decalage, int largeur_image, int hauteur_image) {
int pos_img_x;
int pos_img_y;
int pos_x;
int pos_y;
switch (direction_decalage) {
case 1: /* haut */
pos_img_x = (tab_image[indice_case_vide_x][indice_case_vide_y] % nb_de_colonnes) * largeur_image / nb_de_colonnes;
pos_img_y = tab_image[indice_case_vide_x][indice_case_vide_y] / nb_de_colonnes * hauteur_image / nb_de_lignes;
pos_x = indice_case_vide_y * (largeur_image / nb_de_colonnes);
pos_y = indice_case_vide_x * (hauteur_image / nb_de_lignes);
ChoisirCouleurDessin(CouleurParNom("white"));
RemplirRectangle(
pos_x + decalage*(indice_case_vide_y+1), pos_y + decalage*(indice_case_vide_x+1), largeur_image / nb_de_colonnes, hauteur_image / nb_de_lignes
);
pos_img_x = (tab_image[indice_case_vide_x-1][indice_case_vide_y] % nb_de_colonnes) * largeur_image / nb_de_colonnes;
pos_img_y = tab_image[indice_case_vide_x-1][indice_case_vide_y] / nb_de_colonnes * hauteur_image / nb_de_lignes;
pos_x = (indice_case_vide_y) * (largeur_image / nb_de_colonnes);
pos_y = (indice_case_vide_x-1) * (hauteur_image / nb_de_lignes);
ChargerImage("./img/p4.img",
pos_x + decalage * indice_case_vide_y + 10, pos_y + decalage * (indice_case_vide_x-1) + 10,
pos_img_x, pos_img_y,
largeur_image / nb_de_colonnes,
hauteur_image / nb_de_lignes
);
break;
case 2: /* bas */
pos_img_x = (tab_image[indice_case_vide_x][indice_case_vide_y] % nb_de_colonnes) * largeur_image / nb_de_colonnes;
pos_img_y = tab_image[indice_case_vide_x][indice_case_vide_y] / nb_de_colonnes * hauteur_image / nb_de_lignes;
pos_x = indice_case_vide_y * (largeur_image / nb_de_colonnes);
pos_y = indice_case_vide_x * (hauteur_image / nb_de_lignes);
ChoisirCouleurDessin(CouleurParNom("white"));
RemplirRectangle(
pos_x + decalage*(indice_case_vide_y+1), pos_y + decalage*(indice_case_vide_x+1), largeur_image / nb_de_colonnes, hauteur_image / nb_de_lignes
);
pos_img_x = (tab_image[indice_case_vide_x+1][indice_case_vide_y] % nb_de_colonnes) * largeur_image / nb_de_colonnes;
pos_img_y = tab_image[indice_case_vide_x+1][indice_case_vide_y] / nb_de_colonnes * hauteur_image / nb_de_lignes;
pos_x = (indice_case_vide_y) * (largeur_image / nb_de_colonnes);
pos_y = (indice_case_vide_x+1) * (hauteur_image / nb_de_lignes);
ChargerImage("./img/p4.img",
pos_x + decalage * indice_case_vide_y + 10, pos_y + decalage * (indice_case_vide_x+1) + 10,
pos_img_x, pos_img_y,
largeur_image / nb_de_colonnes,
hauteur_image / nb_de_lignes
);
break;
case 3: /* gauche */
printf("Coord case vide : %d | %d", indice_case_vide_x, indice_case_vide_y);
pos_img_x = (tab_image[indice_case_vide_x][indice_case_vide_y] % nb_de_colonnes) * largeur_image / nb_de_colonnes;
pos_img_y = tab_image[indice_case_vide_x][indice_case_vide_y] / nb_de_colonnes * hauteur_image / nb_de_lignes;
pos_x = indice_case_vide_y * (largeur_image / nb_de_colonnes);
pos_y = indice_case_vide_x * (hauteur_image / nb_de_lignes);
ChoisirCouleurDessin(CouleurParNom("white"));
RemplirRectangle(
pos_x + decalage*(indice_case_vide_y+1), pos_y + decalage*(indice_case_vide_x+1), largeur_image / nb_de_colonnes, hauteur_image / nb_de_lignes
);
pos_img_x = (tab_image[indice_case_vide_x][indice_case_vide_y-1] % nb_de_colonnes) * largeur_image / nb_de_colonnes;
pos_img_y = tab_image[indice_case_vide_x][indice_case_vide_y-1] / nb_de_colonnes * hauteur_image / nb_de_lignes;
pos_x = (indice_case_vide_y-1) * (largeur_image / nb_de_colonnes);
pos_y = (indice_case_vide_x) * (hauteur_image / nb_de_lignes);
ChargerImage("./img/p4.img",
pos_x + decalage * (indice_case_vide_y-1) + 10, pos_y + decalage * (indice_case_vide_x) + 10,
pos_img_x, pos_img_y,
largeur_image / nb_de_colonnes,
hauteur_image / nb_de_lignes
);
break;
case 4: /* droite */
pos_img_x = (tab_image[indice_case_vide_x][indice_case_vide_y] % nb_de_colonnes) * largeur_image / nb_de_colonnes;
pos_img_y = tab_image[indice_case_vide_x][indice_case_vide_y] / nb_de_colonnes * hauteur_image / nb_de_lignes;
pos_x = indice_case_vide_y * (largeur_image / nb_de_colonnes);
pos_y = indice_case_vide_x * (hauteur_image / nb_de_lignes);
ChoisirCouleurDessin(CouleurParNom("white"));
RemplirRectangle(
pos_x + decalage*(indice_case_vide_y+1), pos_y + decalage*(indice_case_vide_x+1), largeur_image / nb_de_colonnes, hauteur_image / nb_de_lignes
);
pos_img_x = (tab_image[indice_case_vide_x][indice_case_vide_y+1] % nb_de_colonnes) * largeur_image / nb_de_colonnes;
pos_img_y = tab_image[indice_case_vide_x][indice_case_vide_y+1] / nb_de_colonnes * hauteur_image / nb_de_lignes;
pos_x = (indice_case_vide_y+1) * (largeur_image / nb_de_colonnes);
pos_y = (indice_case_vide_x) * (hauteur_image / nb_de_lignes);
ChargerImage("./img/p4.img",
pos_x + decalage * (indice_case_vide_y+1) + 10, pos_y + decalage * (indice_case_vide_x) + 10,
pos_img_x, pos_img_y,
largeur_image / nb_de_colonnes,
hauteur_image / nb_de_lignes
);
break;
}
}
int main(void) {
int nb_de_lignes = 5;
int nb_de_colonnes = 5;
int decalage = 10;
int largeur_image = 1710;
int hauteur_image = 900;
int tab_image[8][8];
int i;
int j;
int compteur = 0;
int indice_case_vide_x = 0;
int indice_case_vide_y = 0;
srand(time(NULL));
for (i = 0; i != nb_de_lignes; i++) {
for (j = 0; j != nb_de_colonnes; j++) {
tab_image[i][j] = compteur;
compteur++;
}
}
int rand_1_1 = (rand() % nb_de_lignes);
int rand_1_2 = (rand() % nb_de_colonnes);
int rand_2_1 = (rand() % nb_de_lignes);
int rand_2_2 = (rand() % nb_de_colonnes);
compteur = 0;
while (compteur < 100) {
while (rand_1_1 + rand_1_2 == 0) {
rand_1_1 = (rand() % nb_de_lignes);
rand_1_2 = (rand() % nb_de_colonnes);
}
while (rand_2_1 + rand_2_2 == 0) {
rand_2_1 = (rand() % nb_de_lignes);
rand_2_2 = (rand() % nb_de_colonnes);
}
int temp = tab_image[rand_1_1][rand_1_2];
tab_image[rand_1_1][rand_1_2] = tab_image[rand_2_1][rand_2_2];
tab_image[rand_2_1][rand_2_2] = temp;
rand_1_1 = (rand() % nb_de_lignes);
rand_1_2 = (rand() % nb_de_colonnes);
rand_2_1 = (rand() % nb_de_lignes);
rand_2_2 = (rand() % nb_de_colonnes);
compteur++;
}
affiche_grille(tab_image, nb_de_lignes, nb_de_colonnes);
InitialiserGraphique();
CreerFenetre(10, 10, largeur_image + decalage * (nb_de_lignes+1), hauteur_image + decalage * (nb_de_colonnes+1));
for (i = 0; i < nb_de_lignes; i++) {
for (j = 0; j < nb_de_colonnes; j++) {
if (j == 0 && i == 0){
j++;
}
int pos_img_x = (tab_image[i][j] % nb_de_colonnes) * (largeur_image / nb_de_colonnes);
int pos_img_y = (tab_image[i][j] / nb_de_colonnes) * (hauteur_image / nb_de_lignes);
int pos_x = j * (largeur_image / nb_de_colonnes);
int pos_y = i * (hauteur_image / nb_de_lignes);
ChargerImage("./img/p4.img",
pos_x + decalage * j + 10, pos_y + decalage * i + 10,
pos_img_x, pos_img_y,
largeur_image / nb_de_colonnes,
hauteur_image / nb_de_lignes
);
}
}
while (!verifie_si_taquin_complet(tab_image, nb_de_lignes, nb_de_colonnes)) {
if (ToucheEnAttente()) {
int touche = Touche();
if (touche == XK_Up && peut_decaler_en_haut(tab_image, nb_de_lignes, nb_de_colonnes)) {
int temp = tab_image[indice_case_vide_x+1][indice_case_vide_y];
tab_image[indice_case_vide_x+1][indice_case_vide_y] = 0;
tab_image[indice_case_vide_x][indice_case_vide_y] = temp;
indice_case_vide_x++;
mettre_a_jour_grille(tab_image, nb_de_lignes, nb_de_colonnes, decalage, indice_case_vide_x, indice_case_vide_y, 1, largeur_image, hauteur_image);
} else if (touche == XK_Down && peut_decaler_en_bas(tab_image, nb_de_lignes, nb_de_colonnes)) {
int temp = tab_image[indice_case_vide_x-1][indice_case_vide_y];
tab_image[indice_case_vide_x-1][indice_case_vide_y] = 0;
tab_image[indice_case_vide_x][indice_case_vide_y] = temp;
indice_case_vide_x--;
mettre_a_jour_grille(tab_image, nb_de_lignes, nb_de_colonnes, decalage, indice_case_vide_x, indice_case_vide_y, 2, largeur_image, hauteur_image);
} else if (touche == XK_Left && peut_decaler_a_gauche(tab_image, nb_de_lignes, nb_de_colonnes)) {
int temp = tab_image[indice_case_vide_x][indice_case_vide_y+1];
tab_image[indice_case_vide_x][indice_case_vide_y+1] = 0;
tab_image[indice_case_vide_x][indice_case_vide_y] = temp;
indice_case_vide_y++;
mettre_a_jour_grille(tab_image, nb_de_lignes, nb_de_colonnes, decalage, indice_case_vide_x, indice_case_vide_y, 3, largeur_image, hauteur_image);
} else if (touche == XK_Right && peut_decaler_a_droite(tab_image, nb_de_lignes, nb_de_colonnes)) {
int temp = tab_image[indice_case_vide_x][indice_case_vide_y-1];
tab_image[indice_case_vide_x][indice_case_vide_y-1] = 0;
tab_image[indice_case_vide_x][indice_case_vide_y] = temp;
indice_case_vide_y--;
mettre_a_jour_grille(tab_image, nb_de_lignes, nb_de_colonnes, decalage, indice_case_vide_x, indice_case_vide_y, 4, largeur_image, hauteur_image);
}
affiche_grille(tab_image, nb_de_lignes, nb_de_colonnes);
}
}
ChoisirCouleurDessin(CouleurParNom("white"));
RemplirRectangle(0, 0, hauteur_image, largeur_image);
ChargerImage("./img/p4.img",
20, 20,
0, 0,
largeur_image, hauteur_image
);
Touche();
FermerGraphique();
return EXIT_SUCCESS;
}

View File

@@ -0,0 +1,28 @@
#ifndef JEU_PRINCIPAL_H
#define JEU_PRINCIPAL_H
void affiche_grille(int grille[8][8], int nb_de_lignes, int nb_de_colonnes);
/* Affichage de la grille dans la console */
int verifie_si_taquin_complet(int grille[8][8], int nb_de_lignes, int nb_de_colonnes);
/* Vérifie la condition de victoire */
int peut_decaler_en_haut(int grille[8][8], int nb_de_lignes, int nb_de_colonnes);
/* Vérifie si on peut décaler l'image en dessous de la case vide vers le haut */
int peut_decaler_en_bas(int grille[8][8], int nb_de_lignes, int nb_de_colonnes);
/* Vérifie si on peut décaler l'image au dessus de la case vide vers le bas */
int peut_decaler_a_gauche(int grille[8][8], int nb_de_lignes, int nb_de_colonnes);
/* Vérifie si on peut décaler l'image à droite de la case vide vers la gauche */
int peut_decaler_a_droite(int grille[8][8], int nb_de_lignes, int nb_de_colonnes);
/* Vérifie si on peut décaler l'image à gauche de la case vide vers la droite */
void mettre_a_jour_grille(int tab_image[8][8], int nb_de_lignes, int nb_de_colonnes, int decalage, int indice_case_vide_x, int indice_case_vide_y, int direction_decalage, int largeur_image, int hauteur_image);
/* Met à jour l'affichage des 2 cases concernées dans le cas d'un déplacement */
int main(void);
/* LANCEMENT DU JEU */
#endif