Jump to content
luismsantana

contructor por cópia+vector de objectos+mudar foco de jogo para uma instancia

Recommended Posts

luismsantana

Bom dia,

estou a fazer um jogo de tabuleiro, uma mina, e tenho de fazer savegames ( constructor por cópia ) .. o meu problema é que o jogo tem um comando que serve para retomar um determinado jogo anteriormente guardado no vector ... não estou a ver como fazer isto :\


//jogo.h
class Jogo
{
vector<Jogo>jogos;
Tabuleiro tabuleiro;
vector<Utensilio>compras;
Consola c;
string nome;
int linha;
int coluna;
int dificuldade;

public:
   Jogo(string nome, int linha, int coluna, int dificuldade, vector<Utensilio>utensilios);
   Jogo(Jogo const&novo, string nome); // construtor copia
   Jogo(string nome, int linha, int coluna, int dificuldade);
   Jogo(void);
   ~Jogo(void);
...
};

//jogo.cpp


Jogo::Jogo(string nome, int linha, int coluna, int dificuldade, vector<Utensilio>utensilios):tabuleiro(coluna, linha, dificuldade)
{
   this->linha = linha+1;
   this->coluna = coluna;
   this->dificuldade = dificuldade;
   this->nome = nome;
   compras = utensilios;
}

Jogo::Jogo(Jogo const&jogo, string nome): linha(jogo.linha), coluna(jogo.coluna), dificuldade(jogo.dificuldade), compras(jogo.compras), tabuleiro(jogo.tabuleiro)
{
    this->nome = nome;
}

bool Jogo::trataComando(string comando){
     if(results[0].compare("c") == 0 && results.size() == 2){
           Jogo j(*this, results[1]);

           jogos.push_back(j);
           //este comando serve para fazer o tal save
            return false;
     }


     if(results[0].compare("f") == 0 && results.size() == 2){
          //comando para retomar jogo anterior
          trataComandoMudaFoco(results);
          return false;
     }
}

void Jogo::trataComandoMudaFoco(vector<string>results){
        for(int i=0; i<jogos.size();i++){

           cout<<"nome: "<<jogos[i].nome;
           if(jogos[i].nome.compare(results[1])){

                  this->coluna = jogos[i].coluna;
                  this->linha = jogos[i].linha;
                  this->nome = jogos[i].nome;
                  this->dificuldade = jogos[i].dificuldade;
                  this->tabuleiro = jogos[i].tabuleiro;

                  return;

          }

       }

}

no decorrer do jogo actual, eu posso escrever comandos ... um deles é fazer um save do jogo actual e outro comando é mudar o foco do jogo actual para um save feito anteriormente ...

Cumprimeiros,

Luís Monteiro

Edited by thoga31
Correcção do GeSHi

Share this post


Link to post
Share on other sites
Rui Carlos

Diria que vais precisar de substituir o objecto que contém o jogo pelo objecto lido do save. O então copias os dados do jogo guardado para o objecto que contém o jogo que estás a jogar.

Share this post


Link to post
Share on other sites
HappyHippyHippo

pelo que percebi, tens várias instâncias da classe Jogo criadas e guardadas num vector qualquer, o que me faz pensar que é o mesmo que ter vários jogos abertos e pretendes "saltar" de um para outro a teu bel-prazer.

se fosse eu, guardaria uma referencia (ponteiro) para a instância que se encontra actualmente com o foco e bastava simplesmente usar esse ponteiro ...


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.