Jump to content

Jogo do galo sem arrays


xico_colaco

Recommended Posts

xico_colaco

Boa tarde,

Comecei a desenvolver um projecto do jogo do galo mas sem utilizar nenhum array. Mas ele não consegue detectar a parte do vencedor. Se calhar até é uma coisa trivial mas como comecei à pouco tempo espero que tenham paciência comigo :)

Este é o código que escrevi:

#include <stdio.h>

char a1 = '1';
char a2 = '2';
char a3 = '3';
char b1 = '4';
char b2 = '5';
char b3 = '6';
char c1 = '7';
char c2 = '8';
char c3 = '9';
int val = 0;
int count = 0;
int venc = 0;

void jogo(){
	printf("\n    |   |   \n");
	printf("  %c | %c | %c \n", c1, c2, c3);
	printf("    |   |   \n");
	printf("-------------\n");
	printf("    |   |   \n");	
	printf("  %c | %c | %c \n", b1, b2, b3);
	printf("    |   |   \n");
	printf("-------------\n");
	printf("    |   |   \n");
	printf("  %c | %c | %c \n", a1, a2, a3);
	printf("    |   |   \n");
}
void vezJogarX()
{
		printf("E a vez do X jogar: \n");
		scanf("%d", &val);
}

void vezJogarO()
{
		printf("E a vez da O jogar: \n");
		scanf("%d", &val);
}

void jogadasX()
{
	switch (val)
	{
		case 1:
			if (a1 == 'X' || a1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				a1 = 'X';
				val = 0;
			}
			break;
		case 2:
			if (a2 == 'X' || a2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				a2 = 'X';
				val = 0;
			}
			break;
		case 3:
			if (a3 == 'X' || a3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				a3 = 'X';
				val = 0;
			}
			break;
		case 4:
			if (b1 == 'X' || b1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				b1 = 'X';
				val = 0;
			}
			break;
		case 5:
			if (b2 == 'X' || b2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				b2 = 'X';
				val = 0;
			}
			break;
		case 6:
			if (b3 == 'X' || b3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				b3 = 'X';
				val = 0;
			}
			break;
		case 7:
			if (c1 == 'X' || c1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				c1 = 'X';
				val = 0;
			}
			break;
		case 8:
			if (c2 == 'X' || c2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				c2 = 'X';
				val = 0;
			}
			break;
		case 9:
			if (c3 == 'X' || c3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				c3 = 'X';
				val = 0;
			}
			break;
	}
}

void jogadasO()
{
	switch (val)
	{
		case 1:
			if (a1 == 'X' || a1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				a1 = 'O';
			}
			break;
		case 2:
			if (a2 == 'X' || a2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				a2 = 'O';
			}
			break;
		case 3:
			if (a3 == 'X' || a3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				a3 = 'O';
			}
			break;
		case 4:
			if (b1 == 'X' || b1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				b1 = 'O';
			}
			break;
		case 5:
			if (b2 == 'X' || b2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				b2 = 'O';
			}
			break;
		case 6:
			if (b3 == 'X' || b3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				b3 = 'O';
			}
			break;
		case 7:
			if (c1 == 'X' || c1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				c1 = 'O';
			}
			break;
		case 8:
			if (c2 == 'X' || c2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				c2 = 'O';
			}
			break;
		case 9:
			if (c3 == 'X' || c3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				c3 = 'O';
			}
			break;
	}
}

void vencedor(){
		if (a1 == a2 == a3 == 'X') {
			printf("O jogador do X ganhou!! PARABENS :))"); //Verifica se há sequência na linha de baixo
			venc = 1;
		} else if (a1 == a2 == a3 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if (b1 == b2 == b3 == 'X') {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na linha do centro
			venc = 1;
		} else if (b1 == b2 == b3 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if (c1 == c2 == c3 == 'X') {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na linha de cima
			venc = 1;
		} else if (c1 == c2 == c3 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if (a1 == b1 == c1 == 'X') {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na 1ª coluna
			venc = 1;
		} else if (a1 == b1 == c1 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if (a2 == b2 == c2 == 'X') {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na 2ª coluna
			venc = 1;
		} else if (a2 == b2 == c2 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if (a3 == b3 == c3 == 'X') {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequnência na 3ª coluna
			venc = 1;
		} else if (a3 == b3 == c3 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if (a1 == b2 == c3 == 'X') {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na 1ª diagonal
			venc = 1;
		} else if (a1 == b2 == c3 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if (a3 == b2 == c1 == 'X') {
			printf("O jogador da X ganhou!! PARABENS :))"); // Verifica se há seqência na 2ª diagonal 
			venc = 1;
		} else if (a3 == b2 == c1 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");
        	venc = 1;
		}
}


int main()
{	
	jogo();
	while(count != 9){
		vezJogarX();
		jogadasX();
		jogo();
		vencedor();
		count++;
		if(count == 9 || venc == 1){
			break;
		}	
		vezJogarO();
		jogadasO();
		jogo();
		vencedor();
		count++;
		if (venc == 1)
		{
			break;
		}
	}
	if(count == 9 && venc != 1){
	printf("\n O jogo acabou em empate!!\n");
}
}

 

Edited by xico_colaco
Link to post
Share on other sites
xico_colaco
8 minutos atrás, iron disse:

venc = 1;
		} else if (a3 == b2 == c1 == 'O') {
			printf("O jogador da O ganhou!! PARABENS :))");

Aqui falta te o venc =1 

Modifiquei depois e copiei mal. Faltava também fechar uma chaveta mas continua a não dar

Link to post
Share on other sites
xico_colaco
5 minutos atrás, HappyHippyHippo disse:

mas o projecto diz especificamente que não podes usar arrays ?

Sim. A professora propôs que fizesse-mos um projeto do jogo do galo e alguém disse que isso era fácil, bastava usar arrays. A professora então disse: - Então vão faze-lo sem utilizar arrays! :confused:

Link to post
Share on other sites
HappyHippyHippo
28 minutes ago, xico_colaco said:

Sim. A professora propôs que fizesse-mos um projeto do jogo do galo e alguém disse que isso era fácil, bastava usar arrays. A professora então disse: - Então vão faze-lo sem utilizar arrays! :confused:

para a próxima está calado

---------

e ponteiros ?

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to post
Share on other sites
1 hora atrás, xico_colaco disse:

Sim. A professora propôs que fizesse-mos um projeto do jogo do galo e alguém disse que isso era fácil, bastava usar arrays. A professora então disse: - Então vão faze-lo sem utilizar arrays! :confused:

Poem fita cola na boca no gajo que disse isso :/

Link to post
Share on other sites

já vi um parecido em vb:

Public Class Form1
    Dim i As Integer = 0
    Private Sub win()
        'O wins
        If Button1.Text = "O" And Button2.Text = "O" And Button3.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button4.Text = "O" And Button5.Text = "O" And Button6.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button7.Text = "O" And Button8.Text = "O" And Button9.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button1.Text = "O" And Button4.Text = "O" And Button7.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button2.Text = "O" And Button5.Text = "O" And Button8.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button3.Text = "O" And Button6.Text = "O" And Button9.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button1.Text = "O" And Button5.Text = "O" And Button9.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button3.Text = "O" And Button5.Text = "O" And Button7.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")

            'X wins
        ElseIf Button1.Text = "X" And Button2.Text = "X" And Button3.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button4.Text = "X" And Button5.Text = "X" And Button6.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button7.Text = "X" And Button8.Text = "X" And Button9.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button1.Text = "X" And Button4.Text = "X" And Button7.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button2.Text = "X" And Button5.Text = "X" And Button8.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button3.Text = "X" And Button6.Text = "X" And Button9.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button1.Text = "X" And Button5.Text = "X" And Button9.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button3.Text = "X" And Button5.Text = "X" And Button7.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        End If
        If Button1.Enabled = False And Button2.Enabled = False And Button3.Enabled = False And Button4.Enabled = False And Button5.Enabled = False And Button6.Enabled = False And Button7.Enabled = False And Button8.Enabled = False And Button9.Enabled = False Then
            MsgBox("Tie!", MsgBoxStyle.Information, "Tic Tac Toe")
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If i = 0 Then
            Button1.Text = "O"
            Button1.Enabled = False
            i = i + 1
        Else
            Button1.Text = "X"
            Button1.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If i = 0 Then
            Button2.Text = "O"
            Button2.Enabled = False
            i = i + 1
        Else
            Button2.Text = "X"
            Button2.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If i = 0 Then
            Button3.Text = "O"
            Button3.Enabled = False
            i = i + 1
        Else
            Button3.Text = "X"
            Button3.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If i = 0 Then
            Button4.Text = "O"
            Button4.Enabled = False
            i = i + 1
        Else
            Button4.Text = "X"
            Button4.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        If i = 0 Then
            Button5.Text = "O"
            Button5.Enabled = False
            i = i + 1
        Else
            Button5.Text = "X"
            Button5.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        If i = 0 Then
            Button6.Text = "O"
            Button6.Enabled = False
            i = i + 1
        Else
            Button6.Text = "X"
            Button6.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        If i = 0 Then
            Button7.Text = "O"
            Button7.Enabled = False
            i = i + 1
        Else
            Button7.Text = "X"
            Button7.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        If i = 0 Then
            Button8.Text = "O"
            Button8.Enabled = False
            i = i + 1
        Else
            Button8.Text = "X"
            Button8.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
        If i = 0 Then
            Button9.Text = "O"
            Button9.Enabled = False
            i = i + 1
        Else
            Button9.Text = "X"
            Button9.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
        Call clear()
    End Sub
    Private Sub clear()
        Button1.Text = ""
        Button1.Enabled = True

        Button2.Text = ""
        Button2.Enabled = True

        Button3.Text = ""
        Button3.Enabled = True

        Button4.Text = ""
        Button4.Enabled = True

        Button5.Text = ""
        Button5.Enabled = True

        Button6.Text = ""
        Button6.Enabled = True

        Button7.Text = ""
        Button7.Enabled = True

        Button8.Text = ""
        Button8.Enabled = True

        Button9.Text = ""
        Button9.Enabled = True
    End Sub
End Class

 

Link to post
Share on other sites
xico_colaco
51 minutos atrás, brunuu disse:

Poem fita cola na boca no gajo que disse isso :/

Já o lixamos XD teve de pagar uma mini a turma toda.

2 horas atrás, HappyHippyHippo disse:

para a próxima está calado

---------

e ponteiros ?

Nem sei o que são isso.. Já dei uma pequena pesquisa no google mas não estou a ver como encaixa nesta situação

Edited by xico_colaco
Link to post
Share on other sites
xico_colaco
11 minutos atrás, sketxz disse:

já vi um parecido em vb:


Public Class Form1
    Dim i As Integer = 0
    Private Sub win()
        'O wins
        If Button1.Text = "O" And Button2.Text = "O" And Button3.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button4.Text = "O" And Button5.Text = "O" And Button6.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button7.Text = "O" And Button8.Text = "O" And Button9.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button1.Text = "O" And Button4.Text = "O" And Button7.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button2.Text = "O" And Button5.Text = "O" And Button8.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button3.Text = "O" And Button6.Text = "O" And Button9.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button1.Text = "O" And Button5.Text = "O" And Button9.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button3.Text = "O" And Button5.Text = "O" And Button7.Text = "O" Then
            Label1.Text += 1
            MsgBox("O won!", MsgBoxStyle.Information, "Tic Tac Toe")

            'X wins
        ElseIf Button1.Text = "X" And Button2.Text = "X" And Button3.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button4.Text = "X" And Button5.Text = "X" And Button6.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button7.Text = "X" And Button8.Text = "X" And Button9.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button1.Text = "X" And Button4.Text = "X" And Button7.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button2.Text = "X" And Button5.Text = "X" And Button8.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button3.Text = "X" And Button6.Text = "X" And Button9.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button1.Text = "X" And Button5.Text = "X" And Button9.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        ElseIf Button3.Text = "X" And Button5.Text = "X" And Button7.Text = "X" Then
            Label2.Text += 1
            MsgBox("X won!", MsgBoxStyle.Information, "Tic Tac Toe")
        End If
        If Button1.Enabled = False And Button2.Enabled = False And Button3.Enabled = False And Button4.Enabled = False And Button5.Enabled = False And Button6.Enabled = False And Button7.Enabled = False And Button8.Enabled = False And Button9.Enabled = False Then
            MsgBox("Tie!", MsgBoxStyle.Information, "Tic Tac Toe")
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If i = 0 Then
            Button1.Text = "O"
            Button1.Enabled = False
            i = i + 1
        Else
            Button1.Text = "X"
            Button1.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If i = 0 Then
            Button2.Text = "O"
            Button2.Enabled = False
            i = i + 1
        Else
            Button2.Text = "X"
            Button2.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If i = 0 Then
            Button3.Text = "O"
            Button3.Enabled = False
            i = i + 1
        Else
            Button3.Text = "X"
            Button3.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If i = 0 Then
            Button4.Text = "O"
            Button4.Enabled = False
            i = i + 1
        Else
            Button4.Text = "X"
            Button4.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        If i = 0 Then
            Button5.Text = "O"
            Button5.Enabled = False
            i = i + 1
        Else
            Button5.Text = "X"
            Button5.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        If i = 0 Then
            Button6.Text = "O"
            Button6.Enabled = False
            i = i + 1
        Else
            Button6.Text = "X"
            Button6.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        If i = 0 Then
            Button7.Text = "O"
            Button7.Enabled = False
            i = i + 1
        Else
            Button7.Text = "X"
            Button7.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        If i = 0 Then
            Button8.Text = "O"
            Button8.Enabled = False
            i = i + 1
        Else
            Button8.Text = "X"
            Button8.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
        If i = 0 Then
            Button9.Text = "O"
            Button9.Enabled = False
            i = i + 1
        Else
            Button9.Text = "X"
            Button9.Enabled = False
            i = i - 1
        End If
        Call win()
    End Sub

    Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
        Call clear()
    End Sub
    Private Sub clear()
        Button1.Text = ""
        Button1.Enabled = True

        Button2.Text = ""
        Button2.Enabled = True

        Button3.Text = ""
        Button3.Enabled = True

        Button4.Text = ""
        Button4.Enabled = True

        Button5.Text = ""
        Button5.Enabled = True

        Button6.Text = ""
        Button6.Enabled = True

        Button7.Text = ""
        Button7.Enabled = True

        Button8.Text = ""
        Button8.Enabled = True

        Button9.Text = ""
        Button9.Enabled = True
    End Sub
End Class

 

Não percebo nada de VB :P

Mas pelo o que consegui "ler" ele está a verificar o vencedor:

 

if (a1 == "O" && a2 == "O" && a3 == "O"){
  printf("Jogador O ganhou!");
}

 Mas não percebo o que o Label1.text faz..

Link to post
Share on other sites
xico_colaco

CONSEGUI FAZER :D

Tinha um erro na função vencedor()... Mas era um erro que eu não sabia que não se podia fazer e não acho que muita gente saiba: 5 == 5  dá 1 mas 5 == 5 == 5 dá 0

Não acho que seja uma coisa muito lógica mas pelos vistos é assim que funciona

 

#include <stdio.h>

char a1 = '1';
char a2 = '2';
char a3 = '3';
char b1 = '4';
char b2 = '5';
char b3 = '6';
char c1 = '7';
char c2 = '8';
char c3 = '9';
int val = 0;
int count = 0;
int venc = 0;

void jogo(){
	printf("\n    |   |   \n");
	printf("  %c | %c | %c \n", c1, c2, c3);
	printf("    |   |   \n");
	printf("-------------\n");
	printf("    |   |   \n");	
	printf("  %c | %c | %c \n", b1, b2, b3);
	printf("    |   |   \n");
	printf("-------------\n");
	printf("    |   |   \n");
	printf("  %c | %c | %c \n", a1, a2, a3);
	printf("    |   |   \n");
}
void vezJogarX()
{
		printf("E a vez do X jogar: \n");
		scanf("%d", &val);
}

void vezJogarO()
{
		printf("E a vez da O jogar: \n");
		scanf("%d", &val);
}

void jogadasX()
{
	switch (val)
	{
		case 1:
			if (a1 == 'X' || a1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				a1 = 'X';
				val = 0;
			}
			break;
		case 2:
			if (a2 == 'X' || a2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				a2 = 'X';
				val = 0;
			}
			break;
		case 3:
			if (a3 == 'X' || a3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				a3 = 'X';
				val = 0;
			}
			break;
		case 4:
			if (b1 == 'X' || b1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				b1 = 'X';
				val = 0;
			}
			break;
		case 5:
			if (b2 == 'X' || b2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				b2 = 'X';
				val = 0;
			}
			break;
		case 6:
			if (b3 == 'X' || b3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				b3 = 'X';
				val = 0;
			}
			break;
		case 7:
			if (c1 == 'X' || c1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				c1 = 'X';
				val = 0;
			}
			break;
		case 8:
			if (c2 == 'X' || c2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				c2 = 'X';
				val = 0;
			}
			break;
		case 9:
			if (c3 == 'X' || c3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				count--;
				val = 0;
			} else {
				c3 = 'X';
				val = 0;
			}
			break;
	}
}

void jogadasO()
{
	switch (val)
	{
		case 1:
			if (a1 == 'X' || a1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				a1 = 'O';
			}
			break;
		case 2:
			if (a2 == 'X' || a2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				a2 = 'O';
			}
			break;
		case 3:
			if (a3 == 'X' || a3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				a3 = 'O';
			}
			break;
		case 4:
			if (b1 == 'X' || b1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				b1 = 'O';
			}
			break;
		case 5:
			if (b2 == 'X' || b2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				b2 = 'O';
			}
			break;
		case 6:
			if (b3 == 'X' || b3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				b3 = 'O';
			}
			break;
		case 7:
			if (c1 == 'X' || c1 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				c1 = 'O';
			}
			break;
		case 8:
			if (c2 == 'X' || c2 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				c2 = 'O';
			}
			break;
		case 9:
			if (c3 == 'X' || c3 == 'O')
			{
				printf("Este numero ja esta escolhido!! Perdes a vez por estares a brincar :(");
				val = 0;
				count--;
			} else {
				val = 0;
				c3 = 'O';
			}
			break;
	}
}

void vencedor()
{
		if ((a1 == a2) && (a3 == 'X')) {
			printf("O jogador do X ganhou!! PARABENS :))"); //Verifica se há sequência na linha de baixo
			venc = 1;
		} else if ((a1 == a2) && (a3 == 'O')) {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if ((b1 == b2) && (b3 == 'X')) {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na linha do centro
			venc = 1;
		} else if ((b1 == b2) && (b3 == 'O')) {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if ((c1 == c2) && (c3 == 'X')) {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na linha de cima
			venc = 1;
		} else if ((c1 == c2) && (c3 == 'O')) {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if ((a1 == b1) && (c1 == 'X')) {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na 1ª coluna
			venc = 1;
		} else if ((a1 == b1) && (c1 == 'O')) {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if ((a2 == b2) && (c2 == 'X')) {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na 2ª coluna
			venc = 1;
		} else if ((a2 == b2) && (c2 == 'O')) {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if ((a3 == b3) && (c3 == 'X')) {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequnência na 3ª coluna
			venc = 1;
		} else if ((a3 == b3) && (c3 == 'O')) {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if ((a1 == b2) && (c3 == 'X')) {
			printf("O jogador da X ganhou!! PARABENS :))"); //Verifica se há sequência na 1ª diagonal
			venc = 1;
		} else if ((a1 == b2) && (c3 == 'O')) {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		} else if ((a3 == b2) && (c1 == 'X')) {
			printf("O jogador da X ganhou!! PARABENS :))"); // Verifica se há seqência na 2ª diagonal 
			venc = 1;
		} else if ((a3 == b2) && (c1 == 'O')) {
			printf("O jogador da O ganhou!! PARABENS :))");
			venc = 1;
		}
}


int main()
{	
	jogo();
	while(count != 9){
		vezJogarX();
		jogadasX();
		jogo();
		vencedor();
		count++;
		if(count == 9 || venc == 1){
			break;
		}	
		vezJogarO();
		jogadasO();
		jogo();
		vencedor();
		count++;
		if (venc == 1)
		{
			break;
		}
	}
	if(count == 9 && venc != 1){
	printf("\n O jogo acabou em empate!!\n");
}
}

 

Link to post
Share on other sites
HappyHippyHippo

ok, agora que não estou a trabalhar, vamos lá ver se consegues chegar ao problema

tenta responder às questões em comentário:

int i;

i = 1 == 0;                // qual o valor de i ?
i = 1 == 0 == 0;           // qual o valor de i ?
i = 1 == 0 == 0 == 1;      // qual o valor de i ?
i = 1 == 0 == 0 == 1 == 0; // qual o valor de i ?

 

IRC : sim, é algo que ainda existe >> #p@p
Link to post
Share on other sites
xico_colaco
20 minutos atrás, HappyHippyHippo disse:

ok, agora que não estou a trabalhar, vamos lá ver se consegues chegar ao problema

tenta responder às questões em comentário:


int i;

i = 1 == 0;                // qual o valor de i ?
i = 1 == 0 == 0;           // qual o valor de i ?
i = 1 == 0 == 0 == 1;      // qual o valor de i ?
i = 1 == 0 == 0 == 1 == 0; // qual o valor de i ?

 

Não estava a perceber mas com os teus exemplos já consegui compreender

i = 1 == 0;                //i = 0
i = 1 == 0 == 0;           //i = 0 == 0; i = 1;
i = 1 == 0 == 0 == 1;      //i = 1 == 1; i = 1;
i = 1 == 0 == 0 == 1 == 0; //i = 1 == 0; i = 0;

Nem pensei que se tratasse de um problema de Boolean

Link to post
Share on other sites
HappyHippyHippo
6 minutes ago, xico_colaco said:

Não estava a perceber mas com os teus exemplos já consegui compreender


i = 1 == 0;                //i = 0
i = 1 == 0 == 0;           //i = 0 == 0; i = 1;
i = 1 == 0 == 0 == 1;      //i = 1 == 1; i = 1;
i = 1 == 0 == 0 == 1 == 0; //i = 1 == 0; i = 0;

Nem pensei que se tratasse de um problema de Boolean

é para isso que o pessoal está aqui ...

 

---------

só para curiosidade, uma solução bem mais simples (visto que já tens o teu programa a funcionar):

#include <stdio.h>
#include <string.h>

#define PLAYER1 'X'
#define PLAYER2 'O'

typedef struct {
    struct {
        char col1, col2, col3;
    } line1;

    struct {
        char col1, col2, col3;
    } line2;

    struct {
        char col1, col2, col3;
    } line3;
} Board;

void printBoard (Board board) {
    printf("    |   |   \n"    \
           "  %c | %c | %c \n" \
           "    |   |   \n"    \
           "-------------\n"   \
           "    |   |   \n"    \
           "  %c | %c | %c \n" \
           "    |   |   \n"    \
           "-------------\n"   \
           "    |   |   \n"    \
           "  %c | %c | %c \n" \
           "    |   |   \n\n",
           board.line1.col1, board.line1.col2, board.line1.col3,
           board.line2.col1, board.line2.col2, board.line2.col3,
           board.line3.col1, board.line3.col2, board.line3.col3);
}

int askPlay (char player) {
    int cell = 0;

    // no input validation ... this is going to be good
    printf("E a vez do %c jogar: \n", player);
    scanf(" %d", & cell);

    return cell - 1;
}

int validatePlay (Board board, int cell) {
    char * aux = (char *) & board;
    if (* (aux + (cell)) != ' ') {
        printf ("A celula ja se encontra seleccionada\n");
        return 0;
    }
    return 1;
}

// lets not complicate even more by using pointer arguments
Board doPlay (Board board, int cell, char player) {
    char * aux = (char *) & board;
    * (aux + (cell)) = player;
    return board;
}

int checkWin (Board board) {
    int aux;
    if (   ((aux = board.line1.col1 + board.line1.col2 + board.line1.col3) == PLAYER1 * 3) || (aux == PLAYER2 * 3)
        || ((aux = board.line2.col1 + board.line2.col2 + board.line2.col3) == PLAYER1 * 3) || (aux == PLAYER2 * 3)
        || ((aux = board.line3.col1 + board.line3.col2 + board.line3.col3) == PLAYER1 * 3) || (aux == PLAYER2 * 3)
        || ((aux = board.line1.col1 + board.line2.col1 + board.line3.col1) == PLAYER1 * 3) || (aux == PLAYER2 * 3)
        || ((aux = board.line1.col2 + board.line2.col2 + board.line3.col2) == PLAYER1 * 3) || (aux == PLAYER2 * 3)
        || ((aux = board.line1.col3 + board.line2.col3 + board.line3.col3) == PLAYER1 * 3) || (aux == PLAYER2 * 3)
        || ((aux = board.line1.col1 + board.line2.col2 + board.line3.col3) == PLAYER1 * 3) || (aux == PLAYER2 * 3)
        || ((aux = board.line1.col3 + board.line2.col2 + board.line3.col1) == PLAYER1 * 3) || (aux == PLAYER2 * 3))
        return aux / 3;
    return 0;
}

int main (void)
{    
    Board board;
    char win = 0, validCells = 9, cell, player = PLAYER1;

    memset (& board, ' ', sizeof (board));

    while (!win && validCells) {
        printBoard (board);
        cell = askPlay (player);
        if (validatePlay (board, cell)) {
            board = doPlay (board, cell, player);

            win = checkWin (board);
            if (win) {
                printBoard (board);
                printf ("O jogador %c ganhou ... parabens\n", win);
            } else {
                --validCells;
                player = player == PLAYER1 ? PLAYER2 : PLAYER1;
            }
        }
    }

    if (!win) {
        printBoard (board);
        printf ("... empate ... que seca ...\n");
    }

    return 0;
}

 

Edited by HappyHippyHippo
example
IRC : sim, é algo que ainda existe >> #p@p
Link to post
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
×
×
  • 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.