Ir ao conteúdo

Posts recomendados

Postado

Olá boa noite amigos, estou a desenvolver um jogo em c++ estilo "tiktak toe" (jogo da velha.. jogo do galo...) e o programa consiste em nós pudermos escolher se conseguimos jogar contra a máquina ou contra algum player, até agora consegui fazer tudo direitinho mas não consigo colocar o programa a jogar contra o PC e preciso de entregar o trabalho para esta semana! gostava de saber se alguém pode ajudar, vou disponibilizar aqui o código para darem uma olhada:

 <

#include <iostream>
#include <stdlib.h>
#include <string>
#include <locale>

#define VERMELHO     "\x1b[31m"
#define VERDE   "\x1b[32m"
#define AZUL    "\x1b[34m"
#define RESET   "\x1b[0m"

using namespace std;
void init(int board[] [3]);
char printBlock(int block);
void show (int board[] [3]);
void playMove (int board[] [3], int);
int checkContinue (int *board[3]);
int checkWIn (int *board[3]);
int game (int board[] [3]);
void scoreboard (int, int &, int &);
string nome1, nome2;
int main()
{
   
   
int board [3][3];
int cont=0, player1=0, player2=0, result;


char s;
setlocale(LC_ALL,"Portuguese");
cout<<"********************* "<<endl;
cout<<"*   JOGO DO GALO!   *"<<endl;
cout<<"********************* "<<endl;
cout<<"Clique em ENTER para começar!"<<endl;
cin.get();
system("clear||cls");
cout<<"OLA! BEM-VINDO AO JOGO DO GALO, AS REGRAS SÃO SIMPLES! VAMOS LÁ REVER!!"<<endl;
cout<<"clica em ENTER para passar de regra em regra!"<<endl;
cin.get();
cout<<"REGRA 1: Arranja um amigo para jogar contigo pois o jogo só funciona com 2 jogadores"<<endl;
cin.get();
cout<<"REGRA 2: Nenhum jogador pode tentar jogar em algum casa já preenchida"<<endl;
cin.get();
cout<<"REGRA 3: A linha de peças iguais pode ser construida na vertical, na horizontal ou na oblíqua"<<endl;
cin.get();
cout<<"REGRA 4: Os dois jogadores colocam, alternadamente, as suas peças de forma a construirem uma linha com 3 peças iguais em tabuleiros 3 × 3";
cin.get();
cout<< "AGORA QUE ESTÁS PRONTO PARA JOGAR VAMOS LÁ COMEÇAR!!"<<endl;
cout<<"ENTER para prosseguir!"<<endl;
cin.get();
system("clear||cls");
cout<<"Insere o nome do primeiro jogador: ";
cin>>nome1;
cout<<"Insere o nome do segundo jogador: ";
cin>>nome2;
system("clear||cls");
cout<<"Olá "<<nome1<<" bem-vindo, a partir de agora és o jogador 1"<<endl;
cout<<"Olá "<<nome2<<" bem-vindo, a partir de agora és o jogador 2"<<endl;
cin.get();
do{
    init(board);
    result=game(board);
    show(board);
    scoreboard(result, player1, player2);
    cout<<RESET"\n Outra partida?"<<endl;
    cout<<RESET"0. Sair"<<endl;
    cout<<RESET"1. Jogar de novo."<<endl;
    cin>>cont;
  }while(cont);
  return 0;
}
void init(int board[][3])
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
board[i][j]=0;
}
char printBlock(int block)
{
if(block==0)
return ' ';
else if(block==1)
cout<<VERDE " X";
else
cout<<AZUL " O";
}
void show(int board[][3])
{
cout<<endl;
for(int row=0; row<3; row++){
cout<<" "<<printBlock(board[row][0])<<VERMELHO " |";
cout<<" "<<printBlock(board[row][1])<<VERMELHO" |" ;
cout<<" "<<printBlock(board[row][2])<<endl;

if(row!=2){
cout<<VERMELHO"___ ___ ___" RESET "\n"<<endl;
}
}
}
void playMove(int board[][3], int player)
{
int row, col, check;
do{
cout<<"Linha: ";
cin>>row;
cout<<"Coluna: ";
cin>>col;
row--;col--;
check=board[row][col] || row <0 || row>2 || col<0 || col>2;
if(check)
cout<<"Essa casa não está vazia ou está fora do intervalo 3x3"<<endl;
}while(check);
if(player==0)
board[row][col]=1;
else
board[row][col]=-1;
}
int checkContinue(int board[][3])
{
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
 if(board[i][j]==0)
  return 1;
return 0;
}
int checkWin(int board[][3])
{
int row, col, sum;
for(row=0; row<3; row++){
sum=0;
for(col=0; col<3; col++)
sum+=board[row][col];
if(sum==3)
return 1;
system("clear||cls");

if(sum==-3)
return -1;
system("clear||cls");

}
for(col=0; col<3; col++){
sum=0;
for(row=0; row<3; row++)
sum+= board[row][col];
if(sum==3)
return 1;
system("clear||cls");

if(sum==-3)
return -1;
system("clear||cls");

}
sum=0;
for(row=0; row <3; row++)
sum += board[row][row];
if(sum==3)
return 1;
system("clear||cls");
if(sum==-3)
return -1;
system("clear||cls");


sum=board[0][2]+board[1][1]+board[2][0];
if(sum==3)
return 1;
if(sum==-3)
return -1;

return 0;
}
int game(int board[][3])
{
int turn=0, cont, win;
do{
show(board);
if (1+turn%2==1){
cout<<RESET""<<nome1<<endl;
}else{
cout<<RESET ""<<nome2<<endl;
}

playMove(board, turn%2);
turn++;
cont=checkContinue(board);
win=checkWin(board);
}while(cont && !win);
if(win==1){
cout<<nome1<<" ganhou!\n"<<endl;
return 1;
}else
if(win==-1){
cout<<nome2<<" ganhou!\n"<<endl;
return 2;
}else
cout<<"Empate\n"<<endl;
return 0;
}
void scoreboard(int result, int &player1, int &player2)
{
if(result==1)
player1++;
if(result==2)
player2++;
cout<<"\nPlacar: "<<endl;
cout<<player1<<"x"<<player2<<endl;
}

>

  • Amei 1
Postado

@heldersantos    seu jogo da Velha está funcionando bem , e joga contra o PC ,  e o que vi foi que essas cores que você está usando e sem a biblioteca Windows.h , são muito ruim mesmo , pois não se consegue viZualizar naDa que esteja escrito na tela ,  e então se você Quiser / Puder colocar a biblioteca

 #nclude <Windows.h>

na minha opinião , seria melhor , e seu código ficaria assim  :

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdlib.h>
#include <string>
#include <locale>
#include <Windows.h>

#define AMARELO   "\x1b[35m"
#define VERMELHO  "\x1b[31m"
#define VERDE     "\x1b[32m"
#define AZUL      "\x1b[34m"
#define RESET     "\x1b[0m"
void cores(int, int);
void delay( float );
using namespace std;
void init(int board[][3]);
char printBlock(int block);
void show(int board[][3]);
void playMove(int board[][3], int);
int checkContinue(int* board[3]);
int checkWIn(int* board[3]);
int game(int board[][3]);
void scoreboard(int, int&, int&);
string nome1, nome2;
int main()
{
    cores(0, 15);
    system("cls");
    int board[3][3];
    int cont = 0, player1 = 0, player2 = 0, result;
    char s;
    // setlocale(LC_ALL, "Portuguese");
    /*cout << "********************* " << endl;
    cout << "*   JOGO DO GALO!   *" << endl;
    cout << "********************* " << endl;
    cout << "Clique em ENTER para começar!" << endl;
    cin.get();*/
    system("clear||cls");
    /*cout << "OLA! BEM-VINDO AO JOGO DO GALO, AS REGRAS SÃO SIMPLES! VAMOS LÁ REVER!!" << endl;
    cout << "clica em ENTER para passar de regra em regra!" << endl;
    cin.get();
    cout << "REGRA 1: Arranja um amigo para jogar contigo pois o jogo só funciona com 2 jogadores" << endl;
    cin.get();
    cout << "REGRA 2: Nenhum jogador pode tentar jogar em algum casa já preenchida" << endl;
    cin.get();
    cout << "REGRA 3: A linha de peças iguais pode ser construida na vertical, na horizontal ou na oblíqua" << endl;
    cin.get();
    cout << "REGRA 4: Os dois jogadores colocam, alternadamente, as suas peças de forma a construirem uma linha com 3 peças iguais em tabuleiros 3 × 3";
    cin.get();
    cout << "AGORA QUE ESTÁS PRONTO PARA JOGAR VAMOS LÁ COMEÇAR!!" << endl;
    cout << "ENTER para prosseguir!" << endl;
    cin.get();
    system("clear||cls");
    cout << "Insere o nome do primeiro jogador: ";
    cin >> nome1;
    cout << "Insere o nome do segundo jogador: ";
    cin >> nome2;
    system("clear||cls");
    cout << "Olá " << nome1 << " bem-vindo, a partir de agora és o jogador 1" << endl;
    cout << "Olá " << nome2 << " bem-vindo, a partir de agora és o jogador 2" << endl;
    cin.get();*/
    nome1 = " kiko ";
    nome2 = " lolipop ";
    do {
        init(board);
        result = game(board);
        show(board);
        scoreboard(result, player1, player2);
        cout << RESET"\n Outra partida?" << endl;
        cout << RESET"0. Sair" << endl;
        cout << RESET"1. Jogar de novo." << endl;
        cin >> cont;
    } while (cont);
    return 0;
}
void init(int board[][3])
{
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            board[i][j] = 0;
}
char printBlock(int block)
{
    if (block == 0)
        return ' ';
    else if (block == 1)
    {
        cout << " " <<VERDE "X"; // (char)88
        return '\b';
    }
    else
        cout << AZUL  " O"; // (char)79
    return '\b'; // a função retorna alguma coisa
}                // e aqui vai retornar hum espaço a ré !
void show(int board[][3])
{
    cout << endl;
    for (int row = 0; row < 3; row++)
    {
        delay(0.2);
        cout << " " << printBlock(board[row][0]) << VERMELHO   " |";
        cout << " " << printBlock(board[row][1]) << VERMELHO   " |";
        cout << " " << printBlock(board[row][2]) <<            endl;
        if (row != 2) cout << VERMELHO"___ ___ ___" /*RESET*/ << "\n" << endl;
        //cores(0, 15);
    }
    cout << "\a" << endl;
}
void playMove(int board[][3], int player)
{
    int row, col, check;
    do {
        cout << " Linha --: ";
        cin >> row;
        cout << " Coluna -: ";
        cin >> col;
        row--; col--;
        check = board[row][col] || row < 0 || row>2 || col < 0 || col>2;
        if (check)
            cout << "Essa casa não está vazia ou está fora do intervalo 3x3" << endl;
    } while (check);
    if (player == 0)
        board[row][col] = 1;
    else
        board[row][col] = -1;
}
int checkContinue(int board[][3])
{
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            if (board[i][j] == 0)
                return 1;
    return 0;
}
int checkWin(int board[][3])
{
    int row, col, sum;
    for (row = 0; row < 3; row++) {
        sum = 0;
        for (col = 0; col < 3; col++)
            sum += board[row][col];
        if (sum == 3)
            return 1;
        system("clear||cls");

        if (sum == -3)
            return -1;
        system("clear||cls");

    }
    for (col = 0; col < 3; col++) {
        sum = 0;
        for (row = 0; row < 3; row++)
            sum += board[row][col];
        if (sum == 3)
            return 1;
        system("clear||cls");

        if (sum == -3)
            return -1;
        system("clear||cls");

    }
    sum = 0;
    for (row = 0; row < 3; row++)
        sum += board[row][row];
    if (sum == 3)
        return 1;
    system("clear||cls");
    if (sum == -3)
        return -1;
    system("clear||cls");


    sum = board[0][2] + board[1][1] + board[2][0];
    if (sum == 3)
        return 1;
    if (sum == -3)
        return -1;

    return 0;
}
int game(int board[][3])
{
    int turn = 0, cont, win;
    do 
    {
        show(board);
        if (1 + turn % 2 == 1) 
        {
            cores(15, 12);
            cout << /*RESET"" <<*/ "\n"<< nome1 << endl;
        }
        else {
            cout << /*RESET"" <<*/ "\n"<< nome2 << endl;
        }
        cores(0, 15);
        playMove(board, turn % 2);
        turn++;
        cont = checkContinue(board);
        win = checkWin(board);
    } while (cont && !win);
    if (win == 1) {
        cout << nome1 << " ganhou!\n" << endl;
        return 1;
    }
    else
        if (win == -1) {
            cout << nome2 << " ganhou!\n" << endl;
            return 2;
        }
        else
            cout << "Empate\n" << endl;
    return 0;
}
void scoreboard(int result, int& player1, int& player2)
{
    if (result == 1)
        player1++;
    if (result == 2)
        player2++;
    cout << "\nPlacar: " << endl;
    cout << player1 << "x" << player2 << endl;
}
void delay(float a)
{
    int j, i;
    for (j = 0; j < a*60000; j++)
        for (i = 0; i < a*60000; i++);
}
void cores(int letras, int fundo)
{
    SetConsoleTextAttribute(GetStdHandle( STD_OUTPUT_HANDLE ),
        letras + (fundo << 4));
}

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!