Você está na página 1de 26

Agrupamento de Escolas da Batalha

160301

Ficha de Trabalho 01 Curso: TPGSI Disciplina: PSI Ano: 2 Mdulo: 11

Ano Letivo: 2013/2014 Data: ___ /___ /___

Objetivos: Manipulao de dados numa matriz e utilizao de componentes visuais.

Enunciado:
Elabora um programa que consiste numa verso do Jogo do Galo. O programa deve acompanhar e validar os movimentos do jogador e determinar quando um jogo ganho, perdido ou empatado.

Sugestes para a implementao: A. Construir o tabuleiro do jogo usando 9 controlos Panel, de dimenso igual e com afastamento igual entre eles. Usar o controlo LineShape para exibir as linhas divisrias do tabuleiro. B. Usar um controlo ImageList para armazenar uma coleo indexada de imagens usados para representar os movimentos do jogador (o X, o O e a casa no ocupada). C. Usar uma matriz para controlar todos os movimentos dos jogadores e as jogadas no vlidas (casa ocupada). D. Personalizar o jogo com os nomes de cada jogador. E. Apresentar um grupo de estatsticas para os dois jogadores: jogos, empates, vitrias. F. Criar, entre outros, procedimentos para limpar o tabuleiro (e a matriz), determinar o vencedor, alternar a vez do jogador. Referncias:
http://msdn.microsoft.com/pt-br/library/vstudio/fat9bdzd(v=vs.100).aspx

-1-

Agrupamento de Escolas da Batalha

160301

RESOLUO :
existem 3 verses neste documento como propostas de resoluo Conjunto de imagens usadas:

Interface:

9 PictureBox: pA1, pA2, pA3 pB1, pB2, pB3 pC1, pC2, pC3 Cada PictureBox ocupa uma casa do tabuleiro

TextBox: txtOutput Propriedades: ReadOnly

ImageList: imlQuadrados Este componente usado com a coleo das imagens X, O e branco

-2-

Agrupamento de Escolas da Batalha

160301

-VERSO 1Esta verso no usa uma matriz. Usa uma string para controlar cada quadrado do tabuleiro.

Public Class frmPrincipal

Private strJogador As String = "" 'Usado para saber de quem a vez de jogar 'Declarar as variveis que representam as clulas no tabuleiro de jogo Private strpbxA1 As String = "Abrir" Private strpbxA2 As String = "Abrir" Private strpbxA3 As String = "Abrir" Private strpbxB1 As String = "Abrir" Private strpbxB2 As String = "Abrir" Private strpbxB3 As String = "Abrir" Private strpbxC1 As String = "Abrir" Private strpbxC2 As String = "Abrir" Private strpbxC3 As String = "Abrir"

Private Sub frmPrincipal_BindingContextChanged(ByVal sender As Object, ByVal _ e As System.EventArgs) Handles Me.BindingContextChanged ConfiguracaoInicial() 'Chama o procedimento que define as atribuies padro LimparTabuleiro() 'Chama o procedimento que limpa o tabuleiro de jogo End Sub

'Este o procedimento define as atribuies padro Private Sub ConfiguracaoInicial() txtOutput.Text = "Pressione em Jogar para comear" 'Mostra mensagem inicial strJogador = "Jogador X" 'Define Jogador X para comear End Sub

'Este procedimento limpa o tabuleiro de jogo Private Sub LimparTabuleiro() 'Colocar uma imagem em branco em cada clula do tabuleiro de jogo pA1.Image = imlQuadrados.Images(2) pA2.Image = imlQuadrados.Images(2) pA3.Image = imlQuadrados.Images(2) pB1.Image = imlQuadrados.Images(2) pB2.Image = imlQuadrados.Images(2) pB3.Image = imlQuadrados.Images(2) pC1.Image = imlQuadrados.Images(2) pC2.Image = imlQuadrados.Images(2) pC3.Image = imlQuadrados.Images(2) 'Marca cada clula do tabuleiro de jogo como aberta e disponvel para seleo strpbxA1 = "Abrir" strpbxA2 = "Abrir" -3-

Agrupamento de Escolas da Batalha

160301

strpbxA3 strpbxB1 strpbxB2 strpbxB3 strpbxC1 strpbxC2 strpbxC3 End Sub

= = = = = = =

"Abrir" "Abrir" "Abrir" "Abrir" "Abrir" "Abrir" "Abrir"

Private Sub btnJogar_Click(ByVal sender As System.Object, ByVal _ e As System.EventArgs) Handles btnJogar.Click LimparTabuleiro() 'Chama o procedimento que limpa o tabuleiro de jogo Jogar() 'Chama o procedimento que comea o jogo End Sub

'Este procedimento comea o jogo Private Sub Jogar() 'coloca a mensagem a identificar de quem a vez txtOutput.Text = strJogador & " a sua vez." 'ativa todas as clulas do tabuleiro de jogo pA1.Enabled = True pA2.Enabled = True pA3.Enabled = True pB1.Enabled = True pB2.Enabled = True pB3.Enabled = True pC1.Enabled = True pC2.Enabled = True pC3.Enabled = True btnJogar.Enabled = False 'desativa o acesso ao boto Jogar End Sub

Private Sub btnTerminar_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles btnTerminar.Click Application.Exit() End Sub

Private Sub pbxA1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pA1.Click Dim strFimJogo As String = "" 'usada para controlar o estado do jogo

'Informar o jogador se a clula j foi selecionada If strpbxA1 <> "Abrir" Then txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pA1.Image = imlQuadrados.Images(0) strpbxA1 = "Jogador X" -4-

Agrupamento de Escolas da Batalha

160301

Else pA1.Image = imlQuadrados.Images(1) strpbxA1 = "Jogador O" End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) End Sub

Private Sub pbxA2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pA2.Click Dim strFimJogo As String = "" 'Usada para controlar o estado do jogo 'Informar o jogador se a clula j foi selecionada If strpbxA2 <> "Abrir" Then txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pA2.Image = imlQuadrados.Images(0) strpbxA2 = "Jogador X" Else pA2.Image = imlQuadrados.Images(1) strpbxA2 = "Jogador O" End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) End Sub

Private Sub pbxA3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pA3.Click Dim strFimJogo As String = "" 'Usada para controlar o estado do jogo

'Informar o jogador se a clula j foi selecionada If strpbxA3 <> "Abrir" Then txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pA3.Image = imlQuadrados.Images(0) strpbxA3 = "Jogador X" Else pA3.Image = imlQuadrados.Images(1) strpbxA3 = "Jogador O" -5-

Agrupamento de Escolas da Batalha

160301

End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) End Sub

Private Sub pbxB1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pB1.Click Dim strFimJogo As String = "" 'Usada para controlar o estado do jogo 'Informar o jogador se a clula j foi selecionada If strpbxB1 <> "Abrir" Then txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pB1.Image = imlQuadrados.Images(0) strpbxB1 = "Jogador X" Else pB1.Image = imlQuadrados.Images(1) strpbxB1 = "Jogador O" End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) End Sub

Private Sub pbxB2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pB2.Click Dim strFimJogo As String = "" 'Usada para controlar o estado do jogo 'Informar o jogador se a clula j foi selecionada If strpbxB2 <> "Abrir" Then txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pB2.Image = imlQuadrados.Images(0) strpbxB2 = "Jogador X" Else pB2.Image = imlQuadrados.Images(1) strpbxB2 = "Jogador O" End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) -6-

Agrupamento de Escolas da Batalha

160301

End Sub Private Sub pbxB3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pB3.Click Dim strFimJogo As String = "" 'Usada para controlar o estado do jogo 'Informar o jogador se a clula j foi selecionada If strpbxB3 <> "Abrir" Then txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pB3.Image = imlQuadrados.Images(0) strpbxB3 = "Jogador X" Else pB3.Image = imlQuadrados.Images(1) strpbxB3 = "Jogador O" End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) End Sub

Private Sub pbxC1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pC1.Click Dim strFimJogo As String = "" 'Usada para controlar o estado do jogo 'Informar o jogador se a clula j foi selecionada If strpbxC1 <> "Abrir" Then txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pC1.Image = imlQuadrados.Images(0) strpbxC1 = "Jogador X" Else pC1.Image = imlQuadrados.Images(1) strpbxC1 = "Jogador O" End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vaez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) End Sub

Private Sub pbxC2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pC2.Click Dim strFimJogo As String = "" 'Usada para controlar o estado do jogo 'Informar o jogador se a clula j foi selecionada If strpbxC2 <> "Abrir" Then -7-

Agrupamento de Escolas da Batalha

160301

txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pC2.Image = imlQuadrados.Images(0) strpbxC2 = "Jogador X" Else pC2.Image = imlQuadrados.Images(1) strpbxC2 = "Jogador O" End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) End Sub Private Sub pbxC3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pC3.Click Dim strFimJogo As String = "" 'Usada para controlar o estado do jogo 'Informar o jogador se a clula j foi selecionada If strpbxC3 <> "Abrir" Then txtOutput.Text = "O quadrado j foi tomado." & _ ControlChars.CrLf & strJogador & " a sua vez." Return 'Deixar o procedimento Sub End If If strJogador = "Jogador X" Then pC3.Image = imlQuadrados.Images(0) strpbxC3 = "Jogador X" Else pC3.Image = imlQuadrados.Images(1) strpbxC3 = "Jogador O" End If 'Chamar o procedimento que verifica se o jogo foi ganho strFimJogo = VerificarVencedor() 'Chamar o procedimento que muda a vez do jogador ou 'exibe uma mensagem a declarar um vencedor DeterminaStatusJogo(strFimJogo) End Sub 'Este procedimento determina se o jogo foi vencido e por quem Function VerificarVencedor() As String 'Verifica a primeira linha If strpbxA1 = strJogador Then If strpbxA2 = strJogador Then If strpbxA3 = strJogador Then Return strJogador End If End If End If 'Verifica a segunda linha If strpbxB1 = strJogador Then If strpbxB2 = strJogador Then If strpbxB3 = strJogador Then Return strJogador End If -8-

Agrupamento de Escolas da Batalha

160301

End If End If 'Verifica a terceira linha If strpbxC1 = strJogador Then If strpbxC2 = strJogador Then If strpbxC3 = strJogador Then Return strJogador End If End If End If 'Verifica a primeira coluna If strpbxA1 = strJogador Then If strpbxB1 = strJogador Then If strpbxC1 = strJogador Then Return strJogador End If End If End If 'Verifica a segunda coluna If strpbxA2 = strJogador Then If strpbxB2 = strJogador Then If strpbxC2 = strJogador Then Return strJogador End If End If End If 'Verifica a terceira coluna If strpbxA3 = strJogador Then If strpbxB3 = strJogador Then If strpbxC3 = strJogador Then Return strJogador End If End If End If 'Verifica a diagonal do canto superior esquerdo para canto inferior direito If strpbxA1 = strJogador Then If strpbxB2 = strJogador Then If strpbxC3 = strJogador Then Return strJogador End If End If End If 'Verifica a diagonal do canto superior direito para baixo esquerda If strpbxA3 = strJogador Then If strpbxB2 = strJogador Then If strpbxC1 = strJogador Then Return strJogador End If End If End If 'Verifica se o jogo resultou em empate Select Case "Abrir" 'Verifica cada clula para ver se ela foi atribuda a um jogador Case strpbxA1 Case strpbxB1 Case strpbxB1 Case strpbxB1 Case strpbxB2 Case strpbxB3 -9-

Agrupamento de Escolas da Batalha

160301

Case strpbxC1 Case strpbxC2 Case strpbxC3 Case Else 'Esta opo executada se todas as clulas foram atribudas Return "Empate" End Select Return "" End Function

'Este procedimento determina se ou no o jogo acaba Private Sub DeterminaStatusJogo(ByVal strFimJogo As String) If strFimJogo = "" Then 'TO jogao ainda no terminou TrocarJogadores() 'Chama o procedimento para trocar a vez dos jogadores 'Coloca uma mensagem a avisar que os jogadores tevem trocar txtOutput.Text = strJogador & " a sua vez." Else If strFimJogo <> "Empate" Then 'Existe um vencedor btnJogar.Enabled = True 'Activa o boto Jogar 'Chamada do procedimento que desactiva as clulas de tabuleiro do jogo DesativarQuadrados() 'Exibe a mensagem de fim do jogo txtOutput.Text = "Fim do Jogo! " & strFimJogo & " ganhou." Else 'The game has resulted in a tie btnJogar.Enabled = True 'Activa o boto Jogar 'Chamada do procedimento que desactiva as clulas de tabuleiro do jogo DesativarQuadrados() 'Exibe a mensagem de fim do jogo txtOutput.Text = "Fim do Jogo! No existe um vencedor." End If End If End Sub

'Este procedimento responsvel por alternar entre os jogadores Private Sub TrocarJogadores() If strJogador = "Jogador X" Then strJogador = "Jogador O" Else strJogador = "Jogador X" End If End Sub

'Este procedimento desactiva as clulas de tabuleiro do jogo Private Sub DesativarQuadrados() pA1.Enabled = False pA2.Enabled = False pA3.Enabled = False pB1.Enabled = False pB2.Enabled = False pB3.Enabled = False pC1.Enabled = False pC2.Enabled = False pC3.Enabled = False End Sub

End Class - 10 -

Agrupamento de Escolas da Batalha

160301

-VERSO 2Esta verso usa uma matriz para controlar cada quadrado do tabuleiro.
Public Class Form2 Dim jogo(3, 3) As Char Dim strJogador As Char Dim contador As Integer = 0

'conta o numero de jogadas

Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load LimparTabuleiro() 'Mostra mensagem inicial txtOutput.Text = "Pressione em JOGAR para comear" End Sub

Private Sub pA1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pA1.Click 'determinar quem est a jogar e colocar a respetiva imagem no picturebox If strJogador = "X" Then pA1.Image = imgLista.Images(0) Else pA1.Image = imgLista.Images(1) End If 'colocar na matriz a jogada realizada jogo(0, 0) = strJogador 'incrementar o contador de jogadas contador += 1 'desativar o picturebox para no ser mais usado pA1.Enabled = False 'verificar se existe um vencedor VerificarVencedor(strJogador) 'fazer a troca de jogador TrocarJogador() End Sub

Public Sub LimparTabuleiro() 'coloca a imagem em branco e ativa todas as picturebox pA1.Image = imgLista.Images(2) pA1.Enabled = True pA2.Image = imgLista.Images(2) pA2.Enabled = True - 11 -

Agrupamento de Escolas da Batalha

160301

pA3.Image = imgLista.Images(2) pA3.Enabled = True pB1.Image = imgLista.Images(2) pB1.Enabled = True pB2.Image = imgLista.Images(2) pB2.Enabled = True pB3.Image = imgLista.Images(2) pB3.Enabled = True pC1.Image = imgLista.Images(2) pC1.Enabled = True pC2.Image = imgLista.Images(2) pC2.Enabled = True pC3.Image = imgLista.Images(2) pC3.Enabled = True 'esvaziar a matriz do jogo For ln = 0 To 2 For cl = 0 To 2 jogo(ln, cl) = Nothing Next Next 'definir quem comea a jogar strJogador = "X" 'define o contador de jogadas contador = 0 'exibe mensagem no boto btnJogar.Text = "JOGAR" End Sub

Public Sub TrocarJogador() ' aps cada jogada necessrio alterar o jogador If strJogador = "X" Then strJogador = "O" Else strJogador = "X" End If 'Coloca a mensagem a identificar de quem a vez txtOutput.Text = "Jogador " & strJogador & " a sua vez." End Sub

Public Sub VerificarVencedor(ByVal simbolo As Char) 'apenas a partir da quinta jogada que possivel existir um vencedor If contador > 4 Then - 12 -

Agrupamento de Escolas da Batalha

160301

'verifica as linhas na matriz If jogo(0, 0) = simbolo And jogo(0, 1) = simbolo And jogo(0, 2) = simbolo Then DeclararVencedor(simbolo) Exit Sub End If If jogo(1, 0) = simbolo And jogo(1, 1) = simbolo And jogo(1, 2) = simbolo Then DeclararVencedor(simbolo) Exit Sub End If If jogo(2, 0) = simbolo And jogo(2, 1) = simbolo And jogo(2, 2) = simbolo Then DeclararVencedor(simbolo) Exit Sub End If 'verifica as colunas na matriz If jogo(0, 0) = simbolo And jogo(1, 0) = simbolo And jogo(2, 0) = simbolo Then DeclararVencedor(simbolo) Exit Sub End If If jogo(0, 1) = simbolo And jogo(1, 1) = simbolo And jogo(2, 1) = simbolo Then DeclararVencedor(simbolo) Exit Sub End If If jogo(2, 0) = simbolo And jogo(2, 1) = simbolo And jogo(2, 2) = simbolo Then DeclararVencedor(simbolo) Exit Sub End If 'verifica as diagonais na matriz If jogo(0, 0) = simbolo And jogo(1, 1) = simbolo And jogo(2, 2) = simbolo Then DeclararVencedor(simbolo) Exit Sub End If If jogo(0, 2) = simbolo And jogo(1, 1) = simbolo And jogo(2, 0) = simbolo Then DeclararVencedor(simbolo) Exit Sub End If 'verificar se existe empate no final das jogadas If contador = 9 Then btnJogar.Text = "NOVO JOGO" MessageBox.Show("O jogo ficou empatado ", "Fim do Jogo", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If End If End Sub

Public Sub DeclararVencedor(ByVal simbolo As Char) txtOutput.Text = "Fim do jogo." 'desativar todas as picturebox para impedir jogada pA1.Enabled = False pA2.Enabled = False pA3.Enabled = False pB1.Enabled = False pB2.Enabled = False pB3.Enabled = False pC1.Enabled = False - 13 -

Agrupamento de Escolas da Batalha

160301

pC2.Enabled = False pC3.Enabled = False btnJogar.Text = "NOVO JOGO" MessageBox.Show("O vencedor o jogador " & simbolo, "Fim do Jogo", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End Sub

Private Sub pA2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pA2.Click If strJogador = "X" Then pA2.Image = imgLista.Images(0) Else pA2.Image = imgLista.Images(1) End If jogo(0, 1) = strJogador contador += 1 pA2.Enabled = False VerificarVencedor(strJogador) TrocarJogador() End Sub

Private Sub pA3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pA3.Click If strJogador = "X" Then pA3.Image = imgLista.Images(0) Else pA3.Image = imgLista.Images(1) End If jogo(0, 2) = strJogador contador += 1 pA3.Enabled = False VerificarVencedor(strJogador) TrocarJogador() End Sub

Private Sub pB1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pB1.Click If strJogador = "X" Then pB1.Image = imgLista.Images(0) Else pB1.Image = imgLista.Images(1) End If jogo(1, 0) = strJogador contador += 1 - 14 -

Agrupamento de Escolas da Batalha

160301

pB1.Enabled = False VerificarVencedor(strJogador) TrocarJogador() End Sub

Private Sub pB2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pB2.Click If strJogador = "X" Then pB2.Image = imgLista.Images(0) Else pB2.Image = imgLista.Images(1) End If jogo(1, 1) = strJogador contador += 1 pB2.Enabled = False VerificarVencedor(strJogador) TrocarJogador() End Sub

Private Sub pB3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pB3.Click If strJogador = "X" Then pB3.Image = imgLista.Images(0) Else pB3.Image = imgLista.Images(1) End If jogo(1, 2) = strJogador contador += 1 pB3.Enabled = False VerificarVencedor(strJogador) TrocarJogador() End Sub

Private Sub pC1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pC1.Click If strJogador = "X" Then pC1.Image = imgLista.Images(0) Else pC1.Image = imgLista.Images(1) End If jogo(2, 0) = strJogador contador += 1 pC1.Enabled = False VerificarVencedor(strJogador) TrocarJogador() - 15 -

Agrupamento de Escolas da Batalha

160301

End Sub

Private Sub pC2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pC2.Click If strJogador = "X" Then pC2.Image = imgLista.Images(0) Else pC2.Image = imgLista.Images(1) End If jogo(2, 1) = strJogador contador += 1 pC2.Enabled = False VerificarVencedor(strJogador) TrocarJogador() End Sub

Private Sub pC3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles pC3.Click If strJogador = "X" Then pC3.Image = imgLista.Images(0) Else pC3.Image = imgLista.Images(1) End If jogo(2, 2) = strJogador contador += 1 pC3.Enabled = False VerificarVencedor(strJogador) TrocarJogador() End Sub

Private Sub btnTerminar_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles btnTerminar.Click Application.Exit() End Sub

Private Sub btnJogar_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles btnJogar.Click LimparTabuleiro() End Sub

End Class

- 16 -

Agrupamento de Escolas da Batalha

160301

-VERSO 3Esta verso usa um vetor para controlar cada quadrado do tabuleiro.

Autor: Jos Macedo

- 17 -

Agrupamento de Escolas da Batalha

160301

Public Class Form1 Dim vetor(8) As String Dim jogador, pontos1, pontos2 As Integer Dim jogador1, jogador2 As String Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox1.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox1.Image = ImageList1.Images(0) jogador += 1 vetor(0) = "x" Else PictureBox1.Image = ImageList1.Images(1) jogador += 1 vetor(0) = "o" End If acabou() PictureBox1.Enabled = False End Sub Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox2.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox2.Image = ImageList1.Images(0) jogador += 1 vetor(1) = "x" Else PictureBox2.Image = ImageList1.Images(1) jogador += 1 vetor(1) = "o" End If acabou() PictureBox2.Enabled = False End Sub Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox3.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox3.Image = ImageList1.Images(0) jogador += 1 vetor(2) = "x" Else PictureBox3.Image = ImageList1.Images(1) jogador += 1 vetor(2) = "o" End If acabou() PictureBox3.Enabled = False End Sub Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox4.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox4.Image = ImageList1.Images(0) jogador += 1 vetor(3) = "x" Else PictureBox4.Image = ImageList1.Images(1) jogador += 1 vetor(3) = "o" End If acabou() PictureBox4.Enabled = False

- 18 -

Agrupamento de Escolas da Batalha

160301

End Sub Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox5.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox5.Image = ImageList1.Images(0) jogador += 1 vetor(4) = "x" Else PictureBox5.Image = ImageList1.Images(1) jogador += 1 vetor(4) = "o" End If acabou() PictureBox5.Enabled = False End Sub Private Sub PictureBox6_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox6.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox6.Image = ImageList1.Images(0) jogador += 1 vetor(5) = "x" Else PictureBox6.Image = ImageList1.Images(1) jogador += 1 vetor(5) = "o" End If acabou() PictureBox6.Enabled = False End Sub Private Sub PictureBox7_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox7.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox7.Image = ImageList1.Images(0) jogador += 1 vetor(6) = "x" Else PictureBox7.Image = ImageList1.Images(1) jogador += 1 vetor(6) = "o" End If acabou() PictureBox7.Enabled = False End Sub Private Sub PictureBox8_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox8.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox8.Image = ImageList1.Images(0) jogador += 1 vetor(7) = "x" Else PictureBox8.Image = ImageList1.Images(1) jogador += 1 vetor(7) = "o" End If acabou() PictureBox8.Enabled = False End Sub

- 19 -

Agrupamento de Escolas da Batalha

160301

Private Sub PictureBox9_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles PictureBox9.Click If jogador = 0 Or jogador = 2 Or jogador = 4 Or jogador = 6 Or jogador = 8 Then PictureBox9.Image = ImageList1.Images(0) jogador += 1 vetor(8) = "x" Else PictureBox9.Image = ImageList1.Images(1) jogador += 1 vetor(8) = "o" End If acabou() PictureBox9.Enabled = False End Sub Public Sub acabou() If vetor(0) = "x" And vetor(1) = "x" And vetor(2) = "x" Then Label2.Text = pontos1 pontos1 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador1 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(0) = "x" And vetor(3) = "x" And vetor(6) = "x" Then Label2.Text = pontos1 pontos1 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador1 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(0) = "x" And vetor(4) = "x" And vetor(8) = "x" Then Label2.Text = pontos1 pontos1 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2)

- 20 -

Agrupamento de Escolas da Batalha

160301

MessageBox.Show("Jogador: " & jogador1 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(1) = "x" And vetor(4) = "x" And vetor(7) = "x" Then Label2.Text = pontos1 pontos1 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador1 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(2) = "x" And vetor(5) = "x" And vetor(8) = "x" Then Label2.Text = pontos1 pontos1 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador1 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(3) = "x" And vetor(4) = "x" And vetor(5) = "x" Then Label2.Text = pontos1 pontos1 += 1

- 21 -

Agrupamento de Escolas da Batalha

160301

Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador1 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(6) = "x" And vetor(7) = "x" And vetor(8) = "x" Then Label2.Text = pontos1 pontos1 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador1 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(2) = "x" And vetor(4) = "x" And vetor(6) = "x" Then Label2.Text = pontos1 pontos1 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador1 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If

- 22 -

Agrupamento de Escolas da Batalha

160301

If vetor(0) = "o" And vetor(1) = "o" And vetor(2) = "o" Then pontos2 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador2 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(0) = "o" And vetor(3) = "o" And vetor(6) = "o" Then pontos2 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador2 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(0) = "o" And vetor(4) = "o" And vetor(8) = "o" Then pontos2 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador2 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If

- 23 -

Agrupamento de Escolas da Batalha

160301

If vetor(1) = "o" And vetor(4) = "o" And vetor(7) = "o" Then pontos2 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador2 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(2) = "o" And vetor(5) = "o" And vetor(8) = "o" Then pontos2 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador2 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(3) = "o" And vetor(4) = "o" And vetor(5) = "o" Then pontos2 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador2 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If

- 24 -

Agrupamento de Escolas da Batalha

160301

If vetor(6) = "o" And vetor(7) = "o" And vetor(8) = "o" Then pontos2 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador2 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If vetor(2) = "o" And vetor(4) = "o" And vetor(6) = "o" Then pontos2 += 1 Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Jogador: " & jogador2 & " Ganhou!!!", "GANHOU!", _ MessageBoxButtons.OK, MessageBoxIcon.Exclamation) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If If jogador = 9 Then Label4.Text = pontos2 Label2.Text = pontos1 Form2.pontos(pontos1, pontos2) MessageBox.Show("Empate", "Empate", MessageBoxButtons.OK, _ MessageBoxIcon.Information) If MessageBox.Show("Deseja sair?", "Sair", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Form2.Close() Else jogador = Nothing For ctd = 0 To 8 vetor(ctd) = Nothing Next Form2.Show() Me.Close() End If End If End Sub

- 25 -

Agrupamento de Escolas da Batalha

160301

Public Sub jogadores(ByVal jogador1f As String, ByVal jogador2f As String) jogador1 = jogador1f jogador2 = jogador2f End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles _ Me.Load Me.Visible = False End Sub

Public Sub pontos(ByVal pontosh1, ByVal pontosh2) pontos1 = pontosh1 pontos2 = pontosh2 Label2.Text = pontos1 Label4.Text = pontos2 End Sub End Class

- 26 -

Você também pode gostar