Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    153

    gioco del 15 con matrici in [c]

    ciao a tutti,
    dovevo fare il gioco del 15 in c.
    il mio problema e che non si devono ripetere numeri uguali.
    secondo e che lo zero( che in verità dovrebe essere una casella vuota ma non sò come si fa si dovrebbe spostare tutte le volte che voglio in qualunque posizione senza cancella il numero che sostituisce).

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define N 4
    
    void Su();
    void Giu();
    void Dx();
    void Sx();
    
    char mat[N][N];
    int ia1,ja1;
    
    int main()
    {   int massimo,minimo;
        char risp;
        int i,j;
        srand(time(NULL));
        massimo=15; 
        minimo=1;
        for(i=0;i<N;i++) 
        
            for(j=0;j<N;j++) 
            
                mat[i][j]=(rand()%(massimo-minimo)+1); 
        mat[3][3]=0;                                       // e' come se fosse vuota
        ia1=3;
        ja1=3;
       do
       {
        for(i=0;i<N;i++)
        {
            for(j=0;j<N;j++)
                printf("%d\t",mat[i][j]);
            printf("\n"); 
            }   
    
        do
        {
            printf("\n\nDove sposti l'uno? \n( n=su , s=giu , e=dx , o=sx )\nq per uscire\n");
            scanf("%c",&risp);
        }
        while(risp!='q' && risp!='Q' && risp!='n' && risp!='N' && risp!='s' && risp!='S' && risp!='e' && risp!='E' && risp!='o' && risp!='O');
        switch(risp)
        {
            case 'n': Su();  break;           
            case 'N': Su();  break;           
            case 's': Giu(); break;           
            case 'S': Giu(); break;           
            case 'e': Dx();  break;           
            case 'E': Dx();  break;           
            case 'o': Sx();  break;           
            case 'O': Sx();  break;                    
        }
       }
       while(risp!='q' && risp!='Q');
    } 
    
    
    void Su()
    {
         if (ia1>0)
         {
             mat[ia1][ja1]=mat[2][3];                  // ho provato solo con questa funzione lo 0 si dovrebbe spostare senza cancellare il contenuto di dove viene spostato.
             ia1--;
             mat[ia1][ja1]=0;
         }
    }
    	void Giu()
    {
         if (ia1<N-1){
             mat[ia1][ja1]=0;
             ia1++;
             mat[ia1][ja1]=1;
             }
    }
    void Dx()
    {
         if (ja1<N-1){
             mat[ia1][ja1]=0;
             ja1++;
             mat[ia1][ja1]=1;
             }
    }
    void Sx()
    {
         if (ja1>0){
             mat[ia1][ja1]=0;
             ja1--;
             mat[ia1][ja1]=1;
             }
    }
    Avevo pensato a un ciclo for per la funzione Su che agisse sulle I, oltre questo non mi viene in mente niente..
    Sapreste aiutarmi??!!!
    Grazie in anticipo spero di essere stato chiaro..

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    153
    nessuno è in grado di darmi una mano??!!
    sono stato poco chiaro forse??

  3. #3
    Codice PHP:
    void Su()
    {
         if (
    ia1>0)
         {
             
    mat[ia1][ja1]=mat[ia1-1][ja1];
             
    ia1--;
             
    mat[ia1][ja1]=0;
         }

    ciao
    sergio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.