• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Release [Open Source] Tic Tac Toe [Open Source]

InvisibleMan

Utente Assiduo
Autore del topic
20 Maggio 2010
687
57
Miglior risposta
0
Salve a tutti oggi vi presento questo semplice programmino fatto da me in Visual Basic 2008, questo programma lo ho creato in pochi minuti non avendo niente da fare :emoji_relieved:

Screen :

Perfavore, Entra oppure Registrati per vedere i Link!

Scansione :

Perfavore, Entra oppure Registrati per vedere i Link!

Download :

Perfavore, Entra oppure Registrati per vedere i Link!

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

P.S : Accetto consigli per migliorarlo, Alla Prossima!
 
Riferimento: [Open Source] Tic Tac Toe [Open Source]

Se il codice è tuo, bravo :emoji_relieved:
 
Riferimento: [Open Source] Tic Tac Toe [Open Source]

@mattybravo no, non sono io quell'utente comunque ti posso garantire che il sorgente è mio :emoji_relieved:
P.S. Grazie per il complimento :emoji_smiley:
 
Riferimento: [Open Source] Tic Tac Toe [Open Source]

ah ok. Anche le classi sono uguali XD. quando è che hai scritto questo sorgente?
 
Riferimento: [Open Source] Tic Tac Toe [Open Source]

@mattybravo in realtà questo programma lo avevo da un pò di tempo nel pc ammuffito nella cartella... Infatti non posto molte guide ma mi è venuta la voglia di condividere sto progetto con voi, poi ti ho lo creai in poco tempo è semplice il codice :emoji_smiley:
 
Riferimento: [Open Source] Tic Tac Toe [Open Source]

Se è tuo.. Bravo per il codice, migliora la grafica ;)
 
Riferimento: [Open Source] Tic Tac Toe [Open Source]

@Fidelix ho già detto che sto programma l'ho fatto in poco tempo e con dei semplici codici comunque grazie :emoji_smiley:
 
Riferimento: [Open Source] Tic Tac Toe [Open Source]

Carino,
Però si potrebbe migliorare inserendo tipo l'opzione 'VS PC', l'unica cosa è che non è semplice calcolare la casella dove il PC deve fare la sua mossa, bisognerebbe calcolare tutte le combinazioni che in tic tac toe non è molto difficile,
Comunque bravo :emoji_slight_smile:

Emilio.
 
@mattybravo in realtà questo programma lo avevo da un pò di tempo nel pc ammuffito nella cartella... Infatti non posto molte guide ma mi è venuta la voglia di condividere sto progetto con voi, poi ti ho lo creai in poco tempo è semplice il codice :emoji_smiley:

Impossibile, è uguale al link postato da matty.

Inviato dal mio GT-S5570 con Tapatalk 2
 
Ultima modifica: