Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    sostituzione variabile int con una struct

    qst è il mio faticoso lavoro fatto fin ora. ora il problema è qst: quando ho sostituito x e y con pezzo.x e pezzo.y le function nn si sono attivate. xke?
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    #define larghezza_colonne 10
    #define altezza_righe 20
    #define dimpezzo 3
    int pezzo2 [3][3] ={    {0, 1, 0},
                            {0, 1, 0},
                            {1, 1, 1} };
    struct blocco{
        int x,y;
        int array[dimpezzo][dimpezzo];
    }pezzo;
    int mappa[altezza_righe][larghezza_colonne]={0};
    int indice_mappai,indice_mappaj,indice_pezzoi=0,indice_pezzoj=0,posizione,righe,colonne,tasto;
    void nuovo_pezzo();
    int gameover();
    void controllariga();
    void cancellariga();
    int piazza_pezzo ();
    void ruota_pezzo();
    //int aggiorna();
    int movimentopossibile();
    void agg();
    void main()
    {
    pezzo.x=5;
    pezzo.y=0;
    for (indice_pezzoi=0;indice_pezzoi<dimpezzo;indice_pezzoi++){//pezzo
        for (indice_pezzoj=0;indice_pezzoj<dimpezzo;indice_pezzoj++)
        pezzo.array[indice_pezzoi][indice_pezzoj]= pezzo2[indice_pezzoi][indice_pezzoj];
        }//fine pezzo
    
        printf("\n--------------------\n");
    
    for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
            printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                     ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                     ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                     ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
    }//fine mappa
    
    for (indice_pezzoi=0;indice_pezzoi<dimpezzo;indice_pezzoi++){//pezzo
         printf("\n%d %d %d",pezzo.array[indice_pezzoi][0],pezzo.array[indice_pezzoi][1],pezzo.array[indice_pezzoi][2]);
    }//fine pezzo
                    printf("\n");
    
    while(1){
    
    switch (getchar()){
        case('s'):
        agg(pezzo.x,pezzo.y);
            pezzo.y++;
            if(!movimentopossibile(pezzo.x,pezzo.y)){
            pezzo.y--;}
             for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
            printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                     ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                     ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                     ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
            }//fine mappa
    
            for (indice_pezzoi=0;indice_pezzoi<dimpezzo;indice_pezzoi++){//pezzo
            printf("\n%d %d %d ",pezzo.array[indice_pezzoi][0],pezzo.array[indice_pezzoi][1],pezzo.array[indice_pezzoi][2]);}
            printf("\n");
        break;
        case('d'):
                agg(pezzo.x,pezzo.y);
                pezzo.x++;// x è il movimento in orizzontale
                if(!movimentopossibile(pezzo.x,pezzo.y))//se nn è possibile torna indietro
                pezzo.x--;
                for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
                    printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                             ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                             ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                             ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
                }//fine mappa
                break;
        case('a'):
            agg(pezzo.x,pezzo.y);
            pezzo.x--;
            if(!movimentopossibile(pezzo.x,pezzo.y))
            pezzo.x++;
            for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
                printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                         ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                         ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                         ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
                }
            break;
        case ('w'):
        agg(pezzo.x,pezzo.y);
    
            ruota_pezzo(pezzo.array[indice_pezzoi][indice_pezzoj]);
            for(indice_mappai=0;indice_mappai<altezza_righe;indice_mappai++){   //mappa
            printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                     ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                     ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                     ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);
                                                     }//fine mappa
            for (indice_pezzoi=0;indice_pezzoi<dimpezzo;indice_pezzoi++){//pezzo
            printf("\n%d %d %d ",pezzo.array[indice_pezzoi][0],pezzo.array[indice_pezzoi][1],pezzo.array[indice_pezzoi][2]); }
            printf("\n");
            break;
            default: printf("\n x=%d y=%d\n",pezzo.x,pezzo.y);break;
    }
    
    }
    
    }
    
    int gameover(){
    for (indice_mappai=0;indice_mappai<larghezza_colonne;indice_mappai++)
    if (mappa[indice_mappai][0])
        return 1;
        return 0;
        }
    
    void nuovo_pezzo(){
    for (indice_pezzoi=0; indice_pezzoi<dimpezzo;indice_pezzoi++){
        for (indice_pezzoj=0; indice_pezzoj<dimpezzo;indice_pezzoj++)
        pezzo.array[indice_pezzoi][indice_pezzoj] = pezzo2[indice_pezzoi][indice_pezzoj];
        }
    }
    void ruota_pezzo(){
    int i,j;
    int pezzo1[dimpezzo][dimpezzo];
    pezzo1[0][0]=pezzo.array[2][0];
    pezzo1[0][1]=pezzo.array[1][0];
    pezzo1[0][2]=pezzo.array[0][0];
    pezzo1[1][0]=pezzo.array[2][1];
    pezzo1[1][1]=pezzo.array[1][1];
    pezzo1[1][2]=pezzo.array[0][1];
    pezzo1[2][0]=pezzo.array[2][2];
    pezzo1[2][1]=pezzo.array[1][2];
    pezzo1[2][2]=pezzo.array[0][2];
        for (i=0;i<dimpezzo;i++){
            for (j=0;j<dimpezzo;j++)
    
            pezzo.array[i][j]=pezzo1[i][j];}
    }
    void cancellariga(){
    for (indice_mappaj=pezzo.y; indice_mappaj>0; indice_mappaj--) {
        for (indice_mappai=0; indice_mappai<larghezza_colonne;indice_mappai++)
            if (mappa[indice_mappai][indice_mappaj]!=0)
                mappa[indice_mappai][indice_mappaj]=mappa[indice_mappai][indice_mappaj-1];
                }
    }
    
    int movimentopossibile(){
        int jpezzo=pezzo.y,ipezzo=pezzo.x,imappa,jmappa;
        for ( ipezzo=pezzo.y, imappa=0; ipezzo<pezzo.y+dimpezzo; ipezzo++, imappa++){
            for(jpezzo=pezzo.x, jmappa=0; jpezzo<pezzo.x+dimpezzo; jpezzo++, jmappa++)
                if (jpezzo>larghezza_colonne-1 ||jpezzo<0 ||jpezzo>altezza_righe-1){
                    return 0;}
                    else{
                    return 1;
    }
    }
    }
    void controllariga(){
    for(indice_mappai=0;indice_mappai<larghezza_colonne;indice_mappai++){
    
        if(mappa[indice_mappai][indice_mappaj]!=0){
        if(indice_mappai==larghezza_colonne)
        cancellariga(indice_mappaj);
    }
    }
    }
    void agg(){
    int imappa,jmappa,ipezzo,jpezzo;
    for(ipezzo=pezzo.x;ipezzo<pezzo.x+dimpezzo;ipezzo++){
        for(jpezzo=pezzo.y;jpezzo<pezzo.y+dimpezzo;jpezzo++)
        mappa[ipezzo][jpezzo]=pezzo.array[ipezzo][jpezzo];
    }
    
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: sostituzione variabile int con una struct

    Originariamente inviato da francesco1985
    qst è il mio faticoso lavoro fatto fin ora. ora il problema è qst: quando ho sostituito x e y con pezzo.x e pezzo.y le function nn si sono attivate. xke?

    Guarda che non si capisce assolutamente cosa tu voglia dire.

    Che vuoi dire con "attivate"?

    Di quali funzioni parli?

    Che intendo con sostituire x con pezzo.x ? Cosa era x e cosa è pezzo.x ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    allora: x e y erano 2 variabili int ke mi davano la posizione di un pezzo all interno della mappa. ora... le 2 variabili le ho sostituite con la struct blocco, ma qst evidentemente al mio prgromma nn piace, xke quando usano semplicemente x e y funzionava tutto piu o meno bene e adesso ke le ho sostituite con pezzo.x e pezzo.y, ke sarebbero la x e la y all interno della struct, nn funziona piu come voglio, anzi nn funziona proprio e nn capisco xke

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da francesco1985
    allora: x e y erano 2 variabili int ke mi davano la posizione di un pezzo all interno della mappa.
    Intanto Francesco, per favore non usare abbreviazioni perché il discorso diventa difficile da seguirsi e non c'è nessuna necessità di usarle (questo non è un SMS).

    In secondo luogo, dovresti dire

    1) dove e come usavi prima questa x e y e dove l'hai sostituito con i corrispondenti elementi della struttura

    2) che vuol dire "non funziona" (cosa succedeva prima e cosa succede adesso)

    altrimenti nessuno potrà darti delle indicazioni.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    scusa è la forza dell'abitudine cmq.. dove vedi blocco.x e blocco.y prima c'erano semplicemente x e y 2 int per fatti loro(la struct e venuta dopo). quando c erano semplicemente le 2 variabili il programma mi rispondeva piu o meno come volevo io. se provi a compilarlo e poi confronti il risultato sostituendo pezzo.x e y e ricomplilandolo ti rendi conto subito della differenza. il probelema è ke non capisco perche con la sostituzione nn mi funzioni come vorrei.

  6. #6
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    il gioco ,suscita , in me un certo interesse , essenzialmente perchè non ho capito
    cosa vuoi fare

    Dovresti , se vuoi renderci partecipi , descrivere cosa consiste il gioco
    commentare ad una a una le funzioni e spiegare il loro ruolo ,cosa devono fare !


    ci sono , cose con poco senso nel codice

    esempio


    codice:
    printf("%d %d %d %d %d %d %d %d %d %d \n",mappa[indice_mappai][indice_mappaj],mappa[indice_mappai][indice_mappaj+1],mappa[indice_mappai][indice_mappaj+2],mappa[indice_mappai][indice_mappaj+3],mappa[indice_mappai][indice_mappaj+4]
                                                         ,mappa[indice_mappai][indice_mappaj+5],mappa[indice_mappai][indice_mappaj+6],mappa[indice_mappai][indice_mappaj+7],mappa[indice_mappai][indice_mappaj+8],mappa[indice_mappai][indice_mappaj+9]
                                                         ,mappa[indice_mappai][indice_mappaj+10],mappa[indice_mappai][indice_mappaj+11],mappa[indice_mappai][indice_mappaj+12],mappa[indice_mappai][indice_mappaj+13],mappa[indice_mappai][indice_mappaj+14]
                                                         ,mappa[indice_mappai][indice_mappaj+15],mappa[indice_mappai][indice_mappaj+16],mappa[indice_mappai][indice_mappaj+17],mappa[indice_mappai][indice_mappaj+18],mappa[indice_mappai][indice_mappaj+19]);

    qui printf ,stampa dieci interi , se poi metti 20 variabili come parametri non vengono stampati

    nei cicli for , non occorre dare nomi significativi , alle variabili , sono cicli ,
    semmai aggiungi una riga di commento , è piu utile."ma comunque ora lascia cosi"

    se usi due interi x y , campi della struttura , o indichi due variabili x y , non cambia niente,
    se sono inizializzate a x=5 y=0 entrambe .
    Tecnologia

  7. #7
    ciao torn. vedi le function erano rikke di commenti solo ke superavano il limite per il post cosi le ho tolte se no nn potevo postare l intero codice, se vuoi te le posto una ad una. cmq.. il gioko è quello del tetris(molto rudimentale lo so)ed è ankora in fase di perfezinamento, per adesso mi limito alla sostanza poi miglioro piano piano le parti diciamo grezze . cmq come spiegavo prima nel post precedente se uso x e y come 2 int normali ottengo la visualizzazione del pezzo nella mappa, se invece uso pezzo.x e y nn ottengo nulla, la cosa è strana dato ke nn dovrebbe cambiare nulla(almeno credo)

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    Originariamente inviato da francesco1985
    sostituzione variabile int con una struct
    Manca l'indicazione del linguaggio nel titolo, come richiesta dal Regolamento.

    Qui l'ho aggiunta io, tienilo a mente per il futuro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    ok grazie, devo ankora prenderci la mano

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa, ma non riesco ancora a capire il tuo problema ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.