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

    [C++] Spostamento di valori in una griglia

    Ciao a tutti!
    Sto' creando un programma con il quale è possibile posizionare e spostare 4 "pezzi" (vogilo poi trasformarlo in un gioco di dama) all'interno di una griglia 8x8.
    Ho scritto questo codice:
    codice:
    #include <iostream>
    #include <stdlib.h>
    
    #define coord 8
    
    using namespace std;
    void Elaboraschema(int[][coord],bool);
    void Stampaschema(int[][coord]);
    int main() {
    bool uscito=true,prep=true;
    int coordinate [coord][coord];//array dei valori contenuti nelle caselle della griglia
    int x,y,latitudine,longitudine;
    for(x=0;x<coord;x++)//setto tutti i valori della caselle a zero servendomi delle variabili y e x
    for(y=0;y<coord;y++)
    coordinate[x][y]=0;
    Elaboraschema(coordinate,prep);//richiamo la funzione la prima volta
    prep=false;
    while(uscito==true){
    Elaboraschema(coordinate,prep);//richiamo la fuzione all'infinito dopo aver modificato il valore di prep
    }
    return 0;
    }
    
    
    void Stampaschema(int b[][coord]){//funzione che disegna la griglia con i valori dell'array b
    int x,y;
    cout<<"0 1 2 3 4 5 6 7 8\n";
    for(y=0;y<coord;y++) {//riporto i valori nella griglia 
    cout<<y+1<<" ";
    for(x=0;x<coord;x++) {
    cout<<b[x][y]<<" ";
    }
    cout<<"\n";
    }
    }
    
    
    void Elaboraschema(int schema[][coord],bool prep){//funzione che elabora i valori della griglia da stampare
    int x,y,elaborati=0,pezzo,ypezzo,xpezzo;
    int pezzi[4][2];//array contenente le coordinate(0=y,1=x) di 4 pezzi e gli stessi
    for(y=0;y<coord;y++) {//estraggo dallo scema gli eventuali pezzi già presenti e le loro coordinate
    for(x=0;x<coord;x++) {
    if(schema[y][x]>0) {pezzi[elaborati][0]=y;pezzi[elaborati][1]=x;elaborati++;}
    }
    }
    for(x=0;x<coord;x++)//cancello i pezzi dalla griglia
    for(y=0;y<coord;y++)
    schema[x][y]=0;
    if(prep==true) {for(x=0;x<4;x++)for(y=0;y<2;y++)pezzi[x][y]=0;}//la prima volta che la funzione è richiamata (prep=true) ripulisco l'array contenente i pezzi
    cout<<"pezzo?\n";
    cin>>pezzo;//richiedo il numero del pezzo da elaborare
    cin>>ypezzo;//richiedo le nuove coordinate y del pezzo
    cin>>xpezzo;//richiedo le nuove coordinate x del pezzo
    ypezzo--;
    xpezzo--;
    if(schema[ypezzo][xpezzo]==0) {//se le nuove coordinate sono vuote posizione vi posiziona il pezzo elaborato ed elabora la nuova griglia
    pezzi[pezzo][0]=ypezzo;
    pezzi[pezzo][1]=xpezzo;
    schema[pezzi[0][0]][pezzi[0][1]]=4;
    schema[pezzi[1][0]][pezzi[1][1]]=4;
    schema[pezzi[2][0]][pezzi[2][1]]=4;
    schema[pezzi[3][0]][pezzi[3][1]]=4;
    Stampaschema(schema);//stampa la griglia
    }else{
    cout<<"Coordinate errate: i pezzi non possono essere sovrapposti!";//restituisce errore se le coordinate sono occupate da un altro pezzo
    }
    }
    Il mio problema stà nelle ultime righe di "Elaboraschema": infatti il controllo fatto dall'ultimo if restitusce sempre true, perchè lo schema è stato precedentemente ripulito. Inoltre non so perchè ma la casella 1-1 restituisce sempre 4(il valore che indica un pezzo).
    Premesso ce non sono molto esperto di C++ e che NON so programmare in alcun modo ad oggetti, qualcuno saprebbe spiegarmi come risolvere questi problemi in modo semplice, o spiegarmi come strutturare il codice in modo più semplice (riconosco che è strutturato male e disordinatamente)?
    Grazie in anticipo!

  2. #2

  3. #3
    Scusa, avevo dimenticato il "//" prima di un commento, ora il codice è corretto.

  4. #4
    Il problema peò ancora persiste!

  5. #5
    Qualcuno sa dirmi il perchè dei problemi del mio programma??

  6. #6
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Purtroppo il codice è formattato malissimo.
    Nessuno avrà voglia di leggerselo finchè è mantenuto in quel modo.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  7. #7
    Hai proprio ragione, ora che lo riguardo!
    Cercherò di sistemarlo!
    Grazie di avermelo fatto notare!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    A prima vista, mi sembra che tu usi una volta gli indici nell'ordine [x][y] e altre volte nell'ordine [y][x].

    Ovviamente non va bene. Devi usare solamente un metodo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Grazie, non l'avevo notato!

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da quit10
    Grazie, non l'avevo notato!
    Ok ... ma il programma l'hai scritto tu ...

    Quando si scrive, si deve avere un progetto preventivo e rispettarlo cosi' da avere in tutte le funzioni le coordinate indicate nello stesso ordine ...
    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.