Ir ao conteúdo
  • Cadastre-se

C jogo da velha em c


JVGS1111
Ir à solução Resolvido por devair1010,

Posts recomendados

boa noite, estou tentado aprender a logica do jogo da velha em c estruturado e depois vou converter o codigo para java orientado a objeto, mas não estou conseguindo terminar o código, esta dando algum erro na execução, 

imagina o que pode ser ?

desde já obrigado 😀

#include <stdio.h>
#include <stdlib.h>


int main() {
	
	const char pt = '.';
	unsigned char m[3][3] = {{pt,pt,pt}, {pt,pt,pt}, {pt,pt,pt}};
	
	int lin, col, j = 0;
	int lin1, col1;
	
	const int TRUE = 1;
	const char O = 'O', X = 'x';
	
	printf("Digite coordenadas na fomra linha e coluna :\n");
	
	while(TRUE)
	{
		for(lin1 = 0; lin1 < 3; lin1++)
		{
			for(col1 = 0; col1 < 3; col1++)
				printf("%c", m[lin1][col1]);	
			printf("\n");
		}
		
		if	((m[0][0]==O && m[0][1]==O && m[0][2]==O)||
			(m[1][0]==O && m[1][1]==O && m[1][2]==O)||
			(m[2][0]==O && m[2][1]==O && m[2][2]==O)||
			(m[0][0]==O && m[1][0]==O && m[2][0]==O)||
			(m[0][1]==O && m[1][1]==O && m[2][1]==O)||
			(m[0][2]==O && m[1][2]==O && m[2][2]==O)||
			(m[0][0]==O && m[1][1]==O && m[2][2]==O)||
			(m[0][2]==O && m[1][1]==O && m[2][0]==O))
			{
				printf("\a voce ganhou, PRIMEIRO jogador!!!\n");
				break;
			}
		if	((m[0][0]==X && m[0][1]==X && m[0][2]==X)||
			(m[1][0]==X && m[1][1]==X && m[1][2]==X)||
			(m[2][0]==X && m[2][1]==X && m[2][2]==X)||
			(m[0][0]==X && m[1][0]==X && m[2][0]==X)||
			(m[0][1]==X && m[1][1]==X && m[2][1]==X)||
			(m[0][2]==X && m[1][2]==X && m[2][2]==X)||
			(m[0][0]==X && m[1][1]==X && m[2][2]==X)||
			(m[0][2]==X && m[1][1]==X && m[2][0]==X))
			{
				printf("\a voce ganhou, SEGUNDO jogador!!!\n");
				break;
			}
		if (j == 9){
			printf("\aempatou\n");
			break;
		}
		printf("Coordenada: ");
		scanf("%d%d", &lin, &col);
		
		if(m[lin][col] == pt){
			
			if(j% 2){
				m[lin][col] = X;
			}
			else {
				m[lin][col] = O;
			}
				j++; 
		}
	}
	
	system("PAUSE");
	return 0;
}

 

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

  • Solução

@JVGS1111      testei seu código aqui , e ele está funcionando bem , não deu nenhum erro , 

#include <stdio.h>
#include <stdlib.h>
int testar( unsigned char m[][3], char c ){
    int j,i,k,w,z=0;
    for(i=0; i<3; i++){
        k=0;w=0;
        for(j=0; j<3; j++){
            if( m[i][j] == c )k++;
            if( m[j][i] == c )w++;
            if( i == j && m[j][i] == c )z ++;
        }
        if( k == 3 || w == 3 || z == 3 )return 8192;
    }
    return 16384;
}
int main(){
    const char pt = '.';
    unsigned char m[3][3] = { pt,pt,pt, pt,pt,pt, pt,pt,pt };
    int lin, col, j = 0,
        jogador     = 0,
        lin1, col1     ;
    const char O = 'O' ,
               X = 'x' ;
    printf("Digite coordenadas na fomra linha e coluna :\n");
    while( 1 ){
        printf("\n");
        for(lin1 = 0; lin1 < 3; lin1++){
            printf("\t");
            for(col1 = 0; col1 < 3; col1++)
                printf("%c ", m[lin1][col1]);
            printf("\n");
        }
        printf("\n");
        if( testar(m,O) == 8192 ||
            m[0][2]     == O    &&
            m[1][1]     == O    &&
            m[2][0]     == O    ){
            printf("\a voce ganhou, PRIMEIRO jogador . !\n");
            printf("\n");
            break;
        }
        else
            if( testar(m,X) == 8192 ||
                m[0][2]     == X    &&
                m[1][1]     == X    &&
                m[2][0]     == X    ){
                printf("\a voce ganhou, SEGUNDO jogador . .!\n");
                break;
            }
            else
                if( j == 9 ){
                    printf("\aempatou . . . !\n");
                    break;
                }
        printf("Jogador  <  %d  >  CoordenadaS : ",jogador+1);
        scanf("%d%d", &lin, &col);
        jogador = ! jogador;
        if(m[lin][col] == pt){
            if( j % 2 ){
                m[lin][col] = X;
            }
            else{
                m[lin][col] = O;
            }
            j++;
        }
    }
    system("PAUSE");
    return 32768;
}

 

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

public class GlobalMembers
{
	public static void main(String[] args)
	{

		final char pt = '.';
	//C++ TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
	//ORIGINAL LINE: unsigned char m[3][3] = {{pt,pt,pt}, {pt,pt,pt}, {pt,pt,pt}};
		byte[][] m =
		{
			{pt, pt, pt},
			{pt, pt, pt},
			{pt, pt, pt}
		};

		int lin;
		int col;
		int j = 0;
		int lin1;
		int col1;

		final int TRUE = 1;
		final char O = 'O';
		final char X = 'x';

		System.out.print("Digite coordenadas na fomra linha e coluna :\n");

		while (TRUE != 0)
		{
			for (lin1 = 0; lin1 < 3; lin1++)
			{
				for (col1 = 0; col1 < 3; col1++)
				{
					System.out.printf("%c", m[lin1][col1]);
				}
				System.out.print("\n");
			}

			if ((m[0][0] == O && m[0][1] == O && m[0][2] == O) || (m[1][0] == O && m[1][1] == O && m[1][2] == O) || (m[2][0] == O && m[2][1] == O && m[2][2] == O) || (m[0][0] == O && m[1][0] == O && m[2][0] == O) || (m[0][1] == O && m[1][1] == O && m[2][1] == O) || (m[0][2] == O && m[1][2] == O && m[2][2] == O) || (m[0][0] == O && m[1][1] == O && m[2][2] == O) || (m[0][2] == O && m[1][1] == O && m[2][0] == O))
			{
					System.out.print("\a voce ganhou, PRIMEIRO jogador!!!\n");
					break;
			}
			if ((m[0][0] == X && m[0][1] == X && m[0][2] == X) || (m[1][0] == X && m[1][1] == X && m[1][2] == X) || (m[2][0] == X && m[2][1] == X && m[2][2] == X) || (m[0][0] == X && m[1][0] == X && m[2][0] == X) || (m[0][1] == X && m[1][1] == X && m[2][1] == X) || (m[0][2] == X && m[1][2] == X && m[2][2] == X) || (m[0][0] == X && m[1][1] == X && m[2][2] == X) || (m[0][2] == X && m[1][1] == X && m[2][0] == X))
			{
					System.out.print("\a voce ganhou, SEGUNDO jogador!!!\n");
					break;
			}
			if (j == 9)
			{
				System.out.print("\aempatou\n");
				break;
			}
			System.out.print("Coordenada: ");
			String tempVar = ConsoleInput.scanfRead();
			if (tempVar != null)
			{
				lin = Integer.parseInt(tempVar);
			}
			String tempVar2 = ConsoleInput.scanfRead();
			if (tempVar2 != null)
			{
				col = Integer.parseInt(tempVar2);
			}

			if (m[lin][col] == pt)
			{

				if ((j % 2) != 0)
				{
					m[lin][col] = X;
				}
				else
				{
					m[lin][col] = O;
				}
					j++;
			}
		}

		system("PAUSE");
	}
}

 

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