Nestas aulas, após ter feito o teste de avaliação que é o sistema de Gestão Escolar, estamos a programar jogos.
Hoje, vou apresentar o meu jogo do galo que foi feito com apoio de um site e esta todo comentado para melhor perceber.
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.
'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
'verificar 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("I:\jogo\circulo.bmp") '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
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("I:\jogo\X.bmp")
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 1jogador
If PictBox1 = 0 And PictBox2 = 0 And PictBox3 = 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 no continuarem
PlacarJoga_1 = PlacarJoga_1 + 1 'ir colocar no total das cotaes mais um. Por outras palavras, um contador para saber o resultado
Form1.Label5.Text = PlacarJoga_1 'ira escrever o resultado das cotaes
MsgBox("Parabns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox4 = 0 And PictBox5 = 0 And PictBox6 = 0 Then 'linha2 ...
liga_desliga(False)
PlacarJoga_1 = PlacarJoga_1 + 1
Form1.Label5.Text = PlacarJoga_1
MsgBox("Parabns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox7 = 0 And PictBox8 = 0 And PictBox9 = 0 Then ' linha3 ...
liga_desliga(False)
PlacarJoga_1 = PlacarJoga_1 + 1
Form1.Label2.Text = PlacarJoga_1
MsgBox("Parabns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox1 = 0 And PictBox4 = 0 And PictBox7 = 0 Then 'coluna1 ...
liga_desliga(False)
PlacarJoga_1 = PlacarJoga_1 + 1
Form1.Label5.Text = PlacarJoga_1
MsgBox("Parabns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox2 = 0 And PictBox5 = 0 And PictBox8 = 0 Then ' coluna2 ...
liga_desliga(False)
PlacarJoga_1 = PlacarJoga_1 + 1
Form1.Label5.Text = PlacarJoga_1
MsgBox("Parabns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox3 = 0 And PictBox6 = 0 And PictBox9 = 0 Then 'coluna3 ...
liga_desliga(False)
PlacarJoga_1 = PlacarJoga_1 + 1
Form1.Label5.Text = PlacarJoga_1
MsgBox("Parabns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox1 = 0 And PictBox5 = 0 And PictBox9 = 0 Then ' diagonal(1,5,9) ...
liga_desliga(False)
PlacarJoga_1 = PlacarJoga_1 + 1
Form1.Label5.Text = PlacarJoga_1
MsgBox("Parabns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox3 = 0 And PictBox5 = 0 And PictBox7 = 0 Then 'diagonal(3, 5, 7) ...
liga_desliga(False)
PlacarJoga_1 = PlacarJoga_1 + 1
Form1.Label5.Text = PlacarJoga_1
MsgBox("Parabns " & Jogador1 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
'mesma coisa, mas para o caso do jogador 2
Else
If PictBox1 = 1 And PictBox2 = 1 And PictBox3 = 1 Then
liga_desliga(False)
PlacarJoga_2 = PlacarJoga_2 + 1
Form1.Label6.Text = PlacarJoga_2
MsgBox("Parabns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox4 = 1 And PictBox5 = 1 And PictBox6 = 1 Then
liga_desliga(False)
PlacarJoga_2 = PlacarJoga_2 + 1
Form1.Label6.Text = PlacarJoga_2
MsgBox("Parabns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox7 = 1 And PictBox8 = 1 And PictBox9 = 1 Then
liga_desliga(False)
PlacarJoga_2 = PlacarJoga_2 + 1
Form1.Label6.Text = PlacarJoga_2
MsgBox("Parabns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox1 = 1 And PictBox4 = 1 And PictBox7 = 1 Then
liga_desliga(False)
PlacarJoga_2 = PlacarJoga_2 + 1
Form1.Label6.Text = PlacarJoga_2
MsgBox("Parabns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox2 = 1 And PictBox5 = 1 And PictBox8 = 1 Then
liga_desliga(False)
PlacarJoga_2 = PlacarJoga_2 + 1
Form1.Label6.Text = PlacarJoga_2
MsgBox("Parabns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox3 = 1 And PictBox6 = 1 And PictBox9 = 1 Then
liga_desliga(False)
PlacarJoga_2 = PlacarJoga_2 + 1
Form1.Label6.Text = PlacarJoga_2
MsgBox("Parabns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
If PictBox1 = 1 And PictBox5 = 1 And PictBox9 = 1 Then
liga_desliga(False)
PlacarJoga_2 = PlacarJoga_2 + 1
Form1.Label6.Text = PlacarJoga_2
MsgBox("Parabns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou")
Exit Sub
End If
If PictBox3 = 1 And PictBox5 = 1 And PictBox7 = 1 Then
liga_desliga(False)
PlacarJoga_2 = PlacarJoga_2 + 1
Form1.Label6.Text = PlacarJoga_2
MsgBox("Parabns " & Jogador2 & ", ganhou.", MsgBoxStyle.Information, "Ganhou!!!")
Exit Sub
End If
End If
Empate()
End Sub
Public Sub limpa_tudo()
' inicializa 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 para cada caso se empate
' 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 = PictBox1 + PictBox2 + PictBox3 + PictBox4 + PictBox5 + PictBox6 + PictBox7 + PictBox8 + PictBox9
'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 no tinham terminado o jogo todo ou anterioemnete seriam conantado como victoria)
If res = 5 Or res = 4 Then
placa_emp = placa_emp + 1 'ir colocar no total das cotaes mais um. Por outras palavras, um contador para saber o numero total de empate
Form1.Label7.Text = placa_emp 'ira escrever o resultado das cotaes
MsgBox("Ningum ganhou", MsgBoxStyle.Exclamation, "Empate!!!")
End If
End Sub
End Module
'Fonte:
'http://www.codigofonte.net/scripts/vbnet/jogos/1700_jogo-da-velha-para-duas-pessoas
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 PictureBox1.Click
'ira permitir distinguir a imagem dependendo do valor do joga_vez e depois desactivar, para que 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 que 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 que 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 que 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 que 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 que 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 que 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 que 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 que 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 quer 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
End Class
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' os utilizadores irám colocar os nomes para cada jogadores
Jogador1 = TextBox1.Text
Jogador2 = TextBox2.Text
Form1.Show() 'volta para o form1
Form1.Circulo.Visible = True 'permite ser visivel o circulo para inicalizar a jogada para o 1ºjogador
Form1.Label1.Text = Jogador1 & ", é a sua vez."
Form1.Joga1.Text = Jogador1 & ":"
Form1.Joga2.Text = Jogador2 & ":"
Me.Close() 'fechar
liga_desliga(True) 'permitir que possa ser utilizados as variaveis
End Sub