Ir ao conteúdo
  • Cadastre-se

_rsd_17

Membro Pleno
  • Posts

    45
  • Cadastrado em

  • Última visita

Tudo que _rsd_17 postou

  1. Ola, estou a resolver um exercicio usando o MVC que pela ViewPrincipal o utilizador insere uma cor e depois pode guarda la num ficheiro a sua escolha. Ate ai tudo bem, mas depois pede para que a cor que foi guardada em ficheiro apenas seja guardada uma vez e caso a cor ja tenho sido guardada anteriormente pela aplicação não deve permitir que ela seja guardada novamente apresentando uma mensagem ao utilizador a dizer : "A cor verde ja foi guardada! " Nao sei muito bem como resolver esta parte da tarefa, se alguem me pudesse ajudar agradecia. Eu penso que na view tenha que criar um if e por la a condição q se a cor ja foi guardada apareça a mensagem de erro. Aguardo ajuda, Obrigada
  2. ola no jogo do galo tenho uma funçao SelectionSort na classe jogador para ordenar os jogadores pela experiencia, e tenho uma funçao de troca para ajudar: void jogador::SelectionSort(jogador * Jog, int size)//ordenar jogadores pela experiencia { int i, j, aux; for (i = 0; i < size - 1; i++) { aux = i; for (j = i + 1; j < size; j++) { if ((Jog + j)->GetExperiencia() < (Jog + j)->GetExperiencia()) { aux = j; } } troca(Jog + aux, Jog + i); } } void jogador::troca(jogador * x, jogador * y) { jogador aux; aux = *x; *x = *y; *y = aux; } ate ai tudo bem, mas quando tenho implementar no main nao funciona!! Help ? //apresentar no ecran os dados dos jogadores ordenados pela experiencia jogador vetor[10]; jogador.SelectionSort(vetor,10); for (int i = 0; i < 10; i++) { cout << vetor[i] << "\n"; } cin.get(); adicionado 0 minutos depois o meu main completo é assim: #include "pch.h" #include <iostream> #include "Menu.h" #include "Jogo.h" #include "Campeonato.h" #include "jogador.h" using namespace std; int main() { Menu menu = Menu(); Jogo game = Jogo(); Campeonato championship = Campeonato(); int option = 0; do { system("CLS"); menu.View_B_Menu();//primeiro menu menu.SetCondicao(6); switch (option = menu.SelectOption()) { case 1: //jogar o jogo menu.PlayGame(); break; case 2: //como jogar system("CLS"); menu.ViewHow2Play(); system("PAUSE"); break; case 3: // Regras system("CLS"); menu.ViewRules(); system("PAUSE"); break; case 5: // ler do ficheiro os dados de todos os jogadores para um vetor de objetos jogador vetor[10]; ifstream x; int contador; x.open("Jogadores.txt"); if (x) { for (int i = 0; i < 10; i++) { vetor[i].Read(x); } /*ou entao: contador = 0; while(x.peek()!=EOF={ vetor[contador].Read(x); contador++; }*/ x.close(); cout << "Ficheiro Jogadores.txt lido com sucesso! " << endl; } else { cout << "ERRO: nao é possivel abrir o ficheiro!!" << endl; break; } case 6: //apresentar no ecran os dados dos jogadores ordenados pela experiencia jogador vetor[10]; jogador.SelectionSort(vetor,10); for (int i = 0; i < 10; i++) { cout << vetor[i] << "\n"; } cin.get(); } } while (option != 5); //opção 4 - sai do jogo system("CLS"); cout << "Obrigado por jogarem!! :D "; Sleep(5); return 0; }
  3. @Flávio Pedroza no ponto h eu sei fazer, a minha duvida era no ponto cpp
  4. @Flávio Pedroza muito obrigada, eu tinha posto o metodo Play da classe pai como Posicao na classe filha muito obrigada. POde me ajudar a resolver esse erro ?
  5. ola entao a minha duvida é a seguinte: tenho uma classe jogG derivada da classe Jogador, e tendo na classe jogG um metodo declarado " virtual Lancar(void); " como é que eu o declaro no .cpp? ponho jogG::lancar(){} ?
  6. #pragma once #include "player.h" class jogador :public player { private: float experiencia; //% de jogos q o jogador ganhou float total_jogos;//total de jogos ganhos float jogos_ganhos;//total de jogos ganhos public: jogador(); jogador(char _simbolo, string _nome, ponto _escolhas[5], int _num_jogadas, float _experiencia, float _total_jogos, float _jogos_ganhos); virtual ~jogador(); //set e get void SetExperiencia(float _experiencia) { this->experiencia = _experiencia; } void SetTotal_jogos(float _total_jogos) { this->total_jogos = _total_jogos; } void SetJogos_ganhos(float _jogos_ganhos) { this->jogos_ganhos = _jogos_ganhos; } float GetExperiencia(void) { return this->experiencia; } float GetTotal_jogos(void) { return this->total_jogos; } float GetJogos_ganhos(void) { return this->jogos_ganhos; } //outras ponto Posiçao(bool valid);//jogador escolhe a posiçao para jogar void ADD_Game(int opcao);//opcao=0 o jogador perde o jogo, opção =1 o jogador ganha o jogo void Calcula_experiencia(int opcao);//calcula a % de vitorias, opcao ADD_Game void show();//mostra a informaçao dos jogadores void operator =(const jogador p); void Save(ofstream & os); void Read(ifstream & is); }; #include "pch.h" #include "jogador.h" jogador::jogador() { experiencia = 0; total_jogos = 0; jogos_ganhos = 0; } jogador::jogador(char _simbolo, string _nome, ponto _escolhas[5], int _num_jogadas, float _experiencia, float _total_jogos, float _jogos_ganhos) :player(_simbolo, _nome, _escolhas[5], _num_jogadas) { experiencia = _experiencia; total_jogos = _total_jogos; jogos_ganhos = _jogos_ganhos; } jogador::~jogador() { } ponto jogador::Posiçao(bool valid) { int aux = this->GetNum_jogadas(); //verifica se a ultima jogada foi valida ou as ultimas coordenadas q o jogador escolheu ja foram tiradas if (valid) { aux++; this->SetNum_jogadas(aux); } cout << this->GetNome() << " faça a sua jogada: " << endl; ponto auxp;//auxp para ajudar a fazer a jogada while (!auxp.Ask2SetPonto()) { cout << "Escolha apenas entre 1 a 3. Insira novas coordenadas: " << endl; } this->SetEscolhas(auxp, aux);//adiciona a posicao para jogar return auxp; } void jogador::ADD_Game(int opcao) { if (opcao == 0) {//jogador perde o jogo this->total_jogos++; } else if (opcao == 1) {//jogador ganha o jogo this->total_jogos++; this->jogos_ganhos++; } } void jogador::Calcula_experiencia(int opcao) { this->ADD_Game(opcao); this->experiencia = this->jogos_ganhos / this->total_jogos; } void jogador::show() { cout << "Nome: " << this->GetNome() << endl; cout << "Total de jogos jogados: " << this->total_jogos << endl; cout << "Percentagem de vitorias: " << this->experiencia << endl << endl; } void jogador::operator=(const jogador p) { this->experiencia = p.experiencia; this->total_jogos = p.total_jogos; this->jogos_ganhos = p.jogos_ganhos; player::SetNome(p.GetNome()); for (int i = 0; i < 5; i++) { player::SetEscolhas(p.GetEscolhas(i), i); } player::SetNum_jogadas(p.GetNum_jogadas()); player::SetSimbolo(p.GetSimbolo()); } void jogador::Save(ofstream & os) { player::Save(os); os << this->experiencia << ";" << this->total_jogos << ";" << this->jogos_ganhos << endl; } void jogador::Read(ifstream & is) { player::Read(is); is >> this->experiencia; is.ignore(INT16_MAX, ';'); is >> this->total_jogos; is.ignore(INT16_MAX, ';'); is >> this->jogos_ganhos; } #include <time.h> #include "ponto.h" #include "Tabuleiro.h" #include "Jogador.h" #include "Computador.h" using namespace std; class Jogo { private: bool bot;//bot esta a jogar? true=sim, false=nao protected: jogador player1, player2; Computador bot1; int count;//conta quantas posiçoes do tabuleiro ja foram tomadas Tabuleiro tab;//tabuleiro public: Jogo(); Jogo(Tabuleiro _tabuleiro, jogador _player1, jogador _player2, Computador _bot1, int _contador, bool _computador); virtual ~Jogo(); //Sets and gets void SetTabuleiro(Tabuleiro _tabuleiro) { this->tab = _tabuleiro; } void SetJogador1(jogador _player1) { this->player1 = _player1; } void SetJogador2(jogador _player2) { this->player2 = _player2; } void SetBOT1(Computador _bot1) { this->bot1 = _bot1; } void SetContador(int _contador) { this->count = _contador; } void SetComputador(bool _computador) { this->bot = _computador; } int GetContadort() { return this->count; } bool GetBot() { return this->bot; } Tabuleiro GetTabuleiro() { return this->tab; } jogador GetJogador1() { return this->player1; } jogador GetJogador2() { return this->player2; } Computador GetBOT1() { return this->bot1; } //outros void FullReset();//alterar a redefinição do gamemod void operator=(const Jogo newgame);//sobrecarga para o construtor //Começar o jogo int First2Play();// decide quem joga primeiro void Set_Player_Name();//pedir nome aos jogadores void Set_Players_Symbol();//definir símbolo; int Begin_Game(int option);// Definir tipo de jogo// opcao = 1 -> newgame; 2-> jogar Agian; virtual int Read();//recarrega o jogo virtual void Save_Mode();// salva o modo de jogo // mode = 1-> classic vs bot // = 2 -> clássico contra jogador // = 3 -> campeonato contra bot // = 4 -> campeonato contra jogador // durante o jogo void Make_Play(int aux);// jogadores fazem suas jogadas, aux = Game aux virtual void Save(int aux);// salve o jogo, aux = primeiro a jogar // Fim do Jogo char Check_Winner();//verificar se já existe um vencedor void Validate_Winner(char caux);//caux = símbolo que ganhou void ResetGame();//Atributos do jogo redefinidos int Play_Again();//joga novamente void Show_Player_Stats();//mostrar estatísticas do jogador void Empty_Save_File();//esvazie o arquivo que salva o jogo quando o jogo terminar //Jogo completo virtual void Complete_Game(int option, int f2p);// f2p -> recarrega a variável do jogo. diz ao programa quem é o primeiro a jogar // option = opção begin_game }; #include "pch.h" #include "Jogo.h" Jogo::Jogo() { tab = Tabuleiro();//construtor da classe tab player1 = jogador();//construtor da classe jog player2 = jogador(); bot1 = Computador();//construtor da classe comp count = 0; bot = false;//nao esta a jogar } Jogo::Jogo(Tabuleiro _tabuleiro, jogador _player1, jogador _player2, Computador _bot1, int _contador, bool _computador) { tab = _tabuleiro; player1 = _player1; player2 = _player2; bot1 = _bot1; count = _contador; bot = _computador; } Jogo::~Jogo() { } void Jogo::FullReset() { Jogo(); } void Jogo::operator=(const Jogo newgame) { this->player1 = newgame.player1; this->player2 = newgame.player2; this->bot1 = newgame.bot1; this->bot = newgame.bot; this->count = newgame.count; this->tab = newgame.tab; } int Jogo::First2Play() { int aux; srand(time(NULL)); aux = (rand() % 2); return aux; // se o retorno 1 - jogador1 jogar primeiro; se retornar 0 - o jogador2 joga primeiro; } void Jogo::Set_Player_Name() { string aux; cout << "Insert Player1's name: "; cin.ignore(INT16_MAX, '\n'); getline(cin, aux); this->player1.SetNome(aux); if (!this->bot) { cout << "Insert Player2's name: "; getline(cin, aux); this->player2.SetNome(aux); } } void Jogo::Set_Players_Symbol() { srand(time(NULL)); if ((rand() % 2) == 1) { cout << this->player1.GetNome() << " e as 'O'." << endl; this->player1.SetSimbolo('O'); if (!this->bot) { cout << this->player2.GetNome() << " e as 'X'." << endl; this->player2.SetSimbolo('X'); } else { cout << "Computador e as 'X'." << endl; this->bot1.SetSimbolo('X'); } } else { cout << this->player1.GetNome() << " e as 'X'." << endl; this->player1.SetSimbolo('X'); if (!this->bot) { cout << this->player2.GetNome() << " e as 'X'." << endl; this->player2.SetSimbolo('O'); } else { cout << "Computador e as 'X'." << endl; this->bot1.SetSimbolo('O'); } } } int Jogo::Begin_Game(int option) { if (option == 1) //novo jogo { this->Set_Player_Name(); //player 1 nome this->Set_Players_Symbol(); //definir bot e jogador símbolos return this->First2Play(); //escolha quem joga primeiro } else // continuar jogo anterior return this->First2Play(); //escolha o primeiro a jogar até o próximo jogo mais retorne 100; } int Jogo::Read() { int aux; ifstream is; is.open("reload_game.txt"); if (!is.is_open()) return -1; is >> this->count; is.ignore(INT16_MAX, ';'); is >> aux; if (this->bot) { this->player1.Read(is); this->bot1.Read(is); } else if (!this->bot) { this->player1.Read(is); this->player2.Read(is); } this->tab.Read(is); is.close(); return aux; } void Jogo::Save_Mode() { ofstream os; os.open("mode.txt"); if (!os.is_open()) { cout << "ERROR ficheiro mode.txt (save)" << endl; return; } if (this->bot == true) //joga contra computador os << "1"; else //contra jogador os << "2"; os.close();//fecha ficheiro } void Jogo::Make_Play(int aux) { bool valid = true; //ve se a posiçao escolhoida é valida if ((this->count + aux) % 2 == 0) //jogador1 joga { while (!this->tab.SetMatriz_posicao(this->player1.GetSimbolo(), this->player1.play(valid))) {//verifica se a posição é válida e livre valid = false; cout << "Insira uma posicao vazia!" << endl; } } else if ((this->count + aux) % 2 == 1) //joga o computqador ou o kog2 { if (this->bot) //joga computador { int i = 0; while (!this->tab.SetMatriz_posicao(this->bot1.GetSimbolo(), this->bot1.play(valid))) { i++; valid = false; if (i == 10) cout << "O computador está um pouco lento hoje!" << endl; } } else if (!this->bot) //joga o jog2 { while (!this->tab.SetMatriz_posicao(this->player2.GetSimbolo(), this->player2.play(valid))) {//faz um jogo. verifica se a posição é válida e livre valid = false; cout << "Insira uma posicao vazia!" << endl; } } } } void Jogo::Save(int aux) { ofstream os; //abrir ficheiro os.open("reload_game.txt"); if (!os.is_open()) return; os << this->count << ";" << aux << endl; if (this->bot) {//players info this->player1.Save(os); this->bot1.Save(os); } else {//players info this->player1.Save(os); this->player2.Save(os); } this->tab.Save(os); os.close(); } char Jogo::Check_Winner() { jogador p1; //horizontal and vertical for (int i = 0; i < 3; i++) { if ((this->tab.GetMatriz_posicao(i, 0) == this->tab.GetMatriz_posicao(i, 1)) && (this->tab.GetMatriz_posicao(i, 0) == this->tab.GetMatriz_posicao(i, 2)) && (this->tab.GetMatriz_posicao(i, 0) == 'O' || this->tab.GetMatriz_posicao(i, 0) == 'X')) //check horizontal lines { return this->tab.GetMatriz_posicao(i, 0); } if (this->tab.GetMatriz_posicao(0, i) == this->tab.GetMatriz_posicao(1, i) && (this->tab.GetMatriz_posicao(0, i) == this->tab.GetMatriz_posicao(2, i)) && (this->tab.GetMatriz_posicao(0, i) == 'O' || this->tab.GetMatriz_posicao(0, i) == 'X')) //check vertical lines { return this->tab.GetMatriz_posicao(0, i); } } if ((this->tab.GetMatriz_posicao(1, 1) == this->tab.GetMatriz_posicao(2, 2) && this->tab.GetMatriz_posicao(1, 1) == this->tab.GetMatriz_posicao(0, 0)) || (this->tab.GetMatriz_posicao(2, 0) == this->tab.GetMatriz_posicao(1, 1) && (this->tab.GetMatriz_posicao(2, 0) == this->tab.GetMatriz_posicao(0, 2))) && (this->tab.GetMatriz_posicao(1, 1) == 'O' || this->tab.GetMatriz_posicao(1, 1) == 'X')) //check diagonal lines { return this->tab.GetMatriz_posicao(1, 1); } else return '?'; } void Jogo::Validate_Winner(char caux) { //empate if (caux == '?') { cout << "O tabuleiro está cheio.Nenhum jogador como 3 símbolos em uma linha.É UM EMPATE!" << endl; // se estiver jogando 1 jogador e um computador if (this->bot) this->player1.Calcula_experiencia(0); //atualizar jogador experiencia //se estiver jogando 2 jogadores else if (!this->bot) { this->player1.Calcula_experiencia(0); //atualizar jogador experiencia this->player2.Calcula_experiencia(0); //atualizar jogador experiencia } } //jogador1 ganha if (caux == this->player1.GetSimbolo()) { cout << this->player1.GetNome() << "foi o primeiro a obter 3 símbolos em uma linha." << this->player1.GetNome() << " won!" << endl; this->player1.Calcula_experiencia(1); //se estiver jogando 2 jogadores if (!this->bot) this->player2.Calcula_experiencia(0); } //se jogador2 ou bot1 ganhar if (this->bot) //brincando com bot { //bot1 ganha if (caux == this->bot1.GetSimbolo()) { cout << "O computador foi o primeiro a receber 3 símbolos em uma linha. Computador vence!" << endl; this->player1.Calcula_experiencia(0); } } else if (!this->bot) //jogando com o player2 { //jogador2 ganha if (caux == this->player2.GetSimbolo()) { cout << this->player2.GetNome() << "foi o primeiro a obter 3 símbolos em uma linha." << this->player2.GetNome() << " Ganhou!" << endl; this->player2.Calcula_experiencia(1); this->player1.Calcula_experiencia(0); } } Sleep(3000); //pare o jogo por 3 segundos } void Jogo::ResetGame() { this->tab = Tabuleiro(); this->count = 0; this->player1.Game_Reset(); if (this->bot) this->bot1.reset(); else this->player2.Game_Reset(); } int Jogo::Play_Again() { int aux; do { do { system("CLS"); cout << "1 - jogar novamente" << endl << "2 - Verificar as estatísticas do jogador" << endl << "3 - Retornar ao menu" << endl << " Opcao: "; cin >> aux; if (aux == 2)//estatísticas do jogador this->Show_Player_Stats(); } while (aux == 2); if (aux < 1 || aux > 3)//validar opção { cout << "Insira uma opcao valida;"; Sleep(3000); } } while (aux < 1 || aux > 3); return aux++; //+1 porque no begin_game, a opção 2 é reproduzida novamente; } void Jogo::Show_Player_Stats() { system("CLS"); this->player1.show(); if (!this->bot)//contra jog2 this->player2.show(); system("PAUSE"); } void Jogo::Empty_Save_File() { ofstream os; os.open("reload_game.txt"); if (!os.is_open()) { cout << "ERROR file reload_game(empty)" << endl; return; } os.close(); } void Jogo::Complete_Game(int option, int f2p) { int auxoption = option; int aux = -1; // aux que ajuda decido quem está jogando char caux; //aux que ajuda a identificar quem ganhou do { this->Save_Mode(); //salvar o modo de jogo; system("CLS"); caux = '?'; // redefinir variavel //inicio if (f2p == -1) //novo jogo aux = this->Begin_Game(auxoption); // selecione o jeito de começar o jogo else if (f2p == 0 || f2p == 1) //jogo guardado aux = f2p; this->tab.DesenhaTabuleiro(); //Meio do jogo do { this->count++; this->Make_Play(aux); //os jogadores fazem suas jogadas system("CLS"); this->tab.DesenhaTabuleiro(); this->Save(aux); // salva automaticamente o jogo if (this->count >= 5) caux = this->Check_Winner(); //verifique se existe algum vencedor } while ((this->count < 9) && (caux == '?')); //End Game this->Validate_Winner(caux); //validar vencedor this->Empty_Save_File(); //esvazia o arquivo porque o jogo terminou this->ResetGame(); } while ((auxoption = this->Play_Again()) == 1); } Ola no jogo do galo da me um erro na classe jogo diz " 'jogador':cannot instantiate abstract class " eu nao estou a conseguir resolver, uma ajudinha dava jeito.
  7. @devair1010 Entao eu tenho que criar na funçao campeonato essa funçao. #pragma once #include "Jogo.h" using namespace std; class Campeonato:public Jogo { private: int c1, c2; //conta a quantidade de vitórias no campeonato para cada jogador int contador_jogo; //conta quantos jogos foram jogados public: Campeonato(); Campeonato(int contadorjog1, int contadorjog2, int _contador, int contadorjogo, jogador _jog1, jogador _jog2, Computador computador1, Tabuleiro novotabuleiro, bool _computador); ~Campeonato();//destrutor //sets e gets void Set_C1(int contadorjog1) { this->c1 = contadorjog1; } int Get_C1() { return this->c1; } void Set_C2(int contadorjog2) { this->c2 = contadorjog2; } int Get_C2() { return this->c2; } void Set_Countgames(int contadorjogo) { this->contador_jogo = contadorjogo; } int Get_Countgames() { return this->contador_jogo; } //outros void FullReset(); //Isto e para mudar um reset de um mod de um jogo //alterar a redefinição do gamemod void operator=(Campeonato novocampeonato); //Começar o jogo int Read();//carregar jogo bool EndedGame(int *aux);//verifica se o jogo esta terminado void Save_Mode();// salva o modo de jogo // modo = 1-> classico vs computador // = 2 -> clássico contra jogador // = 3 -> campeonato contra bot // = 4 -> campeonato contra jogador //Meio do jogo void Validate_Game_Winner(char caux, int *aux);//verifica cada vencedor do jogo e redefine quem joga primeiro no próximo jogo // o jogador que vence o jogo anterior tem a vantagem de começar a jogar primeiro no próximo // * aux que ajuda a definir quem é o primeiro a jogar o próximo jogo; // caux identifica quem ganhou void Show_score(int i);//mostra pontuaçao, i = número do jogo void Save(int aux);//guarda o jogo , aux é o primeiro a jogar // Fim do Jogo void ResetGame();// reset para iniciar outro jogo void Validate_Winner();// verificar quem ganhou o campeonato //Jogo completo void Complete_Game(int option, int f2p);// cada jogo tem um vencedor. Então esse vencedor tem uma vantagem para o próximo jogo. // Ele começa a jogar primeiro. }; #include "pch.h" #include "Campeonato.h" Campeonato::Campeonato() { Jogo::Jogo(); c1 = 0;//c1 é o contador do jogador 1 c2 = 0;//c 2 é o contador do jogador2 contador_jogo = 1;//contador de jogos } Campeonato::Campeonato(int contadorjog1, int contadorjog2, int _contador, int contadorjogo, jogador _jog1, jogador _jog2, Computador computador1, Tabuleiro novotabuleiro, bool _computador) :Jogo(novotabuleiro, _jog1, _jog2, computador1, _contador, _computador) { c1 = contadorjog1; c2 = contadorjog2; contador_jogo = contadorjogo; } Campeonato::~Campeonato() { } void Campeonato::FullReset() { Jogo::FullReset(); Campeonato(); } void Campeonato::operator=(Campeonato novocampeonato) { this->player1 = novocampeonato.player1; this->player2 = novocampeonato.player2; this->bot1 = novocampeonato.bot1; this->SetBOT1(novocampeonato.GetBOT1()); this->count = novocampeonato.count; this->tab = novocampeonato.tab; this->c1 = novocampeonato.c1; this->c2 = novocampeonato.c2; this->contador_jogo = novocampeonato.contador_jogo; } int Campeonato::Read() { int aux; ifstream is; is.open("reload_game.txt"); if (!is.is_open()) { cout << "ERROR ficheiro reload_game.txt(read)"; return -1; } is >> this->contador_jogo; is.ignore(INT16_MAX, ';'); is >> Jogo::count; is.ignore(INT16_MAX, ';'); is >> aux; if (Jogo::GetBot()) { this->player1.Read(is); this->bot1.Read(is); } else if (!Jogo::GetBot()) { this->player1.Read(is); this->player2.Read(is); } this->tab.Read(is); is.close(); return aux; } bool Campeonato::EndedGame(int * aux) { *aux = this->Read(); if (this->contador_jogo == 10) //verifique se o campeonato terminou { if ((Jogo::count == 9) || (Jogo::Check_Winner() == 'O') || (Jogo::Check_Winner() == 'X')) { cout << "Todos os jogos terminaram!" << endl; Sleep(5); return true; } } else { if ((Jogo::count == 9) || (Jogo::Check_Winner() == 'O') || (Jogo::Check_Winner() == 'X')) // verifica se o jogo terminou { this->contador_jogo++; Jogo::ResetGame(); } return false; } } void Campeonato::Save_Mode() { ofstream os; os.open("mode.txt"); if (!os.is_open()) { cout << "ERROR ficheiro mode.txt (save)" << endl; return; } if (this->GetBot() == true) //vs computador os << "3"; else //vs jogador 2 os << "4"; os.close(); } void Campeonato::Validate_Game_Winner(char caux, int * aux) { Jogo::Validate_Winner(caux); if (caux == Jogo::player1.GetSimbolo()) { this->c1++; *aux = 1; // como o jogador1 ganhou o último jogo, ele é o primeiro a jogar o próximo jogo } else if (((caux == Jogo::player2.GetSimbolo()) && (!Jogo::GetBot())) || ((caux == Jogo::bot1.GetSimbolo()) && (Jogo::GetBot()))) { this->c2++; *aux = 0; // como o jogador2 ou o computador ganhou o último jogo, eles são os primeiros a jogar no próximo jogo } } void Campeonato::Show_score(int i) { cout << Jogo::player1.GetNome() << " tem " << c1 << " vitorias em " << i << " jogos." << endl; if (!Jogo::GetBot())//jogador2 { cout << Jogo::player2.GetNome() << " tem " << c2 << " vitorias em " << i << " jogos." << endl; } else if (Jogo::GetBot()) //comptador1 { cout << "Computador tem " << c2 << " vitorias em " << i << " jogos." << endl; } } void Campeonato::Save(int aux) { ofstream os; os.open("reload_game.txt"); if (!os.is_open()) return; os << this->contador_jogo << ";" << Jogo::count << ";" << aux << endl; //estado do jogo if (Jogo::GetBot()) {//informação do jogador Jogo::player1.Save(os); Jogo::bot1.Save(os); } else {//informação do jogador Jogo::player1.Save(os); Jogo::player2.Save(os); } Jogo::tab.Save(os); //estado do tabuleiro os.close(); } void Campeonato::ResetGame() { Jogo::ResetGame(); this->c1 = 0; this->c2 = 0; } void Campeonato::Validate_Winner() { if (this->c1 > this->c2) { if (Jogo::GetBot()) { cout << "1º Lugar: " << Jogo::player1.GetNome() << endl; cout << "2º Lugar: Computador" << endl; } else if (!Jogo::GetBot()) { cout << "1º Lugar: " << Jogo::player1.GetNome() << endl; cout << "2º Lugar: " << Jogo::player2.GetNome() << endl; } } else if (this->c1 < this->c2) { if (Jogo::GetBot()) { cout << "1º Lugar: Computador" << endl; cout << "2º Lugar: " << Jogo::player1.GetNome() << endl; } else if (!Jogo::GetBot()) { cout << "1º Lugar: " << Jogo::player2.GetNome() << endl; cout << "2º Lugar: " << Jogo::player1.GetNome() << endl; } } else if (this->c1 == this->c2) cout << "Campeonato empatado" << endl; Sleep(3000); // pare o jogo por 3 segundos } void Campeonato::Complete_Game(int option, int f2p) { //cada jogo tem um vencedor.Então esse vencedor tem uma vantagem para o próximo jogo. // Ele começa a jogar primeiro. int auxoption = option; int aux = -2; //aux que ajuda a identificar quem joga primeiro char caux; //aux que ajudam a identificar o vencedor this->Save_Mode(); //guarda modo do { system("CLS"); //início if (f2p == -1) //novo jogo aux = Jogo::Begin_Game(auxoption); // selecione o jeito de começar o jogo else if (f2p == 0 || f2p == 1) //guarda jogo aux = f2p; //Meio do jogo for (this->contador_jogo; this->contador_jogo < 11; this->contador_jogo++) //jogos de campeonato { caux = '?'; //anuncio o jogo if (Jogo::count == 0) { cout << "Game " << this->contador_jogo << " is starting..." << endl; Sleep(3000); } system("CLS"); Jogo::tab.DesenhaTabuleiro(); do //jogo { Jogo::count++; Jogo::Make_Play(aux); //os jogadores fazem suas jogadas system("CLS"); Jogo::tab.DesenhaTabuleiro(); this->Save(aux); //salvar automaticamente o jogo toda vez que um jogador jogar if (Jogo::count >= 5) caux = Jogo::Check_Winner(); //verifique se existe algum vencedor } while ((Jogo::count < 9) && (caux == '?')); this->Validate_Game_Winner(caux, &aux); //validar vencedor do jogo system("CLS"); this->Show_score(this->contador_jogo); // mostrar pontuação do jogador this->Save(aux); //na fase final do jogo ele sofre alteraçoes e necessita de ser guardado Jogo::ResetGame(); //jogo de reset system("PAUSE"); } //Jogo final this->Validate_Winner(); Jogo::Empty_Save_File(); //esvazie o ficheiro porque o jogo terminou this->ResetGame(); } while ((auxoption = Jogo::Play_Again()) == 2); }
  8. Ola, alguem me pode dar uma ajuda no jogo do galo tenho que implementar uma funçao na classe campeonato que me indique qual foi a posiçao mais vezes escolhidas pelos jogadores para ser a primeira a ser jogada. Estou um pouco a nora nao sei bem como fazer isso
  9. @AnsiC pode me dar um exemplo? nao percebo a sobrecarga para o ponto por exemplo é fácil de fazer mas esta com arrays estou a nora
  10. @AnsiC nao estou usando nenhum livro, é para a cadeira de lab temos que criar o jogo do galo na classe tabuleiro tenho: .cpp: #include "pch.h" #include "tabuleiro.h" #include <iostream> using namespace std; tabuleiro::tabuleiro() {//CONSTRUTOR POR DEFEITO int x, y; sup_esq.Set_x(20); sup_esq.Set_y(15); //A MATRIZ É INICIALIZADA A ZEROS for (x = 0; x< 3; x++) { for (y = 0; y < 3; y++) { tab[x][y] = ' '; } } } tabuleiro::~tabuleiro() {//DESTRUTOR } void tabuleiro::desenhar(void) { cout << "\n\n\n\n"; cout << "\n" << "\t 1 2 3\n\n\n"; // coloca os numeros 0, 1 e 2 para identificar ao jogador as colunas da matriz : na linha - cout << " 1" << "\t";//coloca o 0 na primeira linha da matriz para indicar a primeira linha ao jogador : na lateral | //desenha a parte inicial da matriz cout << tab[0][0] << " | " << tab[0][1] << " | " << tab[0][2] << "\n" << "\t---|---|--- \n"; //coloca o 1 na segunda linha da matriz para indicar a segunda linha ao jogador : na lateral | cout << " 2" << " \t"; //desenha a parte central da matriz cout << tab[1][0] << " |" << tab[1][1] << " | " << tab[1][2] << "\n" << "\t---|---|---\n"; //coloca o 2 na terceira linha da matriz para indicar a terceira linha : na lateral | cout << " 3" << "\t"; //desenha a parte final da matriz cout << tab[2][0] << " |" << tab[2][1] << " | " << tab[2][2] << "\n" << endl; cout << "\n \n "; } void tabuleiro::gotoxy(int x, int y) { CursorPosition.X = x; CursorPosition.Y = y; SetConsoleCursorPosition(console, CursorPosition); } bool tabuleiro::operator == (const tabuleiro T)const { /*for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { if (tab[i][j] != T[i][j]) { // Return an error, or print "error there is a duplicate value" etc } } }*/ return false; } .h #pragma once #include "ponto.h" #include "jogador.h" class tabuleiro { private: ponto sup_esq; char tab[3][3]; //buscado no side - utilizado para colocar o cursor na posiçao HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); COORD CursorPosition; public: tabuleiro(); virtual ~tabuleiro(); void desenhar(void); void gotoxy(int x, int y); //metodo para as coordenadas que desenham void SetTab(ponto p, jogador s) { p.Get_x(); p.Get_y(); s.nomes(); } int GetTab(void) { return tab[3][3]; } bool operator ==(const tabuleiro tab)const; }; tenho a sobrecarga dos operadores == como comentario porque ela da erro
  11. Ola estou a tentar fazer uma sobrecarga do operador == para a classe tabuleiro, jogo do galo . Mas da me erro e nao percebo o porque. bool tabuleiro::operator == (const tabuleiro T)const { for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { if (tab[i][j] != T[i][j]) { // Return an error, or print "error there is a duplicate value" etc } } } }
  12. ola, num exemplo do uso do manipulador setprecion aparece : cout.setf(ios::floatfield,ios::fixed) alguem me pode explicar o que é isso? e para q serve ? codigo do exemplo: #include <iostream> #include <iomanip> #include <stdlib.h> using namespace std; int main(){ cout<<"Precisao global ... " << endl; cout <<" 5 digitos, parte inteira e parte decimal" << setprecision(6) << 1234.537<<endl<<endl; //a virgula nao conta cout<<"6 digito,parte inteira e parte decimal"<<setprecision(6)<<1234.537<<endl<<endl; cout<<"Precisao da parte decimal...."<<endl; cout.setf(ios::floatfield,ios::fixed); cout<<"2 digitos na parte decimal"<<setprecision (2) <<1234.537 <<endl; cout<<"5 digitos na parte decimal"<<setprecision(5)<<1234.537<<endl; system("pause"); return 0; }
  13. ola estou com uma duvida na implementação deste exercício: Exercício: Implemente a sobrecarga dos operadores "==","!=" , que faz comparaçao do nome e data de nascimento.No programa verifique se 2 pessoas sao iguais. Eu tenho feito a sobrecarga dos operadores para data mas nao sei fazer o que pede o exercicio .. bool Data::operator == (Data data)const{ if(data.ano!=ano||data.mes!=mes || data.dia!=dia) return(false); return(true);
  14. _rsd_17

    C++ sobrecarga de operadores >>

    @AnsiC entao com o meu codigo é assim? int main(){ Data d3; cin>>data3; return 0; }
  15. @devair1010 meu bem estou a aprender a programar a c++ entao tem mesmo que ser em c++
  16. @devair1010 o problema é que o exercicio pede para ler com ponto e virgula
  17. _rsd_17

    C++ sobrecarga de operadores >>

    @AnsiC nenhum é um exercicio.
  18. ola, eu queria implementar a sobrecarga do operador >> no main para que leia os dados do novo objeto data atraves do teclado , mas nao sei como fazer isso. istream & operator >> (istream &is, Data &data) { int aux; cout << "Dia: "; is >> aux; data.SetDia(aux); cout << "Mês: "; is >> data.mes; cout << "Ano: "; is >> data.ano; return is; }
  19. Eu ja fiz o código e ele corre bem o problema é que nao le os nomes do ficheiro se estes estiverem separados por ponto e virgula. Como faço para que leia? esquema: nome;num;idade; nome;num;idade; nome;num;idade; #include <iostream> #include <fstream> #include <stdlib.h> using namespace std; int main(){ ifstream input; char nome[30]; int num, idade; input.open("dados_ent.txt"); if(!input){ cout << "Erro ao abrir o ficheiro"; exit(1); } while(input>>nome>>num>>idade>>){ cout << "nome: "<<nome<<endl; cout <<"num: "<< num<<endl; cout<<"idade: "<<idade<<endl; } input.close(); system("pause"); return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!