示例#1
0
  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;

    }
示例#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);



    }
示例#3
0
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);
    }
}