Commit 597e67d3 authored by Valentin MEUNIER's avatar Valentin MEUNIER
Browse files

l ensemble des fonctions

parent 4daf5a04
#include <stdio.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>
#include "kruskal.h"
/*
*chargement des textures
*/
SDL_Texture* load_texture_from_image(char * file_image_name, SDL_Renderer *renderer)
{
SDL_Surface* my_image = NULL;
SDL_Texture* my_texture = NULL;
my_image = IMG_Load(file_image_name);
if (my_image == NULL) exit(EXIT_FAILURE);
my_texture = SDL_CreateTextureFromSurface(renderer, my_image); // Chargement de l'image de la surface vers la texture
SDL_FreeSurface(my_image); // la SDL_Surface ne sert que comme élément transitoire
if (my_texture == NULL) exit(EXIT_FAILURE);
return my_texture;
}
/*
*affiche les textures du labyrinthes en fonction de la position des murs autour de la case
*/
void affichage_texture(SDL_Texture *my_texture,SDL_Window *window,SDL_Renderer *renderer,int x,int coord_colonne,int coord_ligne,int taille_cell) {
SDL_Rect source = {0}, // Rectangle définissant la zone de la texture à récupérer
window_dimensions = {0}, // Rectangle définissant la fenêtre, on n'utilisera que largeur et hauteur
destination = {0}, // Rectangle définissant où la zone_source doit être déposée dans le renderer
state = {0};
SDL_GetWindowSize(window, // Récupération des dimensions de la fenêtre
&window_dimensions.w,
&window_dimensions.h);
SDL_QueryTexture(my_texture, NULL, NULL, // Récupération des dimensions de l'image
&source.w, &source.h);
float zoom = (float)taille_cell/(float)109; // valeur du zoom pour l'affichage final
int offset_x = source.w / 14, // La largeur d'une vignette de l'image 14
offset_y = source.h / 9.4; // La hauteur d'une vignette de l'image 9.4
state.w = offset_x;
state.h = offset_y;
switch (x){
case 6 :
state.x = 140;
state.y = 15;
break;
case 10 :
state.x = 265;
state.y = 15;
break;
case 5 :
state.x = 139;
state.y = 140;
break;
case 9 :
state.x = 265;
state.y = 140;
break;
case 3 :
state.x = 10;
state.y = 0;
break;
case 12 :
state.x = 10;
state.y = 143;
break;
case 15 :
state.x = 1162;
state.y = 13;
break;
case 7 :
state.x = 522;
state.y = 271;
break;
case 11 :
state.x = 649;
state.y = 271;
break;
case 13 :
state.x = 522;
state.y = 398;
break;
case 14 :
state.x = 650;
state.y = 399;
break;
case 2 :
state.x = 1034;
state.y = 266;
break;
case 1 :
state.x = 1161;
state.y = 265;
break;
case 8 :
state.x = 1161;
state.y = 398;
break;
case 4 :
state.x = 1036;
state.y = 398;
break;
case 0 :
state.x = 0;
state.y = 265;
break;
}
/* construction des différents rectangles autour de chacune des vignettes de la planche */
destination.w = offset_x * zoom+1; // Largeur du sprite à l'écran
destination.h = offset_y * zoom+1; // Hauteur du sprite à l'écran
destination.x = 1+coord_colonne*(source.h / 9.4)*zoom; // Position en x pour l'affichage du sprite
destination.y = 1+coord_ligne*(source.h / 9.4)*zoom; // Position en y pour l'affichage du sprite
SDL_RenderCopy(renderer,my_texture,&state, &destination); // Préparation de l'affichage
}
void affichage_fin(SDL_Texture *my_texture,SDL_Window *window,SDL_Renderer *renderer,int coord_colonne,int coord_ligne,int taille_cell) {
SDL_Rect source = {0}, // Rectangle définissant la zone de la texture à récupérer
window_dimensions = {0}, // Rectangle définissant la fenêtre, on n'utilisera que largeur et hauteur
destination = {0}, // Rectangle définissant où la zone_source doit être déposée dans le renderer
state = {0};
SDL_GetWindowSize(window, // Récupération des dimensions de la fenêtre
&window_dimensions.w,&window_dimensions.h);
SDL_QueryTexture(my_texture, NULL, NULL, // Récupération des dimensions de l'image
&source.w, &source.h);
float zoom = (float)taille_cell/(float)16.1; // valeur du zoom pour l'affichage final
int offset_x = source.w / 56, // La largeur d'une vignette de l'image 56
offset_y = (float)source.h / (float)12; // La hauteur d'une vignette de l'image 11
state.x = 0;
state.y = source.h-3*offset_y-3;
state.w = offset_x;
state.h = offset_y;
destination.w = offset_x * zoom+1; // Largeur du sprite à l'écran
destination.h = offset_y * zoom+1; // Hauteur du sprite à l'écran
destination.y = 1+coord_colonne*(source.w / 56)*zoom; // Position en x pour l'affichage du sprite
destination.x = coord_ligne*(source.w / 56)*zoom+6; // Position en y pour l'affichage du sprite
SDL_RenderCopy(renderer,my_texture,&state, &destination); // Préparation de l'affichage
}
void afficherImage(SDL_Renderer *renderer,SDL_Window *window,int **tab,int taille_cell,SDL_Texture* texture){
int i1,j1,x,noeud=0;
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 0);
SDL_RenderClear(renderer);
for (int i=0;i<N;i++){
for (int j=0;j<P;j++){
x=tab[j][i];
i1=(noeud%P); //coordonee colonne du noeud
j1=((int)noeud/P); // coordonee ligne du noeud
affichage_texture(texture,window,renderer,x,i1,j1,taille_cell);
noeud+=1;
}
}
}
#ifndef _gard_affichage_image
#define _gard_affichage_image
SDL_Texture* load_texture_from_image(char * file_image_name, SDL_Renderer *renderer);
void affichage_texture(SDL_Texture *my_texture,SDL_Window *window,SDL_Renderer *renderer,int x,int coord_colonne,int coord_ligne,int taille_cell);
void afficherImage(SDL_Renderer *renderer,SDL_Window *window,int **tab,int taille_cell,SDL_Texture* texture);
void affichage_fin(SDL_Texture *my_texture,SDL_Window *window,SDL_Renderer *renderer,int coord_colonne,int coord_ligne,int taille_cell);
#endif
graph Nom{
0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99;100;101;102;103;104;105;106;107;108;109;110;111;112;113;114;115;116;117;118;119;120;121;122;123;124;125;126;127;128;129;130;131;132;133;134;135;136;137;138;139;140;141;142;143;144;145;146;147;148;149;150;151;152;153;154;155;156;157;158;159;160;161;162;163;164;165;166;167;168;169;170;171;172;173;174;175;176;177;178;179;180;181;182;183;184;185;186;187;188;189;190;191;192;193;194;9--24 [label=1];39--54 [label=1];171--172 [label=1];137--138 [label=1];117--118 [label=1];36--37 [label=1];167--168 [label=1];94--109 [label=1];174--175 [label=1];105--120 [label=1];193--194 [label=1];40--55 [label=1];24--25 [label=1];123--124 [label=1];103--104 [label=1];160--161 [label=1];53--54 [label=1];62--63 [label=1];82--83 [label=1];52--67 [label=1];120--135 [label=1];101--102 [label=1];72--87 [label=1];121--122 [label=1];170--185 [label=1];59--74 [label=1];34--49 [label=1];41--56 [label=1];95--96 [label=1];132--147 [label=1];38--53 [label=1];133--148 [label=1];8--9 [label=1];118--133 [label=1];118--119 [label=1];152--153 [label=1];3--18 [label=1];134--149 [label=1];175--190 [label=1];17--32 [label=1];84--99 [label=1];142--157 [label=1];154--155 [label=1];58--73 [label=1];173--188 [label=1];132--133 [label=1];50--65 [label=1];153--154 [label=1];135--150 [label=1];89--104 [label=1];6--7 [label=1];63--78 [label=1];79--94 [label=1];35--36 [label=1];174--189 [label=1];18--19 [label=1];85--100 [label=1];151--152 [label=1];106--107 [label=1];184--185 [label=1];52--53 [label=1];35--50 [label=1];31--32 [label=1];91--106 [label=1];98--99 [label=1];182--183 [label=1];31--46 [label=1];40--41 [label=1];116--131 [label=1];170--171 [label=1];131--132 [label=1];191--192 [label=1];82--97 [label=1];139--140 [label=1];143--144 [label=1];65--80 [label=1];171--186 [label=1];172--187 [label=1];90--91 [label=1];79--80 [label=1];83--98 [label=1];10--25 [label=1];70--85 [label=1];113--128 [label=1];96--111 [label=1];46--61 [label=1];106--121 [label=1];26--27 [label=1];27--42 [label=1];173--174 [label=1];126--127 [label=1];187--188 [label=1];146--147 [label=1];27--28 [label=1];161--162 [label=1];161--176 [label=1];12--13 [label=1];125--126 [label=1];73--74 [label=1];168--169 [label=1];160--175 [label=1];41--42 [label=1];178--179 [label=1];112--113 [label=1];80--81 [label=1];129--130 [label=1];110--125 [label=1];104--119 [label=1];51--52 [label=1];130--145 [label=1];108--109 [label=1];23--38 [label=1];163--164 [label=1];66--67 [label=1];114--115 [label=1];127--142 [label=1];74--89 [label=1];55--70 [label=1];47--48 [label=1];87--102 [label=1];11--26 [label=1];54--55 [label=1];183--184 [label=1];25--26 [label=1];57--72 [label=1];105--106 [label=1];166--167 [label=1];42--43 [label=1];11--12 [label=1];168--183 [label=1];86--87 [label=1];125--140 [label=1];114--129 [label=1];2--17 [label=1];148--149 [label=1];71--86 [label=1];19--34 [label=1];33--48 [label=1];115--116 [label=1];124--139 [label=1];126--141 [label=1];162--177 [label=1];144--145 [label=1];43--44 [label=1];157--158 [label=1];57--58 [label=1];67--68 [label=1];111--112 [label=1];15--30 [label=1];113--114 [label=1];32--33 [label=1];29--44 [label=1];19--20 [label=1];142--143 [label=1];91--92 [label=1];33--34 [label=1];70--71 [label=1];81--82 [label=1];50--51 [label=1];64--79 [label=1];136--137 [label=1];1--2 [label=1];155--170 [label=1];165--180 [label=1];1--16 [label=1];49--64 [label=1];163--178 [label=1];76--91 [label=1];5--6 [label=1];176--191 [label=1];48--63 [label=1];158--159 [label=1];179--194 [label=1];0--15 [label=1];60--61 [label=1];93--108 [label=1];166--181 [label=1];156--157 [label=1];159--160 [label=1];123--138 [label=1];5--20 [label=1];150--151 [label=1];75--90 [label=1];6--21 [label=1];22--23 [label=1];45--46 [label=1];30--31 [label=1];4--19 [label=1];192--193 [label=1];88--103 [label=1];76--77 [label=1];180--181 [label=1];54--69 [label=1];13--14 [label=1];}
\ No newline at end of file
......@@ -4,8 +4,8 @@
#include "tas.h"
#include "graph_aretes_tab.h"
#define N 53
#define P 55
#define N 13
#define P 15
graph_t * kruskal(graph_t * graph,int noeuds, int nb_aretes,int * cours,double p);
......
......@@ -2,8 +2,8 @@ CC= gcc
OPT = -c -Wextra -Wall -g
SDL2 = -lSDL2 -lSDL2_gfx -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lSDL2_net -lm
prog : kruskal.o graph_aretes_tab.o partition.o tas.o main.o
$(CC) kruskal.o graph_aretes_tab.o partition.o tas.o main.o $(SDL2) -o prog
prog : kruskal.o graph_aretes_tab.o partition.o tas.o main.o dijsktra.o DFS.o affichage_image.o
$(CC) kruskal.o graph_aretes_tab.o partition.o tas.o main.o dijsktra.o DFS.o affichage_image.o $(SDL2) -o prog
main.o : main.c main.h
$(CC) $(OPT) main.c
......@@ -20,5 +20,14 @@ partition.o : partition.c partition.h
tas.o : tas.c tas.h
$(CC) $(OPT) tas.c
dijsktra.o : dijsktra.c dijsktra.h
$(CC) $(OPT) dijsktra.c
DFS.o : DFS.c DFS.h
$(CC) $(OPT) DFS.c
affichage_image.o : affichage_image.c affichage_image.h
$(CC) $(OPT) affichage_image.c
clear :
rm *.o
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment