Jump to content

Jogo do galo


moris
 Share

Recommended Posts

Pessoal preciso de ajuda aqui no Jogo do Galo em C++...

Este é o meu código que tenho andado a usar e o que me falta é fazer com que as jogadas 'X' ou 'O' apareçam no tabuleiro.

#include <iostream>
#include <vector>
#include <string>

using namespace std;

class Tabuleiro {
public:

    Tabuleiro () {
vector<char> linha_vazia(3, ' ');

tab = vector<vector<char> >(3, linha_vazia);
    }

    bool jogada (int l, int c, char jogador) {
    	if ( l < 1 || l > 3 || 
         c < 1 || c > 3 || 
         tab[l-1][c-1] != ' ') {
    	return false;
	}
	tab[l-1][c-1] = jogador;	
	return true;
    }
    void desenha () {  
    	// l -> linha
        // c -> coluna
    
    	for (int l = 0; l < tab.size(); l++) {
    
    	    for (int c = 0; c < tab[l].size(); c++) {
    		cout << ' ' << tab[l][c] << ' ';
    	    
    	//
    	// Desenha divisoria entre colunas, excepto para a ultima coluna
    
    		if (c < tab[l].size() - 1) {
    		    cout << '|';
    		}
    	    }
    
     	//
        // Desenha divisoria entre linhas, excepto para a ultima linha
    
    	    if (l < tab.size() - 1) {
    		cout << endl << "---+---+---" << endl;
    	    }
    	} 
    }
    bool vitoria (char jogador) {
    //verificar vitória das o
    return ((tab[0][0]==jogador && tab[0][1]==jogador && tab[0][2]==jogador)||
                (tab[1][0]==jogador && tab[1][1]==jogador && tab[1][2]==jogador)||
            (tab[2][0]==jogador && tab[2][1]==jogador && tab[2][2]==jogador)||
            (tab[0][0]==jogador && tab[1][0]==jogador && tab[2][0]==jogador)||
            (tab[1][0]==jogador && tab[1][1]==jogador && tab[1][2]==jogador)||
            (tab[2][0]==jogador && tab[2][1]==jogador && tab[2][2]==jogador)||
            (tab[0][0]==jogador && tab[1][1]==jogador && tab[2][2]==jogador)||
            (tab[2][0]==jogador && tab[1][1]==jogador && tab[0][2]==jogador));
}
bool empate(){		
    //verificar empate
    int l,c;
    int ocupados=0;
    for(l=0; l < 3; l++)
        for(c=0; c < 3; c++)
            if(tab[l][c]!=' ')
                ocupados++;
    return ocupados == 9;
} 
    vector<vector<char> > tab;
}; 
    
int main(){
    Tabuleiro galo;
    char jogador;
    int posicao;
    int l, c;

jogador='X';
    
do {
        cout << "Vai jogar o " << jogador << "\n" << endl;
        galo.desenha();
        cout << "\n\nIndique a posicao onde pretende jogar: ";
        cin >> posicao;

        // Trocar de vez se jogada for valida
        if(jogador=='X')
            jogador='O';
        else    
            jogador='X';
            
    } while(!galo.vitoria('X') && !galo.vitoria('0')&&!galo.empate());
            galo.desenha();
     

if(galo.empate())
        cout << "O jogo terminou com um empate tecnico!\n";
    else if(galo.vitoria('X'))
        cout << "Vitoria do x\n";
    else if(galo.vitoria('O'))
        cout << "Vitoria do o\n";
    
        
    system("PAUSE");
    return 0;
}
Link to comment
Share on other sites

Depois de leres a posição que o jogador joga, faz-se atribuição na tua tabela. do valor do jogador.

Tens que definir os valores válidos para posição, por exemplo,

1,2, ...9

que corresponde  1 a 0,0  e 2 0,1 ... 9 a 2,2

e depois se o jogador escolher 9

fazes  tab[2][2]=jogador

O forúm já contém muitos tópicos sobre este jogo, usa a pesquisa para os encontrar.

Link to comment
Share on other sites

Não consigo fazer mais do que aquilo que já fiz e já estou a entrar em parafuso com o jogo 😉

Se alguém puder ajudar-me agradecia imenso.

Só preciso mesmo que apareçam as jogadas 'X' ou o 'O' dentro do tabuleiro e não sei onde fazer isso na parte do código.

Obrigado pela vossa atenção.

OBRIGADO

Link to comment
Share on other sites

Bem realmente com esforço e com alguma ajudazinha lá fui chegando...

Só me falta fazer com que uma jogada não possa ser repetida pelo outro jogador na mesma posição.

De resto acho que já está tudo tranquilo.

Obrigado pela ajuda a todos em especial Srª Sara que me ajudou a meter o tópico aqui no fórum.

Obrigado a todos.

Link to comment
Share on other sites

Bem realmente com esforço e com alguma ajudazinha lá fui chegando...

Só me falta fazer com que uma jogada não possa ser repetida pelo outro jogador na mesma posição.

De resto acho que já está tudo tranquilo.

Obrigado pela ajuda a todos em especial Srª Sara que me ajudou a meter o tópico aqui no fórum.

Obrigado a todos.

Link to comment
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
 Share

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