- 7 Gennaio 2010
- 612
- 0
- Miglior risposta
- 0
Ciao a tutti, oggi vi spiego come creare un Tris (Tic Tat Toe) In Vb.net
Ciò che segue permette di realizzare il gioco del Tris, nota bene che è Umano Vs Umano, senza l'implementazione dell'intelligenza artificiale.
Il primo a partire, il Giocatore 1, ha la Croce, il secondo, il Giocatore 2, il Cerchio.
-Creiamo una Form
-inseriamo dentro alla form un panel con la grandezza di 302x302
-cliccate sul panel e impostate la proprietà BorderStyle in Fixed Single
-Cliccate due volte sulla form, cancelliamo tutto e inseriamo questo codice:
Ed ecco come verrà il nostro tris!
Ps: il tris funziona umano vs umano, cioè 2 giocatori, non umano vs computer
Fonte:
Ciò che segue permette di realizzare il gioco del Tris, nota bene che è Umano Vs Umano, senza l'implementazione dell'intelligenza artificiale.
Il primo a partire, il Giocatore 1, ha la Croce, il secondo, il Giocatore 2, il Cerchio.
-Creiamo una Form
-inseriamo dentro alla form un panel con la grandezza di 302x302
-cliccate sul panel e impostate la proprietà BorderStyle in Fixed Single
-Cliccate due volte sulla form, cancelliamo tutto e inseriamo questo codice:
Public Class Form1
Private statoCaselle(2, 2) As Integer
Private areaCaselle(2, 2) As Rectangle
Private turnoGiocatore1, turnoGiocatore2 As Boolean
Private numeroMosse As Integer = 0
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
e.Graphics.DrawLine(Pens.Black, 101, 0, 101, 302)
e.Graphics.DrawLine(Pens.Black, 202, 0, 202, 302)
e.Graphics.DrawLine(Pens.Black, 0, 101, 302, 101)
e.Graphics.DrawLine(Pens.Black, 0, 202, 302, 202)
For i As Integer = 0 To statoCaselle.GetLength(0) - 1
For j As Integer = 0 To statoCaselle.GetLength(1) - 1
Select Case (statoCaselle(i, j))
Case 0 : e.Graphics.DrawEllipse(Pens.Black, areaCaselle(i, j).X + 10, areaCaselle(i, j).Y + 10, 80, 80)
Case 1 : e.Graphics.DrawLine(Pens.Black, areaCaselle(i, j).X + 10, areaCaselle(i, j).Y + 10, areaCaselle(i, j).X + 90, areaCaselle(i, j).Y + 90)
e.Graphics.DrawLine(Pens.Black, areaCaselle(i, j).X + 90, areaCaselle(i, j).Y + 10, areaCaselle(i, j).X + 10, areaCaselle(i, j).Y + 90)
End Select
Next
Next
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To statoCaselle.GetLength(0) - 1
For j As Integer = 0 To statoCaselle.GetLength(1) - 1
statoCaselle(i, j) = -1
areaCaselle(i, j) = New Rectangle(i * 101, j * 101, 100, 100)
Next
Next
turnoGiocatore1 = True
turnoGiocatore2 = False
numeroMosse = 0
End Sub
Private Sub Panel1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Panel1.Click
End Sub
Private Sub Panel1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseClick
Dim x, y As Integer
x = -1
y = -1
For i As Integer = 0 To statoCaselle.GetLength(0) - 1
For j As Integer = 0 To statoCaselle.GetLength(1) - 1
If (areaCaselle(i, j).Contains(e.X, e.Y)) Then
x = i
y = j
End If
Next
Next
If (statoCaselle(x, y) = -1) Then
numeroMosse = numeroMosse + 1
statoCaselle(x, y) = Convert.ToInt32(turnoGiocatore1)
turnoGiocatore1 = Not turnoGiocatore1
turnoGiocatore2 = Not turnoGiocatore2
Else
MsgBox("errore, casella occupata")
End If
Dim simbolo As Integer = -1
Panel1.Refresh()
If (finePartita(simbolo)) Then
Dim s As String = ""
If (simbolo = 0) Then
s = "cerchio"
MsgBox("Il vincitore è il giocatore che usa il simbolo : " + s)
ElseIf (simbolo = 1) Then
s = "croce"
MsgBox("Il vincitore è il giocatore che usa il simbolo : " + s)
Else
MsgBox("la partita è finita in parità")
End If
If (MsgBox("Vuoi giocare una nuova partita ? ", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then
Me.Form1_Load(Me, New EventArgs())
Panel1.Refresh()
Else
Application.Exit()
End If
End If
End Sub
Private Function finePartita(ByRef simboloVincente As Integer) As Boolean
Dim rigaV As Boolean = True
Dim colonnaV As Boolean = True
Dim fine As Boolean = False
Dim simbolo As Integer = -1
simboloVincente = -1
If (numeroMosse < 9) Then
For i As Integer = 0 To statoCaselle.GetLength(0) - 1
Dim contatore As Integer = 0
simbolo = statoCaselle(i, 0)
For j As Integer = 0 To statoCaselle.GetLength(1) - 1
If (simbolo = statoCaselle(i, j) And Not simbolo = -1) Then
contatore = contatore + 1
End If
Next
If (contatore = 3) Then
fine = True
simboloVincente = simbolo
Continue For
End If
Next
If (Not fine) Then
For i As Integer = 0 To statoCaselle.GetLength(0) - 1
Dim contatore As Integer = 0
simbolo = statoCaselle(0, i)
For j As Integer = 0 To statoCaselle.GetLength(1) - 1
If (simbolo = statoCaselle(j, i) And Not simbolo = -1) Then
contatore = contatore + 1
End If
Next
If (contatore = 3) Then
fine = True
simboloVincente = simbolo
Continue For
End If
Next
End If
If (Not fine) Then
Dim contatore As Integer = 0
simbolo = statoCaselle(0, 0)
For i As Integer = 0 To statoCaselle.GetLength(0) - 1
If (simbolo = statoCaselle(i, i) And Not simbolo = -1) Then
contatore = contatore + 1
End If
If (contatore = 3) Then
fine = True
simboloVincente = simbolo
Continue For
End If
Next
End If
If (Not fine) Then
Dim contatore As Integer = 0
simbolo = statoCaselle(2, 0)
For i As Integer = 0 To statoCaselle.GetLength(0) - 1
If (simbolo = statoCaselle(2 - i, i) And Not simbolo = -1) Then
contatore = contatore + 1
End If
If (contatore = 3) Then
fine = True
simboloVincente = simbolo
Continue For
End If
Next
End If
Else
fine = True
End If
finePartita = fine
End Function
End Class
Ed ecco come verrà il nostro tris!
Ps: il tris funziona umano vs umano, cioè 2 giocatori, non umano vs computer
Fonte:
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
(NO SPAM)
Ultima modifica: