Untitled
unknown
plain_text
2 years ago
6.1 kB
27
Indexable
#include <stdlib.h> #include <time.h> #include <windows.h> #include <dos.h> #include <dir.h> #include "LibPileFileInt.c" int x,y,nature,n,m,i2; int T[100][100]; //Declaration typedef struct Objet*Pliste; typedef struct Objet { int nature;int x; int y; Pliste Suiv ;} Parcelle ; Pliste P ; typedef struct Tab{int X; int Y ;int nature;}Tab; Tab T2; Pliste Chainer(Tab T2[], int i2) { Pliste P,T; int i =0; T=(Pliste)malloc(sizeof(Parcelle)); T->nature=T2[i].nature; T->x=T2[i].X; T->y=T2[i].Y; printf("chainage"); P=T; for(i=1;i<i2;i++) { P=(Pliste)malloc(sizeof(Parcelle)); printf("chainage"); P->nature=T2[i].nature; P->x=T2[i].X; printf("chainage"); P->y=T2[i].Y; P->Suiv=NULL; P=P->Suiv; printf("chainage"); } return T ; } int verif(Tab T2[],int x,int y,int i2) { for(int i=0;i<i2;i++) { if(T2[i].X ==x && T2[i].Y==y) { return 1; } } return 0; } void trier (Tab T2[100],int i2) { int i,j; for(i=0;i<i2;i++) { for(j=i+1;j<i2-1;j++) { if((T2[i].X>T2[j].X)||(T2[i].X==T2[j].X && T2[i].Y>T2[j].Y)) { int a,b; a=T2[i].X; b=T2[i].Y; T2[i].X=T2[j].X; T2[i].Y=T2[j].Y; T2[j].X=a; T2[j].Y=b; } } } } Pliste CreerObjet (int T[][100],int n,int m,int x,int y,int nature,int*i2,Tab T2[100]) { int i,j; printf("chainage1"); T2[*i2].X=x; T2[*i2].Y=y; T2[*i2].nature=T[x][y]; i2++; printf("chainage2"); if(y<m && T[x][y+1]==nature && verif(T2,x,y+1,*i2)==0){CreerObjet(T,n,m,x,y+1,nature,i2,T2);printf("chainage3");} if(x>1 && T[x-1][y]==nature && verif(T2,x -1,y,*i2)==0){CreerObjet(T,n,m,x-1,y,nature,i2,T2);printf("chainage4");} if(x<n && T[x+1][y]==nature && verif(T2,x+1,y,*i2)==0){CreerObjet(T,n,m,x+1,y,nature,i2,T2);printf("chainage5");} if(y>1 && T[x][y-1]==nature && verif(T2,x,y-1,*i2)==0){CreerObjet(T,n,m,x,y-1,nature,i2,T2);printf("chainage6");} else { printf("chainage3"); trier(T2 ,*i2); return (Chainer(T2,*i2)); } } void affichobjet( Pliste P , int T[][100],int n,int m,int x,int y,int nature) { for (int i=0;i<n+2;i++) //pour delimiter la carte : la premiere ligne de_ { printf("_"); } for(int i=0;i<n;i++) { printf("\n"); printf("|"); for (int j=0;j<m;j++) { if (P->x==x && P->y==y && P->nature==T[x][y]) { if(nature==1){printf("color1");} // printf(SetColor(1);} if(nature==2){printf("color2");} // printf(SetColor(4));} if(nature==3){printf("color3");} //printf(SetColor(6));} if(nature==4){printf("color4");} //printf(SetColor(2));} } else { printf(" "); } } printf("|"); } printf("\n"); for (int i=0;i<n+2;i++) // la derniere ligne de _ { printf("_"); } } //Creation void creercarte(int T[][100],int n,int m) { int i,j,r; srand(time(NULL)); for(i=0;i<n;i=i+2) //on avance de deux pas pour travailler que par paire { for (j=0;j<m;j=j+2) { r=(rand()%4)+1; // rand%4 veut dire qu'on remplie avec des 0 1 2 3 on rajoute T[i][j]=r; //+1 pour remplir avec 1 2 3 4 seulement T[i][j+1]=r; T[i+1][j]=r; //on remplie aleatoirement 4 pixels voisins en meme temps et vu que cest T[i+1][j+1]=r; //aleatoire on a au minimum des objets de 4 sinon plus que 4 } } } //Affichage void affichecarte(int T[][100]) { int i,j; for (i=0;i<n+2;i++) //pour delimiter la carte : la premiere ligne de_ { printf("_"); } for(i=0;i<n;i++) { printf("\n"); printf("|"); for (j=0;j<m;j++) { //if(T[i][j]==1){SetColor(1);} //if(T[i][j]==2){SetColor(4);} //pour que chaque nature ait sa propre couleur //if(T[i][j]==3){SetColor(6);} //on appelle la fonction des couleurs //if(T[i][j]==4){SetColor(2);} printf("%d",T[i][j]); } // SetColor(15); //(le 15 la couleur du blanc) pour quil n'y ait que les chiffres en couleurs et non les | printf("|"); } printf("\n"); for (i=0;i<n+2;i++) // la derniere ligne de _ { printf("_"); } } //la fonction pour les couleurs void SetColor(int ForgC) { WORD wColor; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO csbi; //We use csbi for the wAttributes word. if(GetConsoleScreenBufferInfo(hStdOut, &csbi)) { //Mask out all but the background attribute, and add in the forgournd color wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F); SetConsoleTextAttribute(hStdOut, wColor); } return; } int main() { Pliste p;int i; printf("veuillez entrer les dimensions de votre carte \n"); printf("la longueur:"); scanf("%d",&n); printf("la largeur:"); scanf("%d",&m); printf("la carte : \n"); creercarte(T,n,m); affichecarte(T); printf("\n veuillez entrer la nature de la zone dont vous voulez voir lobjet "); scanf("%d",&nature); printf("les coordonnées : \n x:"); scanf("%d",&x); printf("\n y:"); scanf("%d",&y); int i2=1; p=CreerObjet(T,n,m,x,y,nature,&i2,&T2); for(i=0;i<3;i++) { printf("%d",p->nature); p=p->Suiv; } // affichobjet(P,T,n,m,x,y,nature); return 0; }
Editor is loading...