Pagina precedente | 1 | Pagina successiva

Come creare il gioco del Tris

Ultimo Aggiornamento: 21/11/2010 22:40
Autore
Stampa | Notifica email    
OFFLINE
Post: 7
Città: MILANO
Età: 40
Sesso: Maschile
21/11/2010 22:40

Salve ragazzi oggi voglio spiegare come creare il gioco del tris. Allora,creiamo la form e inseriamo un Panel con la grandezza di 302:302,ora impostiamo la proprietà BordyStyle in Fixed Single,andiamo nella pagina dei codici,cancelliamo tutto e ci incolliamo il seguente 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 


Ecco un esempio:


ciao e spero di essere stato utile..scrivete in caso di problemi.
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum

Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Crea forum gratis, gestisci la tua comunità! Iscriviti a FreeForumZone
FreeForumZone [v.6.1] - Leggendo la pagina si accettano regolamento e privacy
Tutti gli orari sono GMT+01:00. Adesso sono le 16:13. Versione: Stampabile | Mobile
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com