Option Explicit On

Option Strict On

 

Public Class FRMFinestra

 

    'VARIABILI GLOGALI

    Dim Pausa As Boolean = False

    Dim cVelocita As Integer = 10

    Dim cNCasella As Integer = 1

    Dim cArrey(,) As Integer = New Integer(200, 200) {}

    Dim cArreyNomeCasella() As Integer = New Integer(200) {}

    Dim CDirezionePresa() As Integer = New Integer(200) {}

    Dim cMossaFatta As Integer = 0

    Dim CambioGobba As Boolean = False

    Dim cNumeroTotaleUnita As Integer = 0

    Dim cNPunti As Integer = 0

    Dim Inizio As Boolean = True

    Dim cDirezionePrecedente As Integer = 39

    Dim cDirezione As Integer

    Dim cCambioDirezione As Boolean

    Dim cPosizionePunto As Point

    Dim cDirezioneSecondaCasella() As Integer = New Integer(2) {}

    'VARIABILI CHE MI SERVONO PER LO SFONDO/MURI

    Public cSenzaMuro As Boolean = False

    Public cTipoSfondo As Integer = 0

    Public cMangiato As Boolean = False

    'PERCORSO RELATIVO

    Dim Percorso As String = "C:\Net\Snake\Serpentone"

    'TESTA

    Dim cImmagineTestaDestra As Image

    Dim cImmagineTestaSinistra As Image

    Dim cImmagineTestaBasso As Image

    Dim cImmagineTestaAlto As Image

    'CODA

    Dim cImmagineCodaDestra As Image

    Dim cImmagineCodaSinistra As Image

    Dim cImmagineCodaBasso As Image

    Dim cImmagineCodaAlto As Image

    'CORPO

    Dim cImmagineGobbaDestra As Image

    Dim cImmagineGobbaSinistra As Image

    Dim cImmagineGobbaDestraAlto As Image

    Dim cImmagineGobbaSinistraAlto As Image

    'CURVE

    Dim cImmagineCurva5 As Image

    Dim cImmagineCurva6 As Image

    Dim cImmagineCurva7 As Image

    Dim cImmagineCurva8 As Image

    'MURI

    Dim cImmagineMuro As Image

    'SFONDO ERBA

 

    'MOSCA O PUNTO

    Dim cImmagineMosca As Image

    'SFONDO A DESTRA (CON E SENZA SCRITTA)

    Dim cImmagineSfondoDestra As Image

    Dim cImmagineSfondoDestraConScritta As Image

    'SFONDO CON FIUME

    Public CImmagineSfondoFiume As Image

    'SFONDO CON IL LABIRINTO

    Public CImmagineSfondoLabirinto As Image

    'IMMAGINE SOPRA IL LABIRINTO

    'POSIONE LABIRINTO

    Dim cMargineX As Integer = 140

    Dim cMargineY As Integer = 180

    'PUNTI IN CUI PASSA IL FIUME

    Dim PuntoLabirintoFiume() As Point = New Point(15) {}

    Dim PuntoLabirintoLabirinto() As Point = New Point(34) {}

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

        CARICA_IMMAGINI()

 

        CARICA_PUNTI_SFONDO()

 

        LBLPunteggio.Visible = False

 

        INIZIA_PARTITA()

 

    End Sub

 

    Private Sub CANCELLA_CORPO()

 

        'Cancello il corpo

        For i As Integer = 1 To cNCasella

            Dim P As PictureBox = CType(Me.Controls.Item("Casella" & i), PictureBox)

            Me.Controls.Remove(P)

        Next

 

        'Cancello la mosca (Punto)

        Dim Pp As PictureBox = CType(Me.Controls.Item("Mosca" & cNPunti - 1), PictureBox)

        Me.Controls.Remove(Pp)

 

        LBLPunteggio.Visible = False

 

    End Sub

 

    Private Sub RESETTA_VARIABILI()

 

        cNCasella = 1

        'cArrey() = New Integer(200, 200) {}

        For i As Integer = 0 To 120

            For ii As Integer = 0 To 120

                cArrey(i, ii) = 0

            Next

        Next

 

        cCambioDirezione = False

        Array.Clear(cArreyNomeCasella, 0, cArreyNomeCasella.Length)

        Array.Clear(CDirezionePresa, 0, CDirezionePresa.Length)

        cMossaFatta = 0

        CambioGobba = False

        cNumeroTotaleUnita = 0

        cNPunti = 0

        Inizio = True

        cDirezionePrecedente = 39

 

    End Sub

 

    Private Sub INIZIA_PARTITA()

 

        CREA_LE_TRE_CASELLE_INTERMEDIE()

 

        'Sposto la testa e la coda in posizione iniziale

        Dim Punto As Point = New Point(90, 70)

        PICTesta.Location = Punto

        PICTesta.Image = cImmagineTestaDestra

 

        Dim PuntoB As Point = New Point(30, 70)

        CType(Me.Controls("Casella" & cArreyNomeCasella(1)), PictureBox).Location = PuntoB

        CDirezionePresa(0) = 39

 

        PICCoda.Location = PuntoB

 

        PICCoda.Image = cImmagineCodaDestra

 

        cDirezioneSecondaCasella(0) = 2

        cDirezioneSecondaCasella(1) = 2

        cDirezione = 39

        cCambioDirezione = False

 

        MUOVI_SERPENTE(cDirezione, cCambioDirezione)

 

    End Sub

 

    Private Function COLPITO_COSE_DI_SFONDO(ByVal X As Integer, ByVal Y As Integer, ByVal Sfondo As Integer) As Boolean

 

        'CONTROLLO CHE NON COLPISCO IL FIUME

        Select Case Sfondo

            Case Is = 1

                For i As Integer = 1 To 9

                    If PuntoLabirintoFiume(i).X = X And PuntoLabirintoFiume(i).Y = Y Then

                        Return True

                    End If

                Next

                Return False

            Case Is = 2

                For i As Integer = 1 To 34

                    If PuntoLabirintoLabirinto(i).X = X And PuntoLabirintoLabirinto(i).Y = Y Then

                        Return True

                    End If

                Next i

                Return False

        End Select

 

    End Function

 

    Private Sub CARICA_PUNTI_SFONDO()

 

        PuntoLabirintoFiume(1) = New Point(10, 110)

        PuntoLabirintoFiume(2) = New Point(20, 110)

        PuntoLabirintoFiume(3) = New Point(30, 110)

        PuntoLabirintoFiume(4) = New Point(60, 110)

        PuntoLabirintoFiume(5) = New Point(70, 110)

        PuntoLabirintoFiume(6) = New Point(80, 110)

        PuntoLabirintoFiume(7) = New Point(90, 110)

        PuntoLabirintoFiume(8) = New Point(120, 110)

        PuntoLabirintoFiume(9) = New Point(130, 110)

 

        'Prima linea orizzontale

        PuntoLabirintoLabirinto(1) = New Point(80, 60)

        PuntoLabirintoLabirinto(2) = New Point(90, 60)

        PuntoLabirintoLabirinto(3) = New Point(100, 60)

        PuntoLabirintoLabirinto(4) = New Point(110, 60)

        PuntoLabirintoLabirinto(5) = New Point(60, 60)

        PuntoLabirintoLabirinto(6) = New Point(50, 60)

        PuntoLabirintoLabirinto(7) = New Point(40, 60)

        PuntoLabirintoLabirinto(8) = New Point(30, 60)

        'Seconda linea orizzontale

        PuntoLabirintoLabirinto(9) = New Point(80, 160)

        PuntoLabirintoLabirinto(10) = New Point(90, 160)

        PuntoLabirintoLabirinto(11) = New Point(100, 160)

        PuntoLabirintoLabirinto(12) = New Point(110, 160)

        PuntoLabirintoLabirinto(13) = New Point(60, 160)

        PuntoLabirintoLabirinto(14) = New Point(50, 160)

        PuntoLabirintoLabirinto(15) = New Point(40, 160)

        PuntoLabirintoLabirinto(16) = New Point(30, 160)

        'Linea Verticale sinistra

        PuntoLabirintoLabirinto(17) = New Point(30, 70)

        PuntoLabirintoLabirinto(18) = New Point(30, 80)

        PuntoLabirintoLabirinto(19) = New Point(30, 90)

        PuntoLabirintoLabirinto(20) = New Point(30, 100)

        PuntoLabirintoLabirinto(22) = New Point(30, 120)

        PuntoLabirintoLabirinto(23) = New Point(30, 130)

        PuntoLabirintoLabirinto(24) = New Point(30, 140)

        PuntoLabirintoLabirinto(25) = New Point(30, 150)

        'Linea Verticale Destra

        PuntoLabirintoLabirinto(26) = New Point(110, 70)

        PuntoLabirintoLabirinto(27) = New Point(110, 80)

        PuntoLabirintoLabirinto(28) = New Point(110, 90)

        PuntoLabirintoLabirinto(29) = New Point(110, 100)

        PuntoLabirintoLabirinto(30) = New Point(110, 120)

        PuntoLabirintoLabirinto(31) = New Point(110, 130)

        PuntoLabirintoLabirinto(32) = New Point(110, 140)

        PuntoLabirintoLabirinto(33) = New Point(110, 150)

 

    End Sub

 

 

    Private Sub CAMBIO_DIREZIONE_TASTO_PREMUTO(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

 

        'Pausa

        If e.KeyValue = 13 Then

 

            If Pausa = True Then

                Pausa = False

                Tempo.Enabled = True

                LBLPausa.Visible = False

            Else

                Pausa = True

                Tempo.Enabled = False

                LBLPausa.Visible = True

            End If

 

        End If

 

        If Pausa = False Then

 

            'Variabile che mi permette di sapere se ho appena iniziato la partita

            If Inizio = True Then

                PICOpzioni.Image = cImmagineSfondoDestra

                PICOpzioni.Visible = True

                LBLPunteggio.Visible = True

                Inizio = False

                CREA_PUNTO()

                Tempo.Enabled = True

            End If

 

            cMossaFatta = cMossaFatta + 1

 

            If cMossaFatta = 1 Then

 

                'Direzione che prende la testa

                Dim Direzione As Integer = e.KeyValue

 

                'Se la mossa non è consentita non consento di modificare la direzione intrapresa

                If MOSSA_CONSENTITA(Direzione) = False Then Exit Sub

 

                'Controllo se ho cambiato direzione

                If cDirezionePrecedente = Direzione Then

                    cCambioDirezione = False

                Else

                    cCambioDirezione = True

                    cDirezionePrecedente = Direzione

                    cDirezione = Direzione

                End If

 

            End If

 

        End If

 

    End Sub

 

    Private Sub PREPARA_PER_NUOVA_PARTITA()

 

        CANCELLA_CORPO()

        RESETTA_VARIABILI()

        INIZIA_PARTITA()

        'Cambio lo sfondo

        PICOpzioni.Image = cImmagineSfondoDestraConScritta

 

    End Sub

 

    Private Function MOSSA_CONSENTITA(ByVal Direzione As Integer) As Boolean

 

        '        Alto (38)

        'Sinistra (39)   Destra (37)

        '       Basso (40)

 

        If DIREZIONE = 38 And cDirezionePrecedente = 40 Then

            Return False

        End If

 

        If DIREZIONE = 40 And cDirezionePrecedente = 38 Then

            Return False

        End If

 

        If Direzione = 39 And cDirezionePrecedente = 37 Then

            Return False

        End If

 

        If Direzione = 37 And cDirezionePrecedente = 39 Then

            Return False

        End If

 

        'CONTROLLO CHE IL TASTO PREMUTO VADA BENE

        If Direzione = 37 Or Direzione = 38 Or Direzione = 39 Or Direzione = 40 Then

            Return True

        Else

            Return False

        End If

 

 

 

 

    End Function

 

    Private Sub MUOVI_SERPENTE(ByVal DIREZIONE As Integer, ByVal CambioDirezione As Boolean)

 

        'Salvo la posizione della testa e dell'ultima casella

        Dim PosizionePrima As Point = PICTesta.Location

        Dim PosizioneUltima As Point = CType(Me.Controls("Casella" & cArreyNomeCasella(1)), PictureBox).Location

 

        Dim DirezioneCoda As Integer = CDirezionePresa(0)

        CDirezionePresa(cNCasella - 1) = DIREZIONE

 

        'Salvo le direzioni

        cDirezioneSecondaCasella(1) = cDirezioneSecondaCasella(0)

        cDirezioneSecondaCasella(0) = DIREZIONE

 

        Dim DirezioneSecondaCasella As Integer = cDirezioneSecondaCasella(1)

 

        Dim Risposta As Integer = 0

 

        'Sposto la testa

        SPOSTA_IMMAGINE(PICTesta, DIREZIONE)

        CAMBIA_BITMAP_TESTA(DIREZIONE)

 

        'Se ho mangiato una casella (nel giro prima)

        'aspetto a muovere la coda ma creo una casella

        'nello spazio lasciato libero

        If cMangiato = False Then

            'Sposto la coda

            SPOSTA_IMMAGINE(PICCoda, PosizioneUltima)

            CAMBIA_BITMAP_CODA(DirezioneCoda)

        Else

            CREA_CASELLA(PosizioneUltima.X, PosizioneUltima.Y, DirezioneCoda)

            'Faccio fare un giro a tutte le posizione

            'dell'arrey per poter aver le giuste posizioni 

            For i As Integer = 0 To cNCasella - 3

                CAMBIA_POSIZIONI_ARREY()

            Next

        End If

 

        'Sposto l'ultima casella nella posizione lasciata dalla testa

        SPOSTA_IMMAGINE(CType(Me.Controls("Casella" & cArreyNomeCasella(1)), PictureBox), PosizionePrima)

        CAMBIA_BITMAP_CORPO((CType(Me.Controls("Casella" & cArreyNomeCasella(1)), PictureBox)), DirezioneSecondaCasella)

 

        'Creo la curva se ho cambiato direzione

        If CambioDirezione = True Then

            CREA_BITMAP_CURVA(((CType(Me.Controls("Casella" & cArreyNomeCasella(1)), PictureBox))), DIREZIONE, DirezioneSecondaCasella)

        End If

 

        'Elimino il vecchio punto e ne creo uno nuovo

        If CONTROLLA_SE_MANGIO() = True Then

            Dim P As PictureBox = CType(Me.Controls.Item("Mosca" & cNPunti - 1), PictureBox)

            Me.Controls.Remove(P)

            CREA_PUNTO()

            cMangiato = True

        Else

            cMangiato = False

        End If

 

 

        '1=Tutto a posto 0= collisione con il corpo

        '2=collisione con il muro

        Dim Collisione As Integer = CONTROLLA_COLLISIONE_AVVENUTA()

        'Controllo la fine del gioco

        If Collisione = 0 Or (Collisione = 2 And cSenzaMuro = False) Then

            Tempo.Enabled = False

            Risposta = MsgBox("Hai fatto " & cNPunti & " punti" & vbCrLf & "Vuoi iniziare un altra partita?", MsgBoxStyle.YesNo, "Game Over")

            'Se accetto di volere giocare un altra partita

            If Risposta = 6 Then

                PREPARA_PER_NUOVA_PARTITA()

            End If

            'Senza Pareti

        ElseIf (Collisione = 2 And cSenzaMuro = True) Then

            SPOSTA_TESTA_SENZA_MURO(PICTesta, DIREZIONE)

        End If

 

 

        'CAMBIO POSIZIONE ARREY

        'Se ho gia riavviato ho già cambiato la posizione dell'arrey, quindi non lo invero più

        If Risposta <> 6 Then

            'Sposto la posizione nell'arrey

            CAMBIA_POSIZIONI_ARREY()

        End If

 

        'Segno il numero di punti fatti

        If Inizio = True Then

            LBLPunteggio.Text = CStr(cNPunti)

        Else

            LBLPunteggio.Text = CStr(cNPunti - 1)

        End If

 

 

    End Sub

 

    Private Sub CAMBIA_TESTA(ByVal Direzione As Integer)

        SPOSTA_IMMAGINE(PICTesta, Direzione)

    End Sub

 

    'Mi ritorna 1 = tutto a posto 0= collisione con il corpo 2=collisione con il muro

    Private Function CONTROLLA_COLLISIONE_AVVENUTA() As Integer

 

        Dim PUNTOTESTA As Point = PICTesta.Location

 

        For I As Integer = 1 To cNCasella - 1

            Dim PUNTOCORPO As Point = (CType(Me.Controls("Casella" & cArreyNomeCasella(I)), PictureBox).Location)

            If PUNTOCORPO = PUNTOTESTA Then Return 0

        Next

 

        If PICCoda.Location = PUNTOTESTA Then Return 0

 

        'Controllo che ho colpito le pareti

 

        'Se ho sforato con la testa i muri

        If PUNTOTESTA.X = 0 Then Return 2

        If PUNTOTESTA.X = cMargineX Then Return 2

        If PUNTOTESTA.Y = 30 Then Return 2

        If PUNTOTESTA.Y = cMargineY Then Return 2

 

        'SFONDO FIUME

        If COLPITO_COSE_DI_SFONDO(PUNTOTESTA.X, PUNTOTESTA.Y, cTipoSfondo) = True Then

            Return 0

        End If

 

        'If cTipoSfondo = 1 Then

        'If PUNTOTESTA.Y = 110 Then

        'If PUNTOTESTA.X = 40 Or PUNTOTESTA.X = 50 Or PUNTOTESTA.X = 100 Or PUNTOTESTA.X = 110 Then

        'Else

        'Return 0

        'End If

        'End If

        'End If

 

        'Se non ho colpito niente ritorno il risultato di falso

        Return 1

 

    End Function

 

    Private Sub CREA_BITMAP_CURVA(ByVal Immagine As PictureBox, ByVal DirezioneAdesso As Integer, ByVal DirezionePrecedente As Integer)

 

        '        Alto (38)

        'Sinistra (39)   Destra (37)

        '       Basso (40)

        Dim a As String = Immagine.Name

 

        If DirezionePrecedente = 40 Then

            If DirezioneAdesso = 37 Then

                Immagine.Image = cImmagineCurva5

            Else

                Immagine.Image = cImmagineCurva7

            End If

        End If

 

        If DirezionePrecedente = 37 Then

            If DirezioneAdesso = 38 Then

                Immagine.Image = cImmagineCurva7

            Else

                Immagine.Image = cImmagineCurva8

            End If

        End If

 

        If DirezionePrecedente = 38 Then

            If DirezioneAdesso = 37 Then

                Immagine.Image = cImmagineCurva6

            Else

                Immagine.Image = cImmagineCurva8

            End If

        End If

 

        If DirezionePrecedente = 39 Then

            If DirezioneAdesso = 38 Then

                Immagine.Image = cImmagineCurva5

            Else

                Immagine.Image = cImmagineCurva6

            End If

        End If

 

    End Sub

 

    Private Sub CAMBIA_POSIZIONI_ARREY()

 

        'Salvo il primo valore nella cella 0

        '(come se lo salvassi)

        CDirezionePresa(0) = CDirezionePresa(1)

        'Faccio scalare tutti i valori di 1

        For i As Integer = 1 To cNCasella

            CDirezionePresa(i) = CDirezionePresa(i + 1)

        Next

        'Salvo la direzione presa

        CDirezionePresa(cNCasella - 1) = CDirezionePresa(0)

 

        'Salvo il primo valore nella cella 0

        cArreyNomeCasella(0) = cArreyNomeCasella(1)

        'Faccio scalare tutti i valori di 1

        For i As Integer = 1 To cNCasella

            cArreyNomeCasella(i) = cArreyNomeCasella(i + 1)

        Next

        cArreyNomeCasella(cNCasella - 1) = cArreyNomeCasella(0)

 

    End Sub

 

    Private Sub CREA_CASELLA(ByVal X As Integer, ByVal Y As Integer, ByVal Direzione As Integer)

 

        Dim Casella As String = "Casella" & cNCasella

        Dim P As PictureBox = New System.Windows.Forms.PictureBox

 

        P.Height = 10

        P.Width = 10

        P.Name = Casella

        Dim Punto As Point = New Point(X, Y)

        P.Location = Punto

        P.BringToFront()

        CDirezionePresa(cNCasella) = Direzione

 

        If CambioGobba = True Then

            P.Image = cImmagineGobbaSinistra

            CambioGobba = False

        Else

            P.Image = cImmagineGobbaDestra

            CambioGobba = True

        End If

 

        P.BringToFront()

        Me.Controls.Add(P)

        P.BringToFront()

        cArreyNomeCasella(cNCasella) = cNCasella

        cNCasella = cNCasella + 1

 

 

    End Sub

 

    'Mi SPOSTA il valore dell'immagine in base alla velocita e alla direzione

 

    '        Alto (38)

    'Sinistra (37)   Destra (39)

    '       Basso (40)

 

    Private Sub SPOSTA_IMMAGINE(ByVal ImmaginePictureBox As PictureBox, ByVal Direzione As Integer)

 

        Dim NuovoPunto As Point = ImmaginePictureBox.Location

 

        Select Case Direzione

            'Alto

            Case Is = 38

                NuovoPunto.Y = NuovoPunto.Y - (cVelocita)

                'Basso

            Case Is = 40

                NuovoPunto.Y = NuovoPunto.Y + (cVelocita)

                'Destra

            Case Is = 39

                NuovoPunto.X = NuovoPunto.X + (cVelocita)

                'Sinistra

            Case Is = 37

                NuovoPunto.X = NuovoPunto.X - (cVelocita)

        End Select

 

        ImmaginePictureBox.Location = NuovoPunto

 

    End Sub

 

    Private Sub SPOSTA_TESTA_SENZA_MURO(ByVal ImmaginePictureBox As PictureBox, ByVal Direzione As Integer)

 

        Dim NuovoPunto As Point = ImmaginePictureBox.Location

 

        Select Case Direzione

            'Alto

            Case Is = 38

                NuovoPunto.Y = 170

                'Basso

            Case Is = 40

                NuovoPunto.Y = 40

                'Destra

            Case Is = 39

                NuovoPunto.X = 10

                'Sinistra

            Case Is = 37

                NuovoPunto.X = 130

        End Select

 

        ImmaginePictureBox.Location = NuovoPunto

 

    End Sub

 

    Private Sub CREA_PUNTO()

 

        Dim NRandom As Random = New Random

 

        Dim X As Integer

        Dim Y As Integer

        Dim PuntoOk As Boolean = False

 

        Do Until PuntoOk = True

 

            PuntoOk = True

 

            'Trovo un numero X e Y che vada bene

 

            'X

            X = NRandom.Next(cMargineX - 10)

            If CBool(X Mod 10) = False And ((X) <> 0) And COLPITO_COSE_DI_SFONDO(X, Y, cTipoSfondo) = False Then

            Else

                Dim ERRORE As Integer = 0

                Do Until CBool(X Mod 10) = False And ((X) <> 0) And COLPITO_COSE_DI_SFONDO(X, Y, cTipoSfondo) = False

                    X = NRandom.Next(cMargineX - 10)

                    ERRORE = ERRORE + 1

                    If ERRORE = 200 Then CREA_PUNTO()

                Loop

            End If

            'Y

            Y = NRandom.Next(cMargineY - 10)

            If CBool(Y Mod 10) = False And ((Y) <> 0) And (Y > 30) And COLPITO_COSE_DI_SFONDO(X, Y, cTipoSfondo) = False Then

            Else

                Do Until CBool(Y Mod 10) = False And ((Y) <> 0) And (Y > 30) And COLPITO_COSE_DI_SFONDO(X, Y, cTipoSfondo) = False

                    Y = NRandom.Next(cMargineY - 10)

                Loop

            End If

 

            'Riavvio la funzione se il numero estratto e sopra il serpente/testa/coda

            cPosizionePunto.X = X

            cPosizionePunto.Y = Y

 

            For i As Integer = 1 To cNCasella - 1

                Dim PuntoCorpo As Point

 

                Try

                    PuntoCorpo = (CType(Me.Controls("Casella" & i), PictureBox).Location)

                Catch ex As Exception

                    PuntoOk = False

                    Exit For

                End Try

 

                If cPosizionePunto = PuntoCorpo Then

                    PuntoOk = False

                    Exit For

                End If

 

            Next

 

            If cPosizionePunto = PICTesta.Location Then PuntoOk = False

            If cPosizionePunto = PICCoda.Location Then PuntoOk = False

        Loop

 

        'Aggiungo la casella da mangiare

        Dim P As PictureBox = New System.Windows.Forms.PictureBox

        P.Height = 10

        P.Width = 10

        P.Name = "Mosca" & cNPunti

        Dim Punto As Point = New Point(X, Y)

        P.Location = Punto

        P.Image = cImmagineMosca

        P.BringToFront()

        Me.Controls.Add(P)

        P.BringToFront()

 

        cNPunti = cNPunti + 1

 

    End Sub

 

    Private Function CONTROLLA_SE_MANGIO() As Boolean

 

        If PICTesta.Location = cPosizionePunto Then

            Return True

        Else

            Return False

        End If

 

    End Function

 

    Private Sub CAMBIA_BITMAP_TESTA(ByVal Direzione As Integer)

 

        Select Case Direzione

 

            'Alto

            Case Is = 38

                PICTesta.Image = cImmagineTestaAlto

                'Basso

            Case Is = 40

                PICTesta.Image = cImmagineTestaBasso

                'Destra

            Case Is = 39

                PICTesta.Image = cImmagineTestaDestra

                'Sinistra

            Case Is = 37

                PICTesta.Image = cImmagineTestaSinistra

        End Select

 

    End Sub

 

    Private Sub CAMBIA_BITMAP_CORPO(ByVal ImmagineCorpo As PictureBox, ByVal Direzione As Integer)

        If CambioGobba = True Then

            Select Case Direzione

                'Alto

                Case Is = 38

                    ImmagineCorpo.Image = cImmagineGobbaDestraAlto

                    'Basso

                Case Is = 40

                    ImmagineCorpo.Image = cImmagineGobbaDestraAlto

                    'Destra

                Case Is = 39

                    ImmagineCorpo.Image = cImmagineGobbaDestra

                    'Sinistra

                Case Is = 37

                    ImmagineCorpo.Image = cImmagineGobbaDestra

            End Select

            CambioGobba = False

        Else

 

            Select Case Direzione

                'Alto

                Case Is = 38

                    ImmagineCorpo.Image = cImmagineGobbaSinistraAlto

                    'Basso

                Case Is = 40

                    ImmagineCorpo.Image = cImmagineGobbaSinistraAlto

                    'Destra

                Case Is = 39

                    ImmagineCorpo.Image = cImmagineGobbaSinistra

                    'Sinistra

                Case Is = 37

                    ImmagineCorpo.Image = cImmagineGobbaSinistra

            End Select

            CambioGobba = True

        End If

 

 

    End Sub

 

    Private Sub CAMBIA_BITMAP_CODA(ByVal Direzione As Integer)

 

        Select Case Direzione

            'Alto

            Case Is = 3

                PICCoda.Image = cImmagineCodaAlto

            Case Is = 38

                PICCoda.Image = cImmagineCodaAlto

                'Basso

            Case Is = 4

                PICCoda.Image = cImmagineCodaBasso

            Case Is = 40

                PICCoda.Image = cImmagineCodaBasso

                'Destra

            Case Is = 1

                PICCoda.Image = cImmagineCodaDestra

            Case Is = 39

                PICCoda.Image = cImmagineCodaDestra

                'Sinistra

            Case Is = 2

                PICCoda.Image = cImmagineCodaSinistra

            Case Is = 37

                PICCoda.Image = cImmagineCodaSinistra

        End Select

 

    End Sub

 

    Private Sub SPOSTA_IMMAGINE(ByVal ImmaginePictureBox As PictureBox, ByVal Coordinate As Point)

        ImmaginePictureBox.Location = Coordinate

    End Sub

 

    Private Sub CARICA_IMMAGINI()

 

        'Carico le immagini che mi servono per l'inizio del serpente

        cImmagineTestaDestra = PTESTAD.Image

        cImmagineCodaDestra = PCODAD.Image

 

        PICTesta.Image = cImmagineTestaDestra

        PICCoda.Image = cImmagineCodaDestra

 

        cImmagineGobbaDestra = PCORPOD.Image

        cImmagineGobbaSinistra = PCORPOS.Image

 

        'Carico Immagini Testa

        cImmagineTestaSinistra = PTESTAS.Image

        cImmagineTestaDestra = PTESTAD.Image

        cImmagineTestaBasso = PTESTAB.Image

        cImmagineTestaAlto = PTESTAA.Image

        'Carico Immagini Coda

        cImmagineCodaSinistra = PCODAS.Image

        cImmagineCodaBasso = PCODAB.Image

        cImmagineCodaAlto = PCODAA.Image

        'Carico Immagini Corpo

        cImmagineGobbaDestraAlto = PCORPOA.Image

        cImmagineGobbaSinistraAlto = PCORPOB.Image

        'Carico le immagini delle curve

        cImmagineCurva5 = PCURVA5.Image

        cImmagineCurva6 = PCURVA6.Image

        cImmagineCurva7 = PCURVA7.Image

        cImmagineCurva8 = PCURVA8.Image

        'Carico le immagini del Muro

        cImmagineMuro = PMUROORIZZONTALE.Image

        PICMuroAlto.Image = cImmagineMuro

        PICMuroBasso.Image = cImmagineMuro

        'Carico le immagini del Muro

        cImmagineMuro = PMUROVERTICALE.Image

        PICMuroSinistra.Image = cImmagineMuro

        PICMuroDestra.Image = cImmagineMuro

        'Immagini muro

        PICSopraMuro.Image = PSNAKE.Image

        PICOpzioni.Image = PSFONDOSCRITTA.Image

        'Immagine sfondo

        cImmagineSfondoDestra = PSFONDONORMALE.Image

        Me.BackgroundImage = PERBA.Image

        'Immagine Mosca

        cImmagineMosca = PPUNTO.Image

        cImmagineSfondoDestraConScritta = PSFONDOSCRITTA.Image

        'Immagine Sfondo Fiume

        CImmagineSfondoFiume = PSFONDOFIUME.Image

        'Sfondo Labirinto

        CImmagineSfondoLabirinto = PSFONDOLABIRINTO.Image

 

    End Sub

 

    Private Sub CREA_LE_TRE_CASELLE_INTERMEDIE()

        CREA_CASELLA(30, 70, 1)

        cArrey(1, 1) = 30

        cArrey(1, 2) = 70

        CREA_CASELLA(40, 70, 1)

        cArrey(2, 1) = 40

        cArrey(2, 2) = 70

        CREA_CASELLA(50, 70, 1)

        cArrey(3, 1) = 50

        cArrey(3, 2) = 70

        CREA_CASELLA(60, 70, 1)

        cArrey(4, 1) = 60

        cArrey(4, 2) = 70

        CREA_CASELLA(70, 70, 1)

        cArrey(4, 1) = 70

        cArrey(4, 2) = 70

        CREA_CASELLA(80, 70, 1)

        cArrey(5, 1) = 80

        cArrey(5, 2) = 70

    End Sub

 

    Private Sub Tempo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tempo.Tick

        MUOVI_SERPENTE(cDirezione, cCambioDirezione)

        cCambioDirezione = False

        cMossaFatta = 0

    End Sub

 

    Private Sub CMDNuovaPartita_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDNuovaPartita.Click

        PREPARA_PER_NUOVA_PARTITA()

    End Sub

 

    Private Sub CMDOpzioni_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDOpzioni.Click

        Form2.CARICA_IMPOSTAZIONI_DA_PRIMA()

        Form2.Visible = True

        Form2.Show()

    End Sub

 

    Private Sub CMDCrediti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDCrediti.Click

        MsgBox("Francesco Belloni. " & vbCrLf & "Francobelloni85@libero.it", MsgBoxStyle.Information, "Power By")

    End Sub

 

    Private Sub CMDEsci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDEsci.Click

        End

    End Sub

 

    Private Sub TastiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TastiToolStripMenuItem.Click

        MsgBox("Movimento: Freccie direzionali" & vbCrLf & "Pausa: Invio", MsgBoxStyle.Information, "TASTI")

    End Sub

 

 

End Class