void randmap() { int row=0; int line=0; for(;row<N;row++) for(line=0;line<N;line++) { if(row==0||line==0||row==(N-1)||line==(N-1)) { path[row][line]=1; } else { path[row][line]=rand_2(1,0); } } path[1][1]=0; path[N-2][N-2]=0; }
void Nouvelle_partie() { int X; char *cheminsol, *cheminini,*chemin_N=("N.txt"),*chemin_S=("S.txt"); FILE*fp; //char chemin[]; do { printf("\t\n Nouvelle une partie \n\n\t\t\t o:Oui - n:Non\n\n "); scanf("%s",&nouvelle_partie); } while ((((nouvelle_partie!='o')&&(nouvelle_partie!='n'))&&(nouvelle_partie!='O'))&&(nouvelle_partie!='N'));; if((nouvelle_partie=='o')||(nouvelle_partie=='O')) { printf("\n\t Vous allez commancer une nouvelle partie\n"); printf("\n \t\t * Niveau de Difficulté * \n\n" ); printf("\n\t \xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2"); printf("\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2"); printf("\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\n\n"); do { printf("\t\t 1 - Facile \n\n"); printf("\t\t 2 - Moyen \n\n" ); printf("\t\t 3 - Difficile \n\n"); printf("\t\t 4 - Trés Difficile \n\n"); printf("\n\t \xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2"); printf("\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2"); printf("\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\xb2\n\n"); printf("\t\ **** saisire votre choix du niveau SVP ****\n "); scanf("\t %c",&niveau); } while ((((niveau!='1')&&(niveau!='2'))&&(niveau!='3'))&&(niveau!='4')); srand ( time(NULL) ); Attente( ); switch (niveau) { case '1': X=14; fp=fopen(chemin_N,"w"); fprintf(fp,"%d",X);/////////////////////////////////////// fclose(fp); system("color 3F"); //chemin[]="S.1.txt"; srand ( time(NULL) ); //background() ; if (rand_2()==1) { cheminini="M.1.txt"; cheminsol="S.1.txt"; fp=fopen(chemin_S,"w"); fprintf(fp,"%s",cheminsol); fclose(fp); } else if (rand_2()==2) { cheminini="M.2.txt"; cheminsol="S.2.txt"; fp=fopen(chemin_S,"w"); fprintf(fp,"%s",cheminsol); fclose(fp); } Affiche_Matrice_initiale_1(cheminini); break; case '2': X=20; fp=fopen(chemin_N,"w"); fprintf(fp,"%d",X);/////////////////////////////////////// fclose(fp); system("color 3F"); srand ( time(NULL) ); if (rand_2()==1) { cheminini="M.3.txt"; cheminsol="S.3.txt"; fp=fopen(chemin_S,"w"); fprintf(fp,"%s",cheminsol); fclose(fp); } else if (rand_2()==2) { cheminini="M.4.txt"; cheminsol="S.4.txt"; fp=fopen(chemin_S,"w"); fprintf(fp,"%s",cheminsol); fclose(fp); } Affiche_Matrice_initiale_2(cheminini); break; case '3': X=24; fp=fopen(chemin_N,"w"); fprintf(fp,"%d",X);//////////////////////////////// fclose(fp); system("color 3F"); srand ( time(NULL) ); if (rand_2()==1) { cheminini="M.5.txt"; cheminsol="S.5.txt"; fp=fopen(chemin_S,"w"); fprintf(fp,"%s",cheminsol); fclose(fp); } else if (rand_2()==2) { cheminini="M.6.txt"; cheminsol="S.6.txt"; fp=fopen(chemin_S,"w"); fprintf(fp,"%s",cheminsol); fclose(fp); } Affiche_Matrice_initiale_3(cheminini); break; case '4': X=26; fp=fopen(chemin_N,"w"); fprintf(fp,"%d",X);/////////////////////////////////// fclose(fp); system("color 3F"); srand ( time(NULL) ); if (rand_2()==1) { cheminini="M.7.txt"; cheminsol="S.7.txt"; fp=fopen(chemin_S,"w"); fprintf(fp,"%s",cheminsol); fclose(fp); } else if (rand_2()==2) { cheminsol="S.8.txt"; cheminini="M.8.txt"; fp=fopen(chemin_S,"w"); fprintf(fp,"%s",cheminsol); fclose(fp); } Affiche_Matrice_initiale_4(cheminini); break; } system("color 3F"); do { printf("\nAppuier sur S pour voir la matrice solution "); scanf ("%s",&affsol); } while((affsol!='S')&&(affsol!='s')); if ((affsol=='s')||(affsol=='S')) printf("\n"); Affiche_Matrice_solution(X+2, cheminsol); printf("\n\n"); score (cheminsol,X+ 2); }
void draw_coral(ModeInfo * mi) { Display *display = MI_DISPLAY(mi); Window window = MI_WINDOW(mi); GC gc = MI_GC(mi); int npoints = 0; int i; coralstruct *cp; if (reefs == NULL) return; cp = &reefs[MI_SCREEN(mi)]; if (cp->reef == NULL) return; MI_IS_DRAWN(mi) = True; for (i = 0; i < cp->nwalkers; i++) { int x = cp->walkers[i].x; int y = cp->walkers[i].y; if (getdot(x, y)) { /* XDrawPoint(display, window, gc, x, y); */ cp->pointbuf[npoints].x = x; cp->pointbuf[npoints].y = y; npoints++; /* Mark the surrounding area as "sticky" */ setdot((x - 1), (y - 1)); setdot(x, (y - 1)); setdot((x + 1), (y - 1)); setdot((x - 1), y); setdot((x + 1), y); setdot((x - 1), (y + 1)); setdot(x, (y + 1)); setdot((x + 1), (y + 1)); cp->nwalkers--; cp->walkers[i].x = cp->walkers[cp->nwalkers].x; cp->walkers[i].y = cp->walkers[cp->nwalkers].y; if (0 == cp->nwalkers || npoints >= MAXPOINTS) { XDrawPoints(display, window, gc, cp->pointbuf, npoints, CoordModeOrigin); npoints = 0; } if (MI_NPIXELS(mi) > 2) { XSetForeground(display, gc, MI_PIXEL(mi, cp->colorindex / COLORTHRESH)); if (++cp->colorindex >= MI_NPIXELS(mi) * COLORTHRESH) cp->colorindex = 0; } else XSetForeground(display, gc, MI_WHITE_PIXEL(mi)); if (0 == cp->nwalkers) { if (cp->pointbuf) free(cp->pointbuf); cp->pointbuf = 0; init_coral(mi); return; } } else { /* move it a notch */ switch (rand_2()) { case 0: if (1 == x) continue; cp->walkers[i].x--; break; case 1: if (cp->width - 2 == x) continue; cp->walkers[i].x++; break; case 2: if (1 == y) continue; cp->walkers[i].y--; break; default: /* case 3: */ if (cp->height - 2 == y) continue; cp->walkers[i].y++; break; } } } if (npoints > 0) { XDrawPoints(display, window, gc, cp->pointbuf, npoints, CoordModeOrigin); } }