Ir ao conteúdo
  • Cadastre-se

C++ verificar qual o simbolo mais usado


_rsd_17

Posts recomendados

@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);
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!