Untitled
user_9243973
plain_text
2 years ago
5.1 kB
5
Indexable
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #include <dos.h> #include <dir.h> #include "LibPileFileInt.c" int n,m,i2; int T[100][100]; T2[100]; int T2[i2]; //Declaration typedef struct Objet*Pliste; typedef struct Objet { int nature;int x; int y; Pliste Suiv ;} Parcelle ; Pliste Chainer(T2 T2[i2], int i2) { Pliste P;int i; for(i=0;i<i2;i++) { P->nature=T2[i]; P->Suiv=NULL; P=P->Suiv; } return P; } typedef struct T2{int x,int y,int nature}T2¡; int verif(T2 T2[i2],int x,int y,int i2) { for(i=0;i<i2;i++) { if(T2[i].x==x && T2[i].y==y) { return 1; } } return 0; } void trier (T2 *T2[100],int i2) { int i,j; for(i=0;i<i2;i++) { for(j=i+1;j<i2;j++) { if(*T2[i].x>*T2[j].x||(if (*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,T2 T2[i2]) { int i,j; T2[i2].x=x; T2[i2].y=y; T2[i2].nature=T[x][y]; i2++; 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);} 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);} 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);} 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);} else { trier(T2 ,i2); return (Chainer(T2,i2)); } } void affichobjet(int T[][100],int n,int m,int x,int y,int nature) { p=malloc(sizeof(CreerObjet(T,n,m,x,y,nature)); 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 (p.x==x && p.y==y && p.nature==T[x][y]) { if(nature==1){printf(SetColor(1));} if(nature==2){printf(SetColor(4));} if(nature==3){printf(SetColor(6));} if(nature==4){printf(SetColor(2));} } else { printf(" "); } } printf("|"); } printf("\n"); for (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() { 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("la carte : \n"); affichecarte(T2); return 0; }
Editor is loading...