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...