Ir ao conteúdo

C jogo da velha em c


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

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
  • Solução
Postado

@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
Postado
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

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!