Jump to content
klaudy

Verificar empate no jogo do galo vb 2008

Recommended Posts

klaudy

Boas !!

Eu estou a fazer um jogo do galo em Visual Basic 2008.

No meu programa quando só me falta colocar uma hipótese e este ganha, aparece uma mensagem a dizer que ganhou o jogador e depois aparece outra a dizer que empatou.

O meu código é o seguinte:

Module Module1
    'Modulo --> Trata-se de código em projetos, módulos e procedimentos, de forma que seja fácil 
    'de entender e manter.
    'Uma completa aplicação do Visual Basic é normalmente contidos em um único projeto. 
    'Dentro de um projeto, o código é colocado em ficheiros separados chamados de módulos de 
    'código, e dentro de cada módulo, o código do Visual Basic está ainda dividido em auto 
    'procedimentos contidos e reutilizáveis.

    Public Jogador1 As String
    Public Jogador2 As String
    Public Joga_Vez As Integer = 0
    Public PlacarJoga_1 As Integer = 0 ' ira contar o num de vezes que o utilizador 1 ganhou
    Public PlacarJoga_2 As Integer = 0 ' ira contar o num de vezes que o utilizador 1 ganhou

    'picturebox1, 2, 3, 4, 5, 6, 7, 8 e 9 toma valor 3 para não ser confundido com os valores que irá ser futuramente utilizados
    Public PictureBox1 As Integer = 3
    Public PictureBox2 As Integer = 3
    Public PictureBox3 As Integer = 3
    Public PictureBox4 As Integer = 3
    Public PictureBox5 As Integer = 3
    Public PictureBox6 As Integer = 3
    Public PictureBox7 As Integer = 3
    Public PictureBox8 As Integer = 3
    Public PictureBox9 As Integer = 3
    Public Function Draw(ByVal Valor_0_ou_1 As Integer, ByVal PictureBox As String) As System.Drawing.Image
        'verifiacr se é o 1ºjogador (valor_0_ou_1 = 0 ) ou se é o 2º(valor_0_ou_1 = 0 )
        If Valor_0_ou_1 = 0 Then
            Select Case PictureBox
                Case "PictureBox1" ' se for a picturebox1, ira tomar o valor 0, para demostrar que é o jogador um (circulo)
                    PictureBox1 = 0
                Case "PictureBox2" ' se for a picturebox2, ira tomar o valor 0
                    PictureBox2 = 0
                Case "PictureBox3"
                    PictureBox3 = 0 '...
                Case "PictureBox4"
                    PictureBox4 = 0
                Case "PictureBox5"
                    PictureBox5 = 0
                Case "PictureBox6"
                    PictureBox6 = 0
                Case "PictureBox7"
                    PictureBox7 = 0
                Case "PictureBox8"
                    PictureBox8 = 0
                Case "PictureBox9"
                    PictureBox9 = 0
            End Select

            'Draw ira fikar com a imagem circulo, pois esta a referir-se ao 2º jogador
            'origem da imagem
            Draw = Image.FromFile("E:\2ºano\psi\jogo\jogo do galo\psi\0.png") 'draw tem como valor retomado picturebox portanto este ira ficar com o caminho para a imagem
            Ganhou(Joga_Vez) ' ira para a função ganhou, como o valor 0 (pois este valor ainda não fui modificado e é a vez do 1ºjogador), para verificar se tem picturebox em linha, coluna ou diagonal 
            Joga_Vez = 1     'Para permitir que o outro jogador possa jogar
            Form1.Circulo.Visible = False  'deixa de ser permitido o circulo, pois passa para outro jogador
            Form1.X.Visible = True   'visivel o x (referente ao outro jogador)
            Form1.Label1.Text = Jogador2 & ", é a sua vez"
        Else
            Select Case PictureBox
                Case "PictureBox1"
                    PictureBox1 = 1 ' se for a picturebox1, ira tomar o valor 1, pois sera o jogador 2 (x)
                Case "PictureBox2"
                    PictureBox2 = 1 '...
                Case "PictureBox3"
                    PictureBox3 = 1
                Case "PictureBox4"
                    PictureBox4 = 1
                Case "PictureBox5"
                    PictureBox5 = 1
                Case "PictureBox6"
                    PictureBox6 = 1
                Case "PictureBox7"
                    PictureBox7 = 1
                Case "PictureBox8"
                    PictureBox8 = 1
                Case "PictureBox9"
                    PictureBox9 = 1
            End Select

            'Draw ira fikar com a imagem x, pois esta a referir-se ao 2º jogador
            'origem da imagem
            Draw = Image.FromFile("E:\2ºano\psi\jogo\jogo do galo\psi\x.png")
            Ganhou(Joga_Vez) ' ira para a função ganhou, para verificar se tem picturebox em linha, coluna ou diagonal
            Joga_Vez = 0 'joga_vez ira tomar o valor 0 para permitir a passagem para o 1ºjogador
            Form1.Circulo.Visible = True 'foi x visibel passa agora a ser circulo visible
            Form1.X.Visible = False
            Form1.Label1.Text = Jogador1 & ", é a sua vez"
        End If
    End Function
    Public Sub liga_desliga(ByVal Valor As Boolean)
        'irá permitir que active ou não as picturesboxs quando ganhar ou quando quiser limpar o tabuleiro

        If Valor = True Then
            Form1.PictureBox1.Enabled = True
            Form1.PictureBox2.Enabled = True
            Form1.PictureBox3.Enabled = True
            Form1.PictureBox4.Enabled = True
            Form1.PictureBox5.Enabled = True
            Form1.PictureBox6.Enabled = True
            Form1.PictureBox7.Enabled = True
            Form1.PictureBox8.Enabled = True
            Form1.PictureBox9.Enabled = True
        Else
            Form1.PictureBox1.Enabled = False
            Form1.PictureBox2.Enabled = False
            Form1.PictureBox3.Enabled = False
            Form1.PictureBox4.Enabled = False
            Form1.PictureBox5.Enabled = False
            Form1.PictureBox6.Enabled = False
            Form1.PictureBox7.Enabled = False
            Form1.PictureBox8.Enabled = False
            Form1.PictureBox9.Enabled = False
        End If
    End Sub
    Public Sub lima_tabuleiro()
        ' irá coloacr os valores todos como era no inicio do programa

        PictureBox1 = 3
        PictureBox2 = 3
        PictureBox3 = 3
        PictureBox4 = 3
        PictureBox5 = 3
        PictureBox6 = 3
        PictureBox7 = 3
        PictureBox8 = 3
        PictureBox9 = 3

        Form1.PictureBox1.Image = Form1.PictureBox_.Image 'irá colocar todas as picturesboxes como a PictureBox_, pois esta não tem nada
        Form1.PictureBox2.Image = Form1.PictureBox_.Image
        Form1.PictureBox3.Image = Form1.PictureBox_.Image
        Form1.PictureBox4.Image = Form1.PictureBox_.Image
        Form1.PictureBox5.Image = Form1.PictureBox_.Image
        Form1.PictureBox6.Image = Form1.PictureBox_.Image
        Form1.PictureBox7.Image = Form1.PictureBox_.Image
        Form1.PictureBox8.Image = Form1.PictureBox_.Image
        Form1.PictureBox9.Image = Form1.PictureBox_.Image
    End Sub
    Public Sub Ganhou(ByVal Jogador As Integer)
        If Jogador = 0 Then ' se for o 1ºjogador
            If PictureBox1 = 0 And PictureBox2 = 0 And PictureBox3 = 0 Then 'linha1
                liga_desliga(False) 'liga_desliga ira ser falso, pois assim ira inactivar as picturexboxes para que estas depois de saber quem ganha não continuarem
                PlacarJoga_1 = PlacarJoga_1 + 1 'irá colocar no total das cotações mais um. Por outras palavras, é um contador para saber o resultado
                Form1.Label2.Text = PlacarJoga_1 'ira escrever o resultado das cotações
                MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox4 = 0 And PictureBox5 = 0 And PictureBox6 = 0 Then 'linha2 ...
                liga_desliga(False)
                PlacarJoga_1 = PlacarJoga_1 + 1
                Form1.Label2.Text = PlacarJoga_1
                MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox7 = 0 And PictureBox8 = 0 And PictureBox9 = 0 Then ' linha3 ...
                liga_desliga(False)
                PlacarJoga_1 = PlacarJoga_1 + 1
                Form1.Label2.Text = PlacarJoga_1
                MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox1 = 0 And PictureBox4 = 0 And PictureBox7 = 0 Then 'coluna1 ...
                liga_desliga(False)
                PlacarJoga_1 = PlacarJoga_1 + 1
                Form1.Label2.Text = PlacarJoga_1
                MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox2 = 0 And PictureBox5 = 0 And PictureBox8 = 0 Then ' coluna2 ...
                liga_desliga(False)
                PlacarJoga_1 = PlacarJoga_1 + 1
                Form1.Label2.Text = PlacarJoga_1
                MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox3 = 0 And PictureBox6 = 0 And PictureBox9 = 0 Then 'coluna3 ...
                liga_desliga(False)
                PlacarJoga_1 = PlacarJoga_1 + 1
                Form1.Label2.Text = PlacarJoga_1
                MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox1 = 0 And PictureBox5 = 0 And PictureBox9 = 0 Then ' diagonal(1,5,9) ...
                liga_desliga(False)
                PlacarJoga_1 = PlacarJoga_1 + 1
                Form1.Label2.Text = PlacarJoga_1
                MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox3 = 0 And PictureBox5 = 0 And PictureBox7 = 0 Then 'diagonal(3, 5, 7) ...
                liga_desliga(False)
                PlacarJoga_1 = PlacarJoga_1 + 1
                Form1.Label2.Text = PlacarJoga_1
                MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If


        Else 'mesma coisa, mas para o caso do jogador 2

            If PictureBox1 = 1 And PictureBox2 = 1 And PictureBox3 = 1 Then
                liga_desliga(False)
                PlacarJoga_2 = PlacarJoga_2 + 1
                Form1.Label3.Text = PlacarJoga_2
                MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox4 = 1 And PictureBox5 = 1 And PictureBox6 = 1 Then
                liga_desliga(False)
                PlacarJoga_2 = PlacarJoga_2 + 1
                Form1.Label3.Text = PlacarJoga_2
                MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox7 = 1 And PictureBox8 = 1 And PictureBox9 = 1 Then
                liga_desliga(False)
                PlacarJoga_2 = PlacarJoga_2 + 1
                Form1.Label3.Text = PlacarJoga_2
                MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox1 = 1 And PictureBox4 = 1 And PictureBox7 = 1 Then
                liga_desliga(False)
                PlacarJoga_2 = PlacarJoga_2 + 1
                Form1.Label3.Text = PlacarJoga_2
                MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox2 = 1 And PictureBox5 = 1 And PictureBox8 = 1 Then
                liga_desliga(False)
                PlacarJoga_2 = PlacarJoga_2 + 1
                Form1.Label3.Text = PlacarJoga_2
                MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If
            If PictureBox3 = 1 And PictureBox6 = 1 And PictureBox9 = 1 Then
                liga_desliga(False)
                PlacarJoga_2 = PlacarJoga_2 + 1
                Form1.Label3.Text = PlacarJoga_2
                MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "ganhou!!!")
            End If
            If PictureBox1 = 1 And PictureBox5 = 1 And PictureBox9 = 1 Then
                liga_desliga(False)
                PlacarJoga_2 = PlacarJoga_2 + 1
                Form1.Label3.Text = PlacarJoga_2
                MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou")
            End If
            If PictureBox3 = 1 And PictureBox5 = 1 And PictureBox7 = 1 Then
                liga_desliga(False)
                PlacarJoga_2 = PlacarJoga_2 + 1
                Form1.Label3.Text = PlacarJoga_2
                MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
            End If

        End If

        If Jogador = 0 And Jogador <> 0 Then
            Empate() ' se não ocorrer ninhum destes casos ir verificar se é empate
        End If

    End Sub
    Public Sub limpa_tudo()

        ' iricializa todo os valores das variaveis ou coloca falso ou sem nada, ...
        Joga_Vez = 0
        PlacarJoga_1 = 0
        PlacarJoga_2 = 0
        lima_tabuleiro()
        liga_desliga(False)
        Form1.Joga1.Text = ""
        Form1.Joga2.Text = ""
        Form1.Label2.Text = "0"
        Form1.Label3.Text = "0"
    End Sub
    Public Sub Empate() 'ira verificar se é empate

        'erro aqui porque caso seja a ultima hipotese e ganhe, aparece uma mensagem que ganhou e outra que empatou

        ' verificar se ao contar as picturebox, (5 são 0 e 4 são 1) ou (4 são 0 e 5 são 1)
        Dim res As Integer = PictureBox1 + PictureBox2 + PictureBox3 + PictureBox4 + PictureBox5 + PictureBox6 + PictureBox7 + PictureBox8 + PictureBox9
        'se for 4 ou 5, (5 ou 4 vezes o valor 1(jogador2), este significa que nem o jogador 1 nem o 2 conseguiram, pois caso tivesses ganhado não tinham terminado o jogo todo ou anterioemnete seriam conantado como victoria)
        If res = 5 Or res = 4 Then
            MsgBox("Ninguém ganhou", MsgBoxStyle.Exclamation, "Empate!!!")
        End If
    End Sub
End Module



'é o forme para jogar
Public Class Form1

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Form2.Show() 'Irá chamar o form2, para saber o nome dos jogadores e possibilitar clicar nas pictureboxs
    End Sub

    Private Sub picturebox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox_.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox1.Image = Draw(Joga_Vez, "PictureBox1")
        PictureBox1.Enabled = False
    End Sub

    Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox2.Image = Draw(Joga_Vez, "PictureBox2")
        PictureBox2.Enabled = False
    End Sub

    Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox3.Image = Draw(Joga_Vez, "PictureBox3")
        PictureBox3.Enabled = False
    End Sub

    Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox4.Image = Draw(Joga_Vez, "PictureBox4")
        PictureBox4.Enabled = False
    End Sub

    Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox5.Image = Draw(Joga_Vez, "PictureBox5")
        PictureBox5.Enabled = False
    End Sub

    Private Sub PictureBox6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox6.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox6.Image = Draw(Joga_Vez, "PictureBox6")
        PictureBox6.Enabled = False
    End Sub

    Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox7.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox7.Image = Draw(Joga_Vez, "PictureBox7")
        PictureBox7.Enabled = False
    End Sub

    Private Sub PictureBox8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox8.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox8.Image = Draw(Joga_Vez, "PictureBox8")
        PictureBox8.Enabled = False
    End Sub

    Private Sub PictureBox9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox9.Click
        'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para qeu não possa jogar no mesmo local
        PictureBox9.Image = Draw(Joga_Vez, "PictureBox9")
        PictureBox9.Enabled = False
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        'aparecer um caixa de texto a perguntar se tem a certeza que qeur sair.
        If MsgBox("Tem a certeza que quer sair?", MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo, "Tem Certeza") = MsgBoxResult.Yes Then
            End
        Else
            Exit Sub
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'ira para a funcão lim_tabuleiro e liga_desligar, pois este quer que limpe o tabuleiro e inicialize novamnete o jogo
        lima_tabuleiro()
        liga_desliga(True)
    End Sub

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        'irá servir para acultar a picturebox iniciar e depois consulante o jogador ira aparecer o circulo ou o x 
        PictureBox1.Image = Draw(Joga_Vez, "PictureBox1")
        PictureBox1.Enabled = False
    End Sub


    Private Sub JogarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles JogarToolStripMenuItem.Click

    End Sub

    Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)

    End Sub
End Class



'é o forme para colocar os nomes dos jogadores
Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Jogador1 = TextBox1.Text
        Jogador2 = TextBox2.Text

        Form1.PictureBox1.Enabled = True
        Form1.PictureBox2.Enabled = True
        Form1.PictureBox3.Enabled = True
        Form1.PictureBox4.Enabled = True
        Form1.PictureBox5.Enabled = True
        Form1.PictureBox6.Enabled = True
        Form1.PictureBox7.Enabled = True
        Form1.PictureBox8.Enabled = True
        Form1.PictureBox9.Enabled = True


        Form1.Show()
        Form1.Circulo.Visible = True
        Form1.Label1.Text = Jogador1 & ", é a sua vez."
        Form1.Joga1.Text = Jogador1 & ":"
        Form1.Joga2.Text = Jogador2 & ":"
        Me.Close()
        liga_desliga(True)
    End Sub
End Class

Por favor, alguém me ajude...

obrigado

Share this post


Link to post
Share on other sites
jpaulino

A seguir às msgboxes:

MsgBox("Parabéns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")

Deves colocar um Exit Sub porque caso contrário, a mensagem de empate também pode aparecer. Além disso tens isto mal:

If Jogador = 0 And Jogador <> 0 Then

Share this post


Link to post
Share on other sites
klaudy

era mesmo isso que precisava...  ;)

coloquei exit sub depois das msgbox

MsgBox("Parabéns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")

E tirei o código que vem em baixo e apenas coloquei Empate()

If Jogador = 0 And Jogador <> 0 Then

            Empate() ' se não ocorrer ninhum destes casos ir verificar se é empate

        End If

E finalmete funciona

pois agora quando verificar se ganha não ira aparecer tb empate

;)

Share this post


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.