Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    [c++] problema con classi 1/2

    come faccio ad accedere (da A) ad una funzione di B senza incasinarmi con le variabili?? (entrambe le classi sono public)

    cioè... xkè mi accade questo?

    /* file main.cpp */
    /* * * * * * * * * * * * * * * * *
    * nome: *
    * autore: Alessandro Cocco *
    * data: 25/12/03 15.59 *
    * descrizione: R.P.G. testuale *
    * * * * * * * * * * * * * * * * */

    #include <iostream> // inclusione libreria
    #include <fstream> // inclusione libreria
    #include <time.h> // inclusione libreria
    #include <stdlib.h> // inclusione libreria
    #include <stdio.h> // inclusione libreria
    #include <conio.h> // inclusione libreria
    using namespace std; // 'importazione' qualificatori standard
    #include "TuaStanza.h" // inclusione file di gioco
    #include "Corridoio.h" // inclusione file di gioco

    main() { // inizio programma
    TuaStanza TuaStanza; // carica la classe TuaStanza
    Corridoio Corridoio; // carica la classe Corridoio

    TuaStanza.Inizializzazione(); // chiama la funzione x inizializzare le variabili
    Corridoio.Inizializzazione(); // chiamo la funzione per inizilizzare le variabili
    } // fine programma



    /* file "TuaStanza.h" */
    class TuaStanza { // inizio classe

    public: // dati pubblici

    TuaStanza(); // costruttore
    ~TuaStanza(); // distruttore

    void Inizializzazione(); // funzione x inizializzare le variabili
    void InsCOM(); // funzione x l'inserimento dei comandi
    void Controllo(); // funzione con i controlli sui comandi inseriti dal giocatore
    void Intro(); // funzione Intro
    void GuardoArmadio(); // funzione GuardoArmadio
    void AproArmadio(); // funzione AproArmadio
    void ChiudoArmadio(); // funzione ChiudoArmadio
    void GuardoLetto(); // funzione GuardoLetto
    void GuardoPorta(); // funzione GuardoPorta
    void AproPorta(); // funzione AproPorta
    void ChiudoPorta(); // funzione ChiudoPorta
    void EscoStanza(); // funzione per andare in corridoio

    char com[30]; // varibile che conterrà i comandi inseriti dal giocatore

    struct { // struttura con variabili dell'ambiente in questione
    bool ArmadioAperto; // variabile booleana
    bool PortaAperta; // variabile booleana
    } VARvarie; // questa struttura verrà salvata

    }; // fine classe

    // funzioni della classe

    TuaStanza::TuaStanza() { // costruttore
    cout << "classe TuaStanza costruita!" << endl;
    getche();
    }

    TuaStanza::~TuaStanza() { // distruttore
    cout << "classe TuaStanza distrutta!" << endl;
    getche();
    }

    void TuaStanza::Inizializzazione() { // funzione x inizilizzare le varibili
    VARvarie.ArmadioAperto=false; // indica ke l'armadio è chiuso
    VARvarie.PortaAperta=false; // indica che la porta della stanza è chiusa
    Intro(); // carica il gioco vero e proprio
    }

    void TuaStanza::Intro() { // funzione intro
    system("CLS"); // pulisce lo schermo
    cout << endl;
    cout << " Sei nella tua stanza." << endl;
    cout << endl;
    cout << " Vedi un armadio ";
    if(VARvarie.ArmadioAperto==false) // se l'armadio è chiuso
    cout << "(chiuso);" << endl; // ti dice ke è chiuso
    else // altrimenti
    cout << "(aperto);" << endl; // ti dice che è aperto
    cout << " Vedi un letto;" << endl;
    cout << " Vedi la porta della stanza ";
    if(VARvarie.PortaAperta==false) // se la porta è chiusa
    cout << "(chiusa);" << endl; // ti dice che è chiusa
    else // altrimenti
    cout << "(aperta);" << endl; // ti dice che è aperta
    InsCOM(); // chiama la funzione x l'inserimento dei comandi
    }

    void TuaStanza::InsCOM() { // funzione x inserire i comandi
    cout << endl;
    cout << " Cosa fai?" << endl;
    cout << " +++ ";
    cin.getline (com, 30); // il comando inserito viene salvato nella variabile 'com'
    Controllo(); // chiama la funzione che contiene i comandi validi in questo ambiente
    }

    void TuaStanza::Controllo() { // funzione di controllo sui comandi inseriti dall'utente
    char GuardOArmadio[17]="GUARDO L'ARMADIO"; // comando
    char AprOArmadio[15]="APRO L'ARMADIO"; // comando
    char ChiudOArmadio[17]="CHIUDO L'ARMADIO"; // comando
    char GuardOLetto[16]="GUARDO IL LETTO"; // comando
    char GuardOPorta[16]="GUARDO LA PORTA"; // comando
    char AprOPorta[14]="APRO LA PORTA"; // comando
    char ChiudOPorta[16]="CHIUDO LA PORTA"; // comando
    char EscOStanza[18]="ESCO DALLA STANZA"; // comando
    char Ripeti[7]="RIPETI"; // comando

    if(!strcmp(com,GuardOArmadio)) // guardo l'armadio
    GuardoArmadio(); // chiama la funzione GuardoArmadio
    else if(!strcmp(com,AprOArmadio)) // apro l'armadio
    AproArmadio(); // chiama la funzione AproArmadio
    else if(!strcmp(com,ChiudOArmadio)) // chiudo l'armadio
    ChiudoArmadio(); // chiama la funzione ChiudoArmadio
    else if(!strcmp(com,GuardOLetto)) // guardo il letto
    GuardoLetto(); // chiama la funzione GuardoLetto
    else if(!strcmp(com,GuardOPorta)) // guardo la porta
    GuardoPorta(); // chiama la funzione GuardoPorta
    else if(!strcmp(com,AprOPorta)) // apro la porta
    AproPorta(); // chiama la funzione AproPorta
    else if(!strcmp(com,ChiudOPorta)) // chiudo la porta
    ChiudoPorta(); // chiama la funzione ChiudoPorta
    else if(!strcmp(com,Ripeti)) // torna all'inizio
    Intro(); // chiama la funzione Intro
    else if(!strcmp(com,EscOStanza)) // esco dalla stanza
    EscoStanza();
    else // se nessun comando inserito è valido
    InsCOM(); // torni all'inserimento comandi
    }

    void TuaStanza::GuardoArmadio() { // funzione "guardo l'armadio"
    cout << endl;
    if(VARvarie.ArmadioAperto==false) { // se l'armadio è chiuso
    cout << " E' un armadio in legno. Non deve essere un'impresa aprirlo..." << endl;
    } else
    cout << " All'interno non c'e' nulla di interessante." << endl;
    InsCOM(); // richiama l'inserimento comandi
    }

    void TuaStanza::AproArmadio() { // funzione "apro l'armadio"
    cout << endl;
    if(VARvarie.ArmadioAperto==false) { // se l'armadio è chiuso
    cout << " Fatto." << endl;
    VARvarie.ArmadioAperto=true; // lo apre
    } else // altrimenti
    cout << " L'armadio e' gia' aperto!" << endl; // ti dice che è già aperto
    InsCOM(); // richiama l'inserimento comandi
    }

    void TuaStanza::ChiudoArmadio() { // funzione "chiudo l'armadio"
    cout << endl;
    if(VARvarie.ArmadioAperto==true) { // se l'armadio è aperto
    cout << " Fatto." << endl;
    VARvarie.ArmadioAperto=false; // lo chiude
    } else // altrimenti
    cout << " L'armadio e' gia' chiuso!" << endl; // ti dice che è già chiuso
    InsCOM(); // richiama l'inserimento comandi
    }

    void TuaStanza::GuardoLetto() { // funzione "guardo il letto"
    cout << endl;
    cout << " E' un letto..." << endl;
    InsCOM(); // torna all'inserimento comandi
    }

    void TuaStanza::GuardoPorta() { // funzione "guardo la porta"
    cout << endl;
    cout << " WOW, una porta senza serratura!" << endl;
    InsCOM(); // torna all'inseriemto dei dati
    }

    void TuaStanza::AproPorta() { // funzione "apro la porta"
    cout << endl;
    if(VARvarie.PortaAperta==false) { // se la porta è chiusa
    cout << " Fatto." << endl;
    VARvarie.PortaAperta=true; // la apre
    } else // altrimenti
    cout << " La porta e' gia' aperta!" << endl; // ti dice che è già aperta
    InsCOM(); // torna all'inserimento dei dati
    }

    void TuaStanza::ChiudoPorta() { // funzione "chiudo la porta"
    cout << endl;
    if(VARvarie.PortaAperta==true) { // se la porta è aperta
    cout << " Fatto." << endl;
    VARvarie.PortaAperta=false; // la chiude
    } else // altrimenti
    cout << " La porta e' gia' chiusa!" << endl; // ti dice che è già chiusa
    InsCOM(); // torna all'inserimento comandi
    }

    void TuaStanza::EscoStanza() { // funzione "esco dalla stanza"
    cout << endl;
    if(VARvarie.PortaAperta==false) { // se la porta è chiusa
    cout << " La porta e' chiusa!" << endl;
    InsCOM(); // torna all'inserimento dei comandi
    } else
    cout; /* QUI DEVO MODIFICARE QUALCOSA.... COME SI FA IL COLL AD UN' ALTRA CLASSE? */
    }



    continua su un altra pagina xkè non cera posto...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    2/2

    /* file "Corridoio.h" */
    class Corridoio { // inizio classe

    public: // dati pubblici

    Corridoio(); // costruttore
    ~Corridoio(); // distruttore

    void Inizializzazione(); // funzione che inizializza le variabili
    void InsCOM(); // funzione per l'inserimento dei comandi
    void Controllo(); // funzione di controllo dei comandi inseriti
    void Intro(); // funzione Intro
    void GuardoBaule(); // funzione GuardoBaule
    void AproBaule(); // funzione AproBaule
    void ChiudoBaule(); // funzione ChiudoBaule
    void ChiudoPorta(); // funzione ChiudoPorta
    void AproPorta(); // funzione AproPorta
    void EntroStanza(); // funzione EntroStanza

    char com[30]; // variabile che conterrà i comandi inseriti dall'utente

    struct { // struttura con variabili dell'ambiente in questione
    bool PortaAperta; // variabile booleana
    bool BauleAperto; // variabile booleana
    bool PozioneTerra; // variabile booleana
    } VARvarie; // questa struttura verrà salvata

    }; // fine classe

    Corridoio::Corridoio() { // costruttore
    cout << "classe Corridoio costruita!" << endl;
    getche();
    }

    Corridoio::~Corridoio() { // distruttere
    cout << "classe Corridoio distrutta!" << endl;
    getche();
    }

    void Corridoio::Inizializzazione() { // funzione in cui vengono inizilizzate le variabili
    VARvarie.PortaAperta=true; // indica che la porta è aperta
    VARvarie.BauleAperto=false; // indica che il baule è chiuso
    Intro(); // carica il gioco vero e proprio
    }

    void Corridoio::Intro() { // funzione Intro
    system("CLS"); // pulisce lo schermo
    cout << endl;
    cout << " Sei nel corridoio." << endl;
    cout << endl;
    cout << " Vedi un baule ";
    if(VARvarie.BauleAperto==false) // se il baule è chiuso
    cout << "(chiuso);" << endl; // ti dice che è chiuso
    else // altrimenti
    cout << "(aperto);" << endl; // ti dice che è aperto
    cout << " Vedi la porta della tua stanza ";
    if(VARvarie.PortaAperta==true) // se la porta è aperta
    cout << "(aperta);" << endl; // ti dice che è aperta
    else // altrimenti
    cout << "(chiusa);" << endl; // ti dice che è chiusa
    cout << " Vedi le scale;" << endl;
    InsCOM(); // chiama la funzione InsCOM
    }

    void Corridoio::InsCOM() { // funzione x inserire i comandi
    cout << endl;
    cout << " Cosa fai?" << endl;
    cout << " +++ ";
    cin.getline (com, 30); // il comando inserito viene salvato nella variabile 'com'
    Controllo(); // chiama la funzione che contiene i comandi validi in questo ambiente
    }

    void Corridoio::Controllo() { // funzione che controlla i comandi inseriti dall'utente
    char GuardOBaule[16]="GUARDO IL BAULE";
    char AprOBaule[14]="APRO IL BAULE";
    char ChiudOBaule[16]="CHIUDO IL BAULE";
    char ChiudOPorta[16]="CHIUDO LA PORTA";
    char AprOPorta[14]="APRO LA PORTA";
    char EntrOStanza[19]="ENTRO NELLA STANZA";
    char Ripeti[7]="RIPETI";

    if(!strcmp(com,GuardOBaule)) // guardo il baule
    GuardoBaule(); // chiama la funzione GuardoBaule
    else if(!strcmp(com,AprOBaule)) // apro il baule
    AproBaule(); // chiamo la funzione AproBaule
    else if(!strcmp(com,ChiudOBaule)) // chiudo il baule
    ChiudoBaule(); // chiamo la funzione ChiudiBaule
    else if(!strcmp(com,ChiudOPorta)) // chiudo la porta
    ChiudoPorta(); // chiamo la funzione ChiudoPorta
    else if(!strcmp(com,AprOPorta)) // apro la porta
    AproPorta(); // chiamo la funzione AproPorta
    else if(!strcmp(com,EntrOStanza)) // entro nella stanza
    EntroStanza(); // chiamo la funzione EntroStanza
    else if(!strcmp(com,Ripeti)) // ripeti
    Intro(); // chiamo la funzione Intro
    else // se nessun comando inserito risulta valido
    InsCOM(); // torni all'inserimento dei comandi
    }

    void Corridoio::GuardoBaule() { // funzione "guardo il baule"
    cout << endl;
    if(VARvarie.BauleAperto==false) // se il baule è chiuso
    cout << " E' un vecchio baule impolverato." << endl;
    else // altrimenti
    cout << " All'interno c'e' una pozione di cura." << endl; //
    InsCOM(); // torna all'inserimento dati
    }
    void Corridoio::AproBaule() { // funzione "apro il baule"
    cout << endl;
    if(VARvarie.BauleAperto==false) { // se il baule è chiuso
    cout << " Fatto." << endl;
    VARvarie.BauleAperto=true; // lo apre
    } else // altrimenti
    cout << " Il baule e' gia' aperto!" << endl;
    InsCOM(); // torna all'inserimento dati
    }

    void Corridoio::ChiudoBaule() { // funzione "chiudo il baule"
    cout << endl;
    if(VARvarie.BauleAperto==true) { // se il baule è aperto
    cout << " Fatto." << endl;
    VARvarie.BauleAperto=false; // lo chiude
    } else // altrimenti
    cout << " Il baule e' gia' chiuso!" << endl;
    InsCOM(); // torna all'inserimento dati
    }

    void Corridoio::ChiudoPorta() { // funzione "chiudo la porta"
    cout << endl;
    if(VARvarie.PortaAperta==true) { // se la porta è aperta
    cout << " Fatto." << endl;
    VARvarie.PortaAperta=false; // la chiude
    } else // altrimenti
    cout << " La porta e' gia' chiusa!" << endl;
    InsCOM(); // torna all'inserimento dati
    }

    void Corridoio::AproPorta() { // funzione "apro la porta"
    cout << endl;
    if(VARvarie.PortaAperta==false) { // se la porta è chiusa
    cout << " Fatto." << endl;
    VARvarie.PortaAperta=true; // la apre
    } else // altrimenti
    cout << " La porta e' gia' aperta!" << endl;
    InsCOM(); // torna all'inserimento dati
    }

    void Corridoio::EntroStanza() { // funzione "entro nella stanza"
    TuaStanza TuaStanza;
    TuaStanza.Intro();
    }



    provatelo e aiutatemi...

    praticamente... voi aprite la porta... uscite dalla stanza e vi ritorvate nel corridoio..

    dal corridoio tornate neòlla stanza e trovate 1) l'armadio aperto (anke se non lo avete aperto) 2) la porta aperta (questo è normale..)

    ma se voi cercate di chiudewre la porta o l'armadio vi verrà detto che sono già chiusi anke se nel menu sono segnalate aperte!!!

    help ME!!!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Per favore semplifica ilo problema...

    Magari è abbastanza facile ma non serve capire tutto il tuo programma x risolverlo!

    E poi metti tutto il codice tra [ CODE] e [/ CODE]

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    allora...

    come faccio ad accedere ad una funzione contenuta nella classe A dalla classe B?

    rendo friend le 2 classi, chiamo la funzione ke mi serve ma mi da errore...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.