Option Explicit On

Option Strict On

 

Public Class Form1

 

    'Creo il mazzo dalla classe creata

    Public NuovoMazzo As Mazzo = New Mazzo

    'Variabile che uso per memorizzare il numero di giocatori

    Public CNumeroGiocatori As Integer = 6

    Public cNumeroGiocatoriGlobali As Integer = CNumeroGiocatori

    'Mi salvo le carte che metto nel mezzo

    Public cTavolo() As String = New String(5) {}

    'Mi indica quale giocatore è il mazziere

    Public cMazziere As Integer = 0

    'Mi indica quante mani ho giocato

    Public CNumeroDiMano As Integer = 4

 

    ' ---------- variabili statistiche ---------------

    'Variabile che uso per segnare le statistiche-partita

    Public cNGiocatoreVincente() As Integer = New Integer(6) {}

    'Variabili che uso per le statistiche globali

    Public CGiocatoreVincente As Integer = 0

    Public CNumeroNiente As Integer = 0

    Public CNumeroCoppia As Integer = 0

    Public CNumeroDoppiaCoppia As Integer = 0

    Public CNumeroTris As Integer = 0

    Public CNumeroFull As Integer = 0

    Public CNumeroScala As Integer = 0

    Public CNumeroColore As Integer = 0

    Public CNumeroPoker As Integer = 0

    '--------------------------------------------------

 

    'Imposto i soldi iniziali

    Public Soldi_Iniziali As Integer = 25

    'Classe che uso per salvare le variabili di ogni giocatore

    Public cGiocatore() As ClasseGIOCATORE = New ClasseGIOCATORE(6) {}

    'Decido la puntata del piatto

    Public cPiccoloBuio As Integer = 1

    'Classe per gestire il piatto

    Public cPiatto As ClassePIATTO = New ClassePIATTO()

    'Variabili che uso per gli stati di un giocatore

 

    Public cProntoAGiocare As String = "In attesa di giocare"

    'Public cEntroInGioco As String = "Entro in gioco"

    Public cGameOver As String = "Game Over"

    Public cLascio As String = "Lascio"

    Public cSTRPiccoloBuio As String = "Piccolo Buio"

    Public cGioco As String = "Gioco "

    Public cFish As String = " fish"

    Public cAbbandonato As String = "Abbandonato"

    Public cVedo As String = "Vedo"

    Public cAllIn As String = "All in"

 

    'Public cNGiocatoreTemporizzato As Integer = 0

    Public cSecondaCarta_PrimoGiro As Boolean = True

 

    Public cPuntata As Integer = 0

    Public cPuntataGiocatore As Integer = 0

 

    Public cNGiocatoreRilancio As Integer = 0

    Public cRilancio As Boolean = False

    Public ciRilancio As Integer = 0

    Public cRilancioGlobale As Boolean = False

 

    Public cArreyGiocatori() As Integer = New Integer(0) {}

    Public cNGiocatoreTurno As Integer = 0

    'Public cGiocatoriRimasti As Integer = 0

    Public cFine_Turno As Boolean = False

    Public cFine_TurnoUMANO As Boolean = False

 

    Public cTurnoRilancio As Boolean = False

 

    Public cUltimoMazziere As Integer = 0

 

    Dim cSoldiNonDati As Integer = 0

 

    'Percentuale Rischio

    Dim cPercentuale As Integer = 5

    Dim cModificocRilancio As Integer = 0

 

    Dim cGiocatoreVincitoreAllIn As Boolean

    Public CDifferenzaDaAggiungereNelPiatto As Integer = 0

 

    Dim TempoMassimo As Integer = 500

 

    Dim cNPartite As Integer = 0

 

    Private Sub INIZIO_PARTITA()

 

        'Posiziono i giocatori in base al loro numero

        POSIZIONA_GIOCATORI(CNumeroGiocatori)

        CREA_GIOCATORI(CNumeroGiocatori)

        CREA_ARREY_POSIZIONE_GIOCATORI()

 

    End Sub

 

    Public Sub CREA_GIOCATORI(ByVal NumeroGiocatori As Integer)

 

        For i As Integer = 0 To NumeroGiocatori

            cGiocatore(i) = New ClasseGIOCATORE(Soldi_Iniziali)

 

            Dim Rand As Random = New Random

 

            'Imposta il coraggio/imprudenza dell'avversario

            Dim NCasuale As Integer = Rand.Next(0, 40)

            cGiocatore(i).cCoraggio = NCasuale

 

            'cGiocatore(i) = New ClasseGIOCATORE(Soldi_Iniziali)

            cGiocatore(i).IMPOSTA_STATO_GIOCATORE(cGioco)

            REFRESH_SOLDI_GIOCATORE(i)

        Next

 

    End Sub

 

    'Creo un Arrey con le posizione dei Giocatori

    Public Sub CREA_ARREY_POSIZIONE_GIOCATORI()

 

        Dim ii As Integer = 0

 

        For i As Integer = cMazziere + 1 To CNumeroGiocatori

            If cGiocatore(i).RITORNA_STATO_GIOCATORE <> cGameOver Then

                cArreyGiocatori(ii) = i

                ii += +1

            End If

        Next

 

        For i As Integer = 0 To cMazziere

            If cGiocatore(i).RITORNA_STATO_GIOCATORE <> cGameOver Then

                cArreyGiocatori(ii) = i

                ii += +1

            End If

        Next

 

    End Sub

 

    Public Sub PICCOLO_BUIO(ByVal Giocatore_Piccolo_buio As Integer)

        cGiocatore(Giocatore_Piccolo_buio).SCALA_SOLDI(cPiccoloBuio)

        cGiocatore(Giocatore_Piccolo_buio).IMPOSTA_PUNTATA(0, cPiccoloBuio)

        cGiocatore(Giocatore_Piccolo_buio).IMPOSTA_STATO_GIOCATORE(cGioco)

        cPiatto.AGGIUNGI_SOLDI(cPiccoloBuio)

    End Sub

 

    Public Sub REFRESH_SOLDI_GIOCATORE(ByVal NumeroGiocatore As Integer)

        CType(Me.Controls.Item("SoldiG" & NumeroGiocatore), Label).Text = CStr(cGiocatore(NumeroGiocatore).RITORNA_SOLDI_GIOCATORE)

    End Sub

 

    Public Sub REFRESH_SOLDI_PIATTO()

        LBLPiatto.Text = CStr(cPiatto.RITORNA_VALORE_PIATTO)

        'TextBox2.Text &= CStr(cPiatto.RITORNA_VALORE_PIATTO) & vbCrLf

    End Sub

 

    Public Function RITORNA_NOME_COMPLETO_DA_SIGLA(ByVal Sigla As String) As String

 

        Dim PrimaParte As String = Sigla.Substring(0, 1)

        Dim SecondaParte As String = ""

        Dim Terzaparte As String = ""

 

        Dim LungehezzaSigla As Integer = Sigla.Length

        SecondaParte = (Sigla.Substring(1, (1)))

 

        If LungehezzaSigla = 3 Then

            Terzaparte = Sigla.Substring(2, 1)

        End If

 

        Dim Risultato As String = ""

 

        Select Case PrimaParte

 

            Case Is = "R"

                Risultato = "Scala Reale di "

            Case Is = "P"

                Risultato = "Poker di "

            Case Is = "F"

                Risultato = "Full di "

            Case Is = "L"

                Risultato = "Colore di "

            Case Is = "T"

                Risultato = "Tris di "

            Case Is = "S"

                Risultato = "Scala di "

            Case Is = "D"

                Risultato = "Doppia c. di "

            Case Is = "C"

                Risultato = "Coppia di "

            Case Is = "N"

                Risultato = "Niente"

        End Select

 

        If PrimaParte = "L" Then

 

            Select Case SecondaParte

                Case Is = "Q"

                    Risultato &= "quadri"

                Case Is = "P"

                    Risultato &= "picche"

                Case Is = "F"

                    Risultato &= "fiori"

                Case Is = "C"

                    Risultato &= "cuori"

            End Select

 

        Else

 

            Select Case SecondaParte

                Case Is = "A"

                    Risultato &= "asso"

                Case Is = "K"

                    Risultato &= "re"

                Case Is = "Q"

                    Risultato &= "donna"

                Case Is = "J"

                    Risultato &= "jack"

                Case Is = "D"

                    Risultato &= "10"

                Case Is = "9"

                    Risultato &= "9"

                Case Is = "8"

                    Risultato &= "8"

                Case Is = "7"

                    Risultato &= "7"

                Case Is = "6"

                    Risultato &= "6"

                Case Is = "5"

                    Risultato &= "5"

                Case Is = "4"

                    Risultato &= "4"

                Case Is = "3"

                    Risultato &= "3"

                Case Is = "2"

                    Risultato &= "2"

 

            End Select

 

            If Terzaparte <> "" Then

 

                Select Case Terzaparte

                    Case Is = "A"

                        Risultato &= " e asso"

                    Case Is = "K"

                        Risultato &= " e re"

                    Case Is = "Q"

                        Risultato &= " e donna"

                    Case Is = "J"

                        Risultato &= " e jack"

                    Case Is = "D"

                        Risultato &= " e 10"

                    Case Is = "9"

                        Risultato &= " e 9"

                    Case Is = "8"

                        Risultato &= " e 8"

                    Case Is = "7"

                        Risultato &= " e 7"

                    Case Is = "6"

                        Risultato &= " e 6"

                    Case Is = "5"

                        Risultato &= " e 5"

                    Case Is = "4"

                        Risultato &= " e 4"

                    Case Is = "3"

                        Risultato &= " e 3"

                    Case Is = "2"

                        Risultato &= " e 2"

                End Select

 

            End If

 

        End If

 

        Return Risultato

 

    End Function

 

    Private Sub NUOVA_MANO()

 

        'Creo un nuovo mazzo ad ogni partita

        NuovoMazzo = New Mazzo()

 

        'Distribuisco le prime 2 carte coperte

        cMazziere = cArreyGiocatori(cArreyGiocatori.Length - 1)

        DISTRIBUISCI_CARTE(CNumeroGiocatori, cMazziere, 1)

        DISTRIBUISCI_CARTE(CNumeroGiocatori, cMazziere, 2)

 

        'Controllo che cosa hanno i giocatori

        'CONTROLLA_CARTE()

 

        'Faccio girare il mazziere, e l'immagine; alla fine del giro riparto da 0 (l'umano)

        MUOVI_MAZZIERE()

 

    End Sub

 

    Public Sub MUOVI_MAZZIERE()

 

        Dim POSIZIONE_MAZZO As Point

 

        POSIZIONE_MAZZO = (CType(Me.Controls.Item("LBLNomeGiocatore" & cMazziere), Label).Location)

        POSIZIONE_MAZZO.X = POSIZIONE_MAZZO.X - 9

        POSIZIONE_MAZZO.Y = POSIZIONE_MAZZO.Y + 2

 

        PICMazziere.Location = POSIZIONE_MAZZO

 

        'cMazziere = cMazziere + 1

        'If cMazziere = CNumeroGiocatori + 1 Then

        'cMazziere = 0

        'End If

 

    End Sub

 

    Public Function PRESENZA_SCALA(ByVal Carte As String) As String

 

        'Carte scritte in lettere es. Asso ->A

        Dim CarteA() As String = New String(6) {}

        'Carte trasformate in numeri es. asso ->13

        Dim CartaB() As Integer = New Integer(6) {}

        'Carte trasformate in numeri con l'asso cha vale 1

        Dim CartaC() As Integer = New Integer(6) {}

 

        Dim NumeroCarte As Integer = 0

        Dim LunghezzaStringa As Integer = Carte.Length

 

        'Trasformo in numero le carte e le salvo nell'arrey B

        For i As Integer = 0 To CInt(LunghezzaStringa) Step 2

            If i = LunghezzaStringa Then Exit For

            CarteA(NumeroCarte) = Carte.Substring(i, 1)

            CartaB(NumeroCarte) = RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CarteA(NumeroCarte), True)

 

            'Cambio da asso 13 ad asso 1

            If CartaB(NumeroCarte) = 13 Then

                CartaC(NumeroCarte) = 0

            Else

                CartaC(NumeroCarte) = CartaB(NumeroCarte)

            End If

            NumeroCarte += +1

        Next

 

        Dim Indice As Integer = 13

        Dim IndicePresenzaScala As Integer = 0

        Dim PresenzaCartaSuccessiva As Boolean = False

 

        '---------ARREY B ----------

        'Cerco nell'arrey B partendo dal più n più alto se c'è una scala

        For i As Integer = 13 To 0 Step -1

 

            PresenzaCartaSuccessiva = False

 

            For ii As Integer = 0 To NumeroCarte - 1

 

                If i = CartaB(ii) Then

                    PresenzaCartaSuccessiva = True

                    Exit For

                End If

 

            Next

 

            If PresenzaCartaSuccessiva = True Then

                IndicePresenzaScala += +1

            Else

                IndicePresenzaScala = 0

            End If

 

            'Se trovo la scala

            If IndicePresenzaScala = 5 Then

 

                Dim RisultatoNumerico As Integer = i + 5

                Dim RisultatoStringa As String = ""

                'Riconverto il numero in lettera

                If RisultatoNumerico = 14 Then

                    RisultatoStringa = "A"

                ElseIf RisultatoNumerico = 13 Then

                    RisultatoStringa = "K"

                ElseIf RisultatoNumerico = 12 Then

                    RisultatoStringa = "Q"

                ElseIf RisultatoNumerico = 11 Then

                    RisultatoStringa = "J"

                ElseIf RisultatoNumerico = 10 Then

                    RisultatoStringa = "D"

                Else

                    RisultatoStringa = CStr(RisultatoNumerico)

                End If

 

                Return RisultatoStringa

 

            End If

 

        Next

 

        '---------ARREY C ----------

 

        'Cerco nell'arrey C partendo dal più n più alto se c'è una scala

        For i As Integer = 4 To 0 Step -1

            PresenzaCartaSuccessiva = False

            For ii As Integer = 0 To NumeroCarte - 1

                If i = CartaC(ii) Then

                    PresenzaCartaSuccessiva = True

                    Exit For

                End If

            Next

 

            If PresenzaCartaSuccessiva = True Then

                IndicePresenzaScala += +1

            Else

                IndicePresenzaScala = 0

            End If

           

            'Se trovo la scala

            If IndicePresenzaScala = 5 Then

                Dim RisultatoNumerico As Integer = i + 5

                Dim RisultatoStringa As String = ""

                RisultatoStringa = CStr(RisultatoNumerico)

                Return RisultatoStringa

            End If

 

        Next

 

        Return ""

 

    End Function

 

    Public Function TROVA_N_VINCITORE(ByVal TrovaIlSecondo As Boolean) As String

 

        Dim CartaGiocatore As Integer = 0

        Dim Ngiocatori As Integer = cArreyGiocatori.Length - 1

        Dim PunteggioGiocatore() As Integer = New Integer(cNumeroGiocatoriGlobali) {}

        Dim Giocatore As String() = New String(cNumeroGiocatoriGlobali) {}

 

        For ii As Integer = 0 To Ngiocatori

 

            'Numero Giocatore

            Dim i As Integer = cArreyGiocatori(ii)

 

            Dim StatoGiocatore As String = cGiocatore(i).RITORNA_STATO_GIOCATORE

 

            'Cerco tra le carte (se il giocatore non ha abbandonato) il vincitore

            If StatoGiocatore = cGioco Or StatoGiocatore = cAllIn Or StatoGiocatore = cVedo Then

 

                Giocatore(i) = cGiocatore(i).RITORNA_STRINGA_CARTE_GIOCATORE

 

 

                Dim CartaUnoGiocatore As String = cGiocatore(i).RITORNA_CARTE_GIOCATORE

                Dim CartaDueGiocatore As String = ""

                CartaDueGiocatore = CartaUnoGiocatore.Substring(2, 1)

                CartaUnoGiocatore = CartaUnoGiocatore.Substring(0, 1)

 

                Dim NCartaAltaGiocatore As Integer = RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaUnoGiocatore, True)

                Dim NCartaAltaGiocatore2 As Integer = RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaDueGiocatore, True)

 

                Dim CartaAlta As Integer = 0

                If NCartaAltaGiocatore >= NCartaAltaGiocatore2 Then

                    CartaAlta = NCartaAltaGiocatore

                Else

                    CartaAlta = NCartaAltaGiocatore2

                End If

 

                'Scompongo la mano del giocatore in 2 e assegno un punteggio in base alle carte che ha

                'Es. coppia (10 punti) di 3 (3 punti) = 13 punti

                'Es. Doppiacoppia (20 punti) di 3 (3 punti) = 23 punti

 

                'Tipo di punteggio che ho fatto

                Dim CartaA As String = Giocatore(i).Substring(0, 1)

                'Con che carta ho fatto il punto

                Dim CartaB As String = Giocatore(i).Substring(1, 1)

 

                Dim SecondaCartaDoppia As Integer = 0

 

                If CartaA = "D" Or CartaA = "F" Then

                    Dim CartaC As String = Giocatore(i).Substring(2, 1)

                    SecondaCartaDoppia = RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaC, True)

                End If

 

                CartaGiocatore = (RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaA, False)) * 10000000

                CartaGiocatore += (RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaB, True)) * 10000 + SecondaCartaDoppia * 10 + CartaAlta

 

                'Salvo i risultati in questo arrey

                PunteggioGiocatore(i) = CartaGiocatore

 

            End If

        Next

 

        Dim NGiocatorePrimoP As String = ""

        Dim NGiocatoreSecondoP As String = ""

        Dim PunteggioPrimo As Integer = 0

        Dim PunteggioSecondo As Integer = 0

 

        'Trovo il primo punteggio

        For i As Integer = 0 To cNumeroGiocatoriGlobali

 

            If PunteggioGiocatore(i) >= PunteggioPrimo Then

 

                If PunteggioGiocatore(i) = PunteggioPrimo Then

                    NGiocatorePrimoP &= (i)

                Else

                    NGiocatorePrimoP = CStr(i)

                    PunteggioPrimo = PunteggioGiocatore(i)

                End If

            End If

        Next

 

        'Trovo il secondo punteggio

        For i As Integer = 0 To Ngiocatori

            If PunteggioGiocatore(i) <> PunteggioPrimo Then

                If PunteggioGiocatore(i) >= PunteggioSecondo Then

 

                    If PunteggioGiocatore(i) = PunteggioSecondo Then

                        NGiocatoreSecondoP &= (i)

                    Else

                        NGiocatoreSecondoP = CStr(i)

                        PunteggioSecondo = PunteggioGiocatore(i)

                    End If

 

                End If

            End If

        Next

 

        If TrovaIlSecondo = True Then

            Return CStr(NGiocatoreSecondoP)

        Else

            Return CStr(NGiocatorePrimoP)

        End If

 

    End Function

 

    Public Sub RIAVVIA_IMPOSTAZIONI_GRAFICHE_FINE_PARTITA()

 

        For I As Integer = 0 To cArreyGiocatori.Length - 1

            Dim NumeroGiocatore As Integer = cArreyGiocatori(I)

            CType(Me.Controls.Item("Giocatore" & NumeroGiocatore), Label).Text = cGiocatore(NumeroGiocatore).RITORNA_STATO_GIOCATORE

        Next

 

    End Sub

 

    Public Sub CONTROLLA_CARTE()

 

        Dim Ngiocatori As Integer = cArreyGiocatori.Length - 1

 

        'Mi scrive x ogni giocatore quello che ha

        For i As Integer = 0 To Ngiocatori

 

            Dim X As Integer = cArreyGiocatori(i)

 

            '------------------- M O D I F I C A -------  C A R T E ----------

            'Dim SiglaCarta As String = "AP2P3P4P5P5P3Q"

 

            Dim Mano As String = RITORNA_NOME_CARTE(cGiocatore(X).RITORNA_CARTE_GIOCATORE)

            cGiocatore(X).IMPOSTA_STRINGA_CARTE_GIOCATORE(Mano)

 

            'Visualizzo la mani degli avversati

            'If Mano <> "Niente " Then Mano = RITORNA_NOME_COMPLETO_DA_SIGLA(Mano)

            'CType(Me.Controls.Item("Giocatore" & i), Label).Text &= vbCrLf & "-->" & Mano

            'CType(Me.Controls.Item("Giocatore" & i), Label).Text = Mano

        Next

 

    End Sub

 

    Public Sub DISTRIBUISCI_CARTA_TAVOLO_A_GIOCATORI(ByVal Carta As String)

 

        For i As Integer = 0 To cArreyGiocatori.Length - 1

            Dim nGiocatore As Integer = cArreyGiocatori(i)

            cGiocatore(nGiocatore).AGGIUNGI_CARTA(Carta)

        Next

 

    End Sub

 

    Public Function CONTA_NUMERO_GIOCATORI_IN_GIOCO() As Integer

 

        Dim Numero As Integer = cArreyGiocatori.Length - 1

 

        For i As Integer = 0 To cArreyGiocatori.Length - 1

 

            Dim NGiocatore As Integer = (cArreyGiocatori(i))

 

            Dim StatoGiocatore As String = cGiocatore(NGiocatore).RITORNA_STATO_GIOCATORE

 

            If StatoGiocatore = cGioco Or StatoGiocatore = cVedo Or StatoGiocatore = cProntoAGiocare Or StatoGiocatore = cAllIn Then

 

            Else

 

                Numero = Numero - 1

 

                Select Case cGiocatore(NGiocatore).RITORNA_STATO_GIOCATORE

                    Case Is = cLascio

                        SCRIVI_STATO_GIOCO_ABBANDONATO(NGiocatore)

                    Case Is = cGameOver

                        SCRIVI_STATO_GIOCO_GAME_OVER(NGiocatore)

                End Select

            End If

 

        Next

 

        Return Numero

 

    End Function

 

    Public Function CONTA_NUMERO_GIOCATORI_IN_GIOCO_FINE_PARTITA() As Integer

 

        Dim Numero As Integer = cNumeroGiocatoriGlobali

 

        For i As Integer = 0 To cNumeroGiocatoriGlobali

 

            Dim StatoGiocatore As String = cGiocatore(i).RITORNA_STATO_GIOCATORE

 

            If StatoGiocatore = cGioco Or StatoGiocatore = cProntoAGiocare Or StatoGiocatore = cAllIn Then

 

            Else

 

                Numero = Numero - 1

 

                Select Case cGiocatore(i).RITORNA_STATO_GIOCATORE

                    Case Is = cLascio

                        SCRIVI_STATO_GIOCO_ABBANDONATO(i)

                    Case Is = cGameOver

                        SCRIVI_STATO_GIOCO_GAME_OVER(i)

                End Select

            End If

        Next

 

        CNumeroGiocatori = Numero - 1

 

        Return Numero

 

    End Function

 

    Public Sub SCRIVI_STATO_GIOCO_GAME_OVER(ByVal NGiocatore As Integer)

        CType(Me.Controls.Item("Giocatore" & NGiocatore), Label).Text = cGameOver

    End Sub

 

    Public Sub SCRIVI_STATO_GIOCO_ABBANDONATO(ByVal NGiocatore As Integer)

        CType(Me.Controls.Item("Giocatore" & NGiocatore), Label).Text = cAbbandonato

    End Sub

 

    Public Sub SCRIVI_STATO_GIOCO_IN_ATTESA(ByVal NGiocatore As Integer)

        CType(Me.Controls.Item("Giocatore" & NGiocatore), Label).Text = cProntoAGiocare

    End Sub

 

    Public Function DISTRIBUISCI_CARTA_SUL_TAVOLO(ByVal NumeroGiro As Integer, ByVal NumeroGiocatori As Integer) As String

 

        Dim Carta As String = NuovoMazzo.DAI_CARTA

 

        cTavolo(NumeroGiro) = Carta

 

        'Visualizza immagine sul tavolo

        CARICA_IMMAGINE_CARTA_SUL_TAVOLO(NumeroGiro, Carta)

 

        'Aggiungo la carta uscita ha ogni giocatore

        DISTRIBUISCI_CARTA_TAVOLO_A_GIOCATORI(Carta)

 

        Return Carta

 

    End Function

 

    Public Sub CARICA_IMMAGINE_CARTA_SUL_TAVOLO(ByVal NumeroGiro As Integer, ByVal Carta As String)

 

        Dim Parte1 As String = Carta.Substring(0, 1)

        Dim Parte2 As String = Carta.Substring(1, 1)

        Dim Immagine As Image = CType(Me.Controls.Item(CStr("PIC" & Parte1 & Parte2)), PictureBox).Image

        CType(Me.Controls.Item(CStr("PICTav" & NumeroGiro - 1)), PictureBox).Image = Immagine

 

    End Sub

 

    Public Sub DISTRIBUISCI_CARTE(ByVal NumeroGiocatori As Integer, ByVal NGiocatoreMazziere As Integer, ByVal NumeroCarta As Integer)

 

        'Distribuisco la carta partendo dal mazziere fino all'ultimo giocatore

 

        For ii As Integer = 0 To cArreyGiocatori.Length - 1

 

            Dim i As Integer = cArreyGiocatori(ii)

 

            Dim Carta As String = NuovoMazzo.DAI_CARTA

 

            If cGiocatore(i).RITORNA_STATO_GIOCATORE <> cGameOver Then

                cGiocatore(i).AGGIUNGI_CARTA(Carta)

 

                'Vedo le carte dell'avversario---------------

 

                'Dim Parte1 As String = Carta.Substring(0, 1)

                'Dim Parte2 As String = Carta.Substring(1, 1)

                'Dim Immagine As Image = CType(Me.Controls.Item(CStr("PIC" & Parte1 & Parte2)), PictureBox).Image

                'CType(Me.Controls.Item(("Carta" & i & "G" & NumeroCarta)), PictureBox).Image = Immagine

 

                'Modifica visualizzo le carte .-.-.-.-.-.-.-.-.-.

 

                'Visualizzo la carta del l'umano

                If i = 0 Then

                    Dim Parte1 As String = Carta.Substring(0, 1)

                    Dim Parte2 As String = Carta.Substring(1, 1)

                    Dim Immagine As Image = CType(Me.Controls.Item(CStr("PIC" & Parte1 & Parte2)), PictureBox).Image

                    CType(Me.Controls.Item(("Carta" & i & "G" & NumeroCarta)), PictureBox).Image = Immagine

                Else

                    'Visualizzo la carta coperta al PC

                    CType(Me.Controls.Item(CStr("Carta" & i & "G" & NumeroCarta)), PictureBox).Image = PICRetro.Image

                End If

 

                ' .-.-.-.-.-.-.-.-.-..-.-.-.-.-.-.-.-.-..-.-.-.

            End If

 

        Next

 

 

    End Sub

 

 

    Public Sub POSIZIONA_GIOCATORI(ByVal NumeroGiocatori As Integer)

 

        'Raggio della circonferenza sulla quale verranno disposti i giocatori

        Dim Raggio As Integer = 380

        'Posizione del centro della circonferenza

        Dim PosizioneCentrale As Point = New Point((Giocatore0.Location.X + 15), (Giocatore0.Location.Y))

 

        'Posiziona label nome Giocatore

        Dim PuntoLabelGiocatoreUmano As Point = New Point((Giocatore0.Location.X - 5), (Giocatore0.Location.Y - 100))

        LBLNomeGiocatore0.Location = PuntoLabelGiocatoreUmano

 

        PuntoLabelGiocatoreUmano.X += +50

        CType(Me.Controls.Item("SoldiG" & 0), Label).Location = PuntoLabelGiocatoreUmano

 

        PuntoLabelGiocatoreUmano.Y += +1

        PuntoLabelGiocatoreUmano.X += +26

        CType(Me.Controls.Item("LBLSoldiG" & 0), Label).Location = PuntoLabelGiocatoreUmano

 

        'Arrey che mi salva la posizione dei giocatori

        Dim PosioneGiocatori As Point() = New Point(NumeroGiocatori) {}

        'Ciclo che mi fa passare da un giocatore all'altro

 

        For i As Integer = 1 To NumeroGiocatori

            'Mi dice l'angolo che ogni giocatore ha rispetto al centro

            Dim AngoloProgressivo As Double = 180 / (NumeroGiocatori + 1) * i

            'Trasformo l'angolo in radianti

            Dim Radiante As Double = (Math.PI * AngoloProgressivo) / 180

            'Calcolo la posizione della X del giocatore

            Dim Angolo As Double = (Math.Cos(Radiante))

            Dim Risultato As Double = PosizioneCentrale.X + (Raggio * Angolo)

            PosioneGiocatori(i).X = CInt(Risultato)

            'Calcolo la posizione della Y del giocatore

            Angolo = (Math.Sin(Radiante))

            Dim RisultatoDue As Double = PosizioneCentrale.Y - (Raggio * Angolo)

            PosioneGiocatori(i).Y = CInt(RisultatoDue) + 50

 

            'Sposto la Label Giocatore i in base hai risultati ottenuti

            PosioneGiocatori(i).Y += +25

            PosioneGiocatori(i).X -= +45

            CType(Me.Controls.Item("Giocatore" & i), Label).Location = PosioneGiocatori(i)

            CType(Me.Controls.Item("Giocatore" & i), Label).Text = "Giocatore " & i

            CType(Me.Controls.Item("Giocatore" & i), Label).Visible = True

 

            PosioneGiocatori(i).Y -= +25

            PosioneGiocatori(i).X += +45

 

            'Sposto + in giù la carta

            PosioneGiocatori(i).Y = PosioneGiocatori(i).Y - 60

            'Sposto a sinistra la carta 1

            PosioneGiocatori(i).X = PosioneGiocatori(i).X - 44

            CType(Me.Controls.Item("Carta" & i & "G1"), PictureBox).Location = PosioneGiocatori(i)

            CType(Me.Controls.Item("Carta" & i & "G1"), PictureBox).Visible = True

            'Sposto a destra la carta 2

            PosioneGiocatori(i).X = PosioneGiocatori(i).X + 70

            CType(Me.Controls.Item("Carta" & i & "G2"), PictureBox).Location = PosioneGiocatori(i)

            CType(Me.Controls.Item("Carta" & i & "G2"), PictureBox).Visible = True

 

            'Posiziono Etichetta Giocatore

            PosioneGiocatori(i).Y -= +25

            PosioneGiocatori(i).X -= +75

            CType(Me.Controls.Item("LBLNomeGiocatore" & i), Label).Visible = True

            CType(Me.Controls.Item("LBLNomeGiocatore" & i), Label).Text = "Giocatore " & (i)

            CType(Me.Controls.Item("LBLNomeGiocatore" & i), Label).Location = PosioneGiocatori(i)

 

            'Posiziono label che mi indica i $ del giocatore

            PosioneGiocatori(i).X += +85

            CType(Me.Controls.Item("SoldiG" & i), Label).Visible = True

            CType(Me.Controls.Item("SoldiG" & i), Label).Location = PosioneGiocatori(i)

            PosioneGiocatori(i).X += +26

            PosioneGiocatori(i).Y += +2

            CType(Me.Controls.Item("LBLSoldiG" & i), Label).Visible = True

            CType(Me.Controls.Item("LBLSoldiG" & i), Label).Location = PosioneGiocatori(i)

 

        Next

 

    End Sub

 

    Private Function RITORNA_NOME_CARTE(ByVal Carte As String) As String

 

 

        Dim SiglaCarta() As String = New String(6) {}

        Dim DimensioneStringa As Integer = Carte.Length

        Dim NumeroCiclo As Integer = -1

 

        Dim Risultato As String = ""

 

        Dim Coppia As Boolean = False

        Dim DoppiaCoppia As Boolean = False

        Dim Tris As Boolean = False

        Dim Full As Boolean = False

        Dim Poker As Boolean = False

        Dim Colore As Boolean = False

        Dim Scala As Boolean = False

 

        Dim CCoppia As String = ""

        Dim cDoppiaCoppia As String = ""

        Dim IDoppiaCoppia As Integer = 0

        Dim cTris As String = ""

        Dim cFull As String = ""

        Dim cPoker As String = ""

        Dim cColore As String = ""

        Dim cScala As String = ""

 

        'Ciclo sulle carte che mi ritorna solo il tipo di carte senza il seme (es. 1, 5 ,7 )

        For i As Integer = 0 To DimensioneStringa - 1 Step 2

            NumeroCiclo += +1

            SiglaCarta(NumeroCiclo) = Carte.Substring(i, 1)

        Next

 

        Dim Punteggio As Integer = 0

 

        Dim Prova As String = ""

 

        Dim NomeCarta As String = ""

 

        'Faccio un ciclo sui numeri ( 1,2,...,8,9 ) mi ritorna quanti di questi numeri ci sono

 

        'Ciclo sulle carte

        Dim ArreyCarte As String() = New String(12) {"2", "3", "4", "5", "6", "7", "8", "9", "D", "J", "Q", "K", "A"}

 

        'i -> Ciclo sui numeri

        For i As Integer = 0 To 12

            NomeCarta = ""

 

            'ii -> Ciclo sulle carte del giocatore

            For ii As Integer = 0 To 6

 

                If ((SiglaCarta(ii)) = "") Then Exit For

 

                If CStr(ArreyCarte(i)) = (SiglaCarta(ii)) Then

                    Punteggio += +1

                    NomeCarta = SiglaCarta(ii)

                End If

 

            Next

 

            Select Case Punteggio

 

                Case Is = 2

                    If Coppia = True Then

                        Prova = Prova & NomeCarta

                        DoppiaCoppia = True

                        cDoppiaCoppia = NomeCarta

                        'La seconda volta che esce la coppia, sostituisco il valore più basso della prima coppia con questo più alto

                        If Prova.Length = 2 Then

                            CCoppia = Prova.Substring(0, 1)

                        End If

                    Else

                        CCoppia = NomeCarta

                    End If

                    Coppia = True

                Case Is = 3

                    Tris = True

                    cTris = NomeCarta

                Case Is = 4

                    Poker = True

                    cPoker = NomeCarta

            End Select

 

            If Coppia = True And Tris = True Then Full = True

 

            Punteggio = 0

 

        Next

 

        Dim Scaladi As String = PRESENZA_SCALA(Carte)

        Dim PresenzaColore As String = (PRESENZA_COLORE(Carte))

 

        If Poker = True Then

            Return "P" & cPoker

        ElseIf Full = True Then

            Return "F" & cTris & CCoppia

        ElseIf PresenzaColore <> "0" Then

            Return "L" & PresenzaColore

        ElseIf Scaladi <> "" Then

            Return "S" & Scaladi

        ElseIf Tris = True Then

            Return "T" & cTris

        ElseIf DoppiaCoppia = True Then

            Return "D" & cDoppiaCoppia & CCoppia

        ElseIf Coppia = True Then

            Return "C" & CCoppia

        Else

            Return "Niente"

        End If

 

    End Function

 

 

    'Scompongo le carte e conto quanti caratteri ci sono.

    'Se sono 5 vuol dire che c'è la presenza del colore

    Public Function PRESENZA_COLORE(ByVal Carte As String) As String

 

        Dim ScompongoCarte() As String = New String(6) {}

        Dim LunghezzaCiclo As Integer = CInt(Carte.Length)

        Dim NCarta As Integer = 0

 

        For i As Integer = 0 To LunghezzaCiclo - 1 Step 2

            ScompongoCarte(NCarta) = Carte.Substring(i + 1, 1)

            NCarta += +1

        Next

 

        Dim Cuori As Integer = 0

        Dim Quadri As Integer = 0

        Dim Picche As Integer = 0

        Dim Fiori As Integer = 0

 

        For i As Integer = 0 To CInt(LunghezzaCiclo / 2) - 1

 

            Select Case ScompongoCarte(i)

                Case Is = "C"

                    Cuori += +1

                    If (Cuori = 5) Then

                        Return "C"

                    End If

                Case Is = "Q"

                    Quadri += +1

                    If (Quadri = 5) Then

                        Return "Q"

                    End If

                Case Is = "P"

                    Picche += +1

                    If (Picche = 5) Then

                        Return "P"

                    End If

                Case Is = "F"

                    Fiori += +1

                    If (Fiori = 5) Then

                        Return "F"

                    End If

            End Select

        Next

 

        Return "0"

    End Function

 

 

    Private Function RITORNA_NUMERO_DAL_TIPO_DI_CARTA(ByVal TipoCarta As String, ByVal SecondoTentativo As Boolean) As Integer

 

        If SecondoTentativo = False Then

 

            Select Case TipoCarta

                'Scala Reale

                Case Is = "R"

                    Return 16

                    'Poker

                Case Is = "P"

                    Return 14

                    'Full

                Case Is = "F"

                    Return 12

                    'Colore

                Case Is = "L"

                    Return 10

                Case Is = "S"

                    'Scala fuffa

                    Return 8

                    'Tris

                Case Is = "T"

                    Return 6

                    'Doppia Coppia

                Case Is = "D"

                    Return 4

                    'Coppia

                Case Is = "C"

                    Return 2

                    'Niente

                Case Is = "N"

                    Return 0

            End Select

 

        Else

 

            Select Case TipoCarta

                Case Is = "A"

                    Return 13

                Case Is = "K"

                    Return 12

                Case Is = "Q"

                    Return 11

                Case Is = "J"

                    Return 10

                Case Is = "D"

                    Return 9

                Case Is = "9"

                    Return 8

                Case Is = "8"

                    Return 7

                Case Is = "7"

                    Return 6

                Case Is = "6"

                    Return 5

                Case Is = "5"

                    Return 4

                Case Is = "4"

                    Return 3

                Case Is = "3"

                    Return 2

                Case Is = "2"

                    Return 1

            End Select

 

        End If

 

    End Function

 

    'Decido in base alle carte,n del giro, $ cosa fare

 

    Private Function DECIDI_COSA_FARE_PRIME_DUE_CARTE(ByVal Carte As String, ByVal NGiocatore As Integer) As String

 

        Randomize()

 

        Dim Ncasuale As Integer = New Integer()

        Dim Rand As Random = New Random()

        Ncasuale = Rand.Next(0, 100)

 

        Dim Risultato As String = "Errore"

 

        If cGiocatore(NGiocatore).RITORNA_STATO_GIOCATORE = cAllIn Then

            Return cAllIn

        End If

 

        If DECIDERE_GIOCARE_PRIME_DUE_CARTE(NGiocatore) = True Then

            Risultato = cGioco

        Else

            Risultato = cLascio

        End If

 

        Return Risultato

 

    End Function

 

    Public Function DECIDERE_GIOCARE_PRIME_DUE_CARTE(ByVal nGiocatore As Integer) As Boolean

 

        Dim CartaA As String = (cGiocatore(nGiocatore).cCarte.Substring(0, 1))

        Dim CartaB As String = (cGiocatore(nGiocatore).cCarte.Substring(2, 1))

 

        'MI STAMPA COSA HO

        CType(Me.Controls.Item("Carte" & nGiocatore), Label).Text = CStr(RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaA, True))

        CType(Me.Controls.Item("Carte" & nGiocatore), Label).Text &= " " & CStr(RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaB, True))

 

        Dim A As Integer = (RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaA, True))

        Dim B As Integer = (RITORNA_NUMERO_DAL_TIPO_DI_CARTA(CartaB, True))

 

        If (A > 5) Or (B > 5) Then

            Return True

        Else

            Return False

        End If

 

    End Function

 

    'Decido in base alle carte,n del giro, $ cosa fare

 

    Private Function DECIDI_COSA_FARE_SECONDA_MANO(ByVal Carte As String, ByVal NGiocatore As Integer) As String

 

        Randomize()

 

        If cGiocatore(NGiocatore).RITORNA_STATO_GIOCATORE = cAllIn Then

            Return cAllIn

        End If

 

        'Se sono l'ultimo e l'unico giocatore in gioco; gioco per forza

        If SOLO_UN_GIOCATORE_IN_GIOCO() = 0 Then

            Return cGioco

        End If

 

        Dim Ncasuale As Integer = New Integer()

 

        Dim StrCarteMie As String = RITORNA_NOME_CARTE(Carte)

        Dim LunghezzaCarte As Integer = Carte.Length

        Carte = Carte.Substring(4, LunghezzaCarte - 4)

        Dim StrCarteTavolo As String = RITORNA_NOME_CARTE(Carte)

 

        Dim PercentualeTavolo As Integer = 0

        Dim PercentualeCarteMie As Integer = 0

        Select Case StrCarteMie.Substring(0, 1)

            'Non ho niete

            Case Is = "N"

                PercentualeCarteMie = 1

                'Coppia

            Case Is = "C"

                PercentualeCarteMie = 2

                'DoppiaCoppia

            Case Is = "D"

                PercentualeCarteMie = 3

                'Tris

            Case Is = "T"

                PercentualeCarteMie = 4

            Case Is = "S"

                PercentualeCarteMie = 5

                'Colore

            Case Is = "L"

                PercentualeCarteMie = 6

                'Full

            Case Is = "F"

                PercentualeCarteMie = 7

                'Poker

            Case Is = "P"

                PercentualeCarteMie = 8

        End Select

 

        Select Case StrCarteTavolo.Substring(0, 1)

            'Non ho niete

            Case Is = "N"

                PercentualeTavolo = 1

                'Coppia

            Case Is = "C"

                PercentualeTavolo = 2

                'DoppiaCoppia

            Case Is = "D"

                PercentualeTavolo = 3

                'Tris

            Case Is = "T"

                PercentualeTavolo = 4

            Case Is = "S"

                PercentualeTavolo = 5

                'Colore

            Case Is = "L"

                PercentualeTavolo = 6

                'Full

            Case Is = "F"

                PercentualeTavolo = 7

                'Poker

            Case Is = "P"

                PercentualeTavolo = 8

        End Select

 

        Dim PuntataMax As Integer = 0

        Dim PuntataGiocatore As Integer = 0

        Dim Risultato As String = "Errore"

 

        Dim Coraggio As Integer = cGiocatore(NGiocatore).cCoraggio

 

 

        Select Case CNumeroDiMano

 

            Case Is = 4

 

                'Non ho niente, non posso migliorare il punto che già è giù. 

                If PercentualeTavolo = PercentualeCarteMie Then

                    PuntataGiocatore = PUNTATA(0, Coraggio, 70, 1, 100, 2, 200, 1, 300, 1)

                End If

 

                Select Case StrCarteMie.Substring(0, 1)

 

                    'Coppia

                    Case Is = "C"

                        PuntataGiocatore = PUNTATA(0, Coraggio, 40, 1, 60, 2, 90, 3, 110, 4)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(2 + (Coraggio / 10))

                        'DoppiaCoppia

                    Case Is = "D"

                        PuntataGiocatore = PUNTATA(1, Coraggio, 30, 1, 50, 2, 80, 3, 90, 4)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(3 + (Coraggio / 10))

                        'Tris

                    Case Is = "T"

                        PuntataGiocatore = PUNTATA(2, Coraggio, 20, 3, 40, 4, 50, 5, 95, 6)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(4 + (Coraggio / 10))

                        'Scala

                    Case Is = "S"

                        PuntataGiocatore = PUNTATA(3, Coraggio, 10, 1, 30, 2, 50, 3, 60, 5)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(5 + (Coraggio / 10))

                        'Colore

                    Case Is = "L"

                        PuntataGiocatore = PUNTATA(3, Coraggio, 10, 2, 30, 3, 50, 4, 70, 6)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(5 + (Coraggio / 10))

                        'Full

                    Case Is = "F"

                        PuntataGiocatore = PUNTATA(4, Coraggio, 10, 2, 30, 3, 50, 5, 70, 7)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(6 + (Coraggio / 10))

                        'Poker

                    Case Is = "P"

                        PuntataGiocatore = PUNTATA(6, Coraggio, 5, 3, 20, 4, 40, 6, 60, 8)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(15 + (Coraggio / 10))

                End Select

 

 

                'Altra mano

            Case Is = 5

 

 

                'Non ho niente, non posso migliorare il punto che già è giù. 

                If PercentualeTavolo = PercentualeCarteMie Then

                    PuntataGiocatore = PUNTATA(0, Coraggio, 70, 1, 100, 2, 0, 0, 0, 0)

                End If

 

                Select Case StrCarteMie.Substring(0, 1)

 

                    'Coppia

                    Case Is = "C"

                        PuntataGiocatore = PUNTATA(0, Coraggio, 40, 1, 60, 2, 90, 3, 0, 0)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(2 + (Coraggio / 10))

                        'DoppiaCoppia

                    Case Is = "D"

                        PuntataGiocatore = PUNTATA(1, Coraggio, 30, 1, 50, 2, 80, 3, 90, 4)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(3 + (Coraggio / 10))

                        'Tris

                    Case Is = "T"

                        PuntataGiocatore = PUNTATA(2, Coraggio, 20, 3, 40, 4, 50, 5, 95, 6)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(4 + (Coraggio / 10))

                        'Scala

                    Case Is = "S"

                        PuntataGiocatore = PUNTATA(3, Coraggio, 10, 1, 30, 2, 50, 3, 60, 5)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(5 + (Coraggio / 10))

                        'Colore

                    Case Is = "L"

                        PuntataGiocatore = PUNTATA(3, Coraggio, 10, 2, 30, 3, 50, 4, 70, 6)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(5 + (Coraggio / 10))

                        'Full

                    Case Is = "F"

                        PuntataGiocatore = PUNTATA(4, Coraggio, 10, 2, 30, 3, 50, 5, 70, 7)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(6 + (Coraggio / 10))

                        'Poker

                    Case Is = "P"

                        PuntataGiocatore = PUNTATA(6, Coraggio, 5, 3, 20, 4, 40, 6, 60, 8)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(15 + (Coraggio / 10))

                End Select

 

 

            Case Is = 6

 

 

                'Non ho niente, non posso migliorare il punto che già è giù. 

                If PercentualeTavolo = PercentualeCarteMie Then

                    PuntataGiocatore = PUNTATA(0, Coraggio, 70, 1, 100, 2, 0, 0, 0, 0)

                End If

 

                Select Case StrCarteMie.Substring(0, 1)

 

                    'Coppia

                    Case Is = "C"

                        PuntataGiocatore = PUNTATA(0, Coraggio, 40, 1, 60, 2, 90, 3, 0, 0)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(2 + (Coraggio / 10))

                        'DoppiaCoppia

                    Case Is = "D"

                        PuntataGiocatore = PUNTATA(1, Coraggio, 30, 1, 50, 2, 80, 3, 90, 4)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(3 + (Coraggio / 10))

                        'Tris

                    Case Is = "T"

                        PuntataGiocatore = PUNTATA(2, Coraggio, 20, 3, 40, 4, 50, 5, 95, 6)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(4 + (Coraggio / 10))

                        'Scala

                    Case Is = "S"

                        PuntataGiocatore = PUNTATA(3, Coraggio, 10, 1, 30, 2, 50, 3, 60, 5)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(5 + (Coraggio / 10))

                        'Colore

                    Case Is = "L"

                        PuntataGiocatore = PUNTATA(3, Coraggio, 10, 2, 30, 3, 50, 4, 70, 6)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(5 + (Coraggio / 10))

                        'Full

                    Case Is = "F"

                        PuntataGiocatore = PUNTATA(4, Coraggio, 10, 2, 30, 3, 50, 5, 70, 7)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(6 + (Coraggio / 10))

                        'Poker

                    Case Is = "P"

                        PuntataGiocatore = PUNTATA(6, Coraggio, 5, 3, 20, 4, 40, 6, 60, 8)

                        cGiocatore(NGiocatore).cRilancioMassimo = CInt(15 + (Coraggio / 10))

                End Select

 

        End Select

 

 

        If PuntataGiocatore = 0 Then

            Return cVedo

        End If

 

        'Posso giocare solo se ho abbastanza soldi

        If cGiocatore(NGiocatore).RITORNA_SOLDI_GIOCATORE > PuntataGiocatore Then

 

            'cPuntataGiocatore = PuntataGiocatore

 

            If PuntataGiocatore > cPuntata Then

                cRilancio = True

                cPuntata = PuntataGiocatore

                Risultato = cGioco

            Else

                Risultato = cLascio

            End If

 

        Else

            'Voglio giocare anche se non ho abbastanza soldi

            Risultato = cAllIn

        End If

 

        Return Risultato

 

    End Function

 

    Public Function PUNTATA(ByVal PuntataCheVorreiFare As Integer, ByVal Coraggio As Integer, ByVal SogliaA As Integer, ByVal ValoreA As Integer, ByVal SogliaB As Integer, ByVal ValoreB As Integer, ByVal SogliaC As Integer, ByVal ValoreC As Integer, ByVal SogliaD As Integer, ByVal ValoreD As Integer) As Integer

 

 

        Dim Rand As Random = New Random()

        Dim NumeroCasuale As Integer = Rand.Next(0, 100) + Coraggio

 

        If PuntataCheVorreiFare >= cPuntata Then

            Select Case NumeroCasuale

                Case Is < 30

                    Return PuntataCheVorreiFare

                Case Is < 60

                    Return ValoreC

                Case Is > 90

                    Return ValoreD

            End Select

 

        End If

 

 

        If cPuntata = 0 And PuntataCheVorreiFare = 0 Then

            Return 0

        Else

            Select Case NumeroCasuale

                Case Is < SogliaA

                    Return ValoreA

                Case Is < SogliaB

                    Return ValoreB

                Case Is < SogliaC

                    Return ValoreC

                Case Is < SogliaD

                    Return ValoreD

                Case Is > SogliaD

                    Return ValoreD + 1

            End Select

        End If

 

    End Function

 

 

    Private Sub STATISTICHE_PARTITE(ByVal NGiocatoreVincente As String)

 

        'Visualizzo le possibilità solo con questo giocatore

        'NGiocatoreVincente = CStr(0)

 

        Dim Risultato As String = cGiocatore(CInt(NGiocatoreVincente.Substring(0, 1))).RITORNA_STRINGA_CARTE_GIOCATORE

 

        If NGiocatoreVincente.Length = 1 Then cNGiocatoreVincente(CInt(NGiocatoreVincente.Substring(0, 1))) += +1

 

        Select Case Risultato.Substring(0, 1)

            'Case Is = "R"

            'Return 16

            Case Is = "P"

                CNumeroPoker += +1

            Case Is = "F"

                CNumeroFull += +1

            Case Is = "T"

                CNumeroTris += +1

            Case Is = "S"

                CNumeroScala += +1

            Case Is = "D"

                CNumeroDoppiaCoppia += +1

            Case Is = "C"

                CNumeroCoppia += +1

            Case Is = "N"

                CNumeroNiente += +1

            Case Is = "L"

                CNumeroColore += +1

        End Select

 

        Label3.Text = "Coppia: " & CNumeroCoppia & vbCrLf

        Label3.Text &= "CNumeroDoppiaCoppia: " & CNumeroDoppiaCoppia & vbCrLf

        Label3.Text &= "CNumeroScala: " & CNumeroScala & vbCrLf

        Label3.Text &= "CNumeroTris: " & CNumeroTris & vbCrLf

        Label3.Text &= "CNumeroFull: " & CNumeroFull & vbCrLf

        Label3.Text &= "CNumeroPoker: " & CNumeroPoker & vbCrLf

        Label3.Text &= "CNumeroColore: " & CNumeroColore & vbCrLf

 

        Label3.Text &= "CNumeroNiente: " & CNumeroNiente & vbCrLf & vbCrLf

 

        Label3.Text &= "Giocatore0 " & cNGiocatoreVincente(0) & vbCrLf

        Label3.Text &= "Giocatore1 " & cNGiocatoreVincente(1) & vbCrLf

        Label3.Text &= "Giocatore2 " & cNGiocatoreVincente(2) & vbCrLf

        Label3.Text &= "Giocatore3 " & cNGiocatoreVincente(3) & vbCrLf

        Label3.Text &= "Giocatore4 " & cNGiocatoreVincente(4) & vbCrLf

        Label3.Text &= "Giocatore5 " & cNGiocatoreVincente(5) & vbCrLf

        Label3.Text &= "Giocatore6 " & cNGiocatoreVincente(6) & vbCrLf

 

 

    End Sub

 

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

 

        'INIZIO_PARTITA()

 

        'IMPOSTAZIONI_NUOVA_MANO()

 

    End Sub

 

    Public Sub IMPOSTAZIONI_NUOVA_MANO()

 

        PULSANTE_ABILITATO(CMDNuovaMano)

        PULSANTE_DISABILITATO(CmdVedo)

        PULSANTE_DISABILITATO(CMDGioco)

        PULSANTE_DISABILITATO(CMDLascia)

 

    End Sub

 

    Public Sub IMPOSTAZIONI_GIOCO_IN_CORSO_PRIMA_MANO()

 

        PULSANTE_DISABILITATO(CMDNuovaMano)

        PULSANTE_DISABILITATO(CmdVedo)

        PULSANTE_ABILITATO(CMDGioco)

        PULSANTE_ABILITATO(CMDLascia)

 

    End Sub

 

    Public Sub PULSANTE_ABILITATO(ByVal Pulsante As Button)

        Pulsante.Enabled = True

        Pulsante.Font = New Font("Century Gothic", 9, FontStyle.Bold)

    End Sub

 

    Public Sub PULSANTE_DISABILITATO(ByVal Pulsante As Button)

        Pulsante.Enabled = False

        Pulsante.Font = New Font("Century Gothic", 7, FontStyle.Regular)

    End Sub

 

    Public Sub IMPOSTAZIONI_TURNO_GIOCATORE(ByVal PossoVedere As Boolean)

 

        If PossoVedere = True Then

            PULSANTE_ABILITATO(CmdVedo)

        Else

            PULSANTE_DISABILITATO(CmdVedo)

        End If

 

        PULSANTE_ABILITATO(CMDGioco)

        PULSANTE_ABILITATO(CMDLascia)

 

        IMPOSTAZIONE_AUMENTO_PUNTATA()

 

    End Sub

 

    Public Sub IMPOSTAZIONE_AUMENTO_PUNTATA()

 

        If cPuntata = 0 Then

            cPuntata = 1

        End If

 

        CMDDiminuisciPuntata.Enabled = False

        CMDAumentaPuntata.Enabled = True

 

        If cPuntata < cGiocatore(0).RITORNA_SOLDI_GIOCATORE Then

            TXTPuntata.Text = CStr(cPuntata)

        Else

            TXTPuntata.Text = CStr(cGiocatore(0).RITORNA_SOLDI_GIOCATORE)

            CMDAumentaPuntata.Enabled = False

        End If

 

 

 

        If cTurnoRilancio = True Then

            'GRAFICA -------------------------------------

            TXTPuntata.Text = CStr(CDifferenzaDaAggiungereNelPiatto)

            PULSANTE_DISABILITATO(CMDDiminuisciPuntata)

            PULSANTE_DISABILITATO(CMDAumentaPuntata)

            'FINE GRAFICA --------------------------------

        End If

 

 

 

    End Sub

 

 

    Public Sub IMPOSTAZIONI_TEMPORIZZAZIONE_TURNO_PC(ByVal AzzeraPuntata As Boolean)

 

        PULSANTE_DISABILITATO(CMDNuovaMano)

        PULSANTE_DISABILITATO(CmdVedo)

        PULSANTE_DISABILITATO(CMDGioco)

        PULSANTE_DISABILITATO(CMDLascia)

 

        PULSANTE_DISABILITATO(CMDDiminuisciPuntata)

        PULSANTE_DISABILITATO(CMDAumentaPuntata)

 

        If AzzeraPuntata = True Then

            TXTPuntata.Text = ""

        End If

 

        TXTPuntata.Enabled = False

 

    End Sub

 

 

    Public Sub IMPOSTAZIONI_GIOCO_ABBANDONATO()

        CMDNuovaMano.Enabled = False

        CMDNuovaMano.Font = New Font("Century Gothic", 7, FontStyle.Regular)

        CmdVedo.Enabled = False

        CmdVedo.Font = New Font("Century Gothic", 9, FontStyle.Bold)

        CMDGioco.Enabled = False

        CMDGioco.Font = New Font("Century Gothic", 9, FontStyle.Bold)

        CMDLascia.Enabled = False

        CMDLascia.Font = New Font("Century Gothic", 9, FontStyle.Bold)

    End Sub

 

    ' --------- AGGIUNGI UNA NUOVA CARTA --------------------

 

    'Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

    'DISTRIBUISCI_CARTA_SUL_TAVOLO(CNumeroDiMano, CNumeroGiocatori)

    'CONTROLLA_CARTE()

    'CNumeroDiMano = CNumeroDiMano + 1

    'DECISIONI_SULLE_CARTE_PRIMA_MANO()

    'If CNumeroDiMano = 6 Then

    'Dim GiocatoreVincente As String = (TROVA_N_VINCITORE())

    'Label2.Text = "Vince il Giocatore " & GiocatoreVincente

    'CMDNuovaMano.Enabled = True

    'STATISTICHE_PARTITE(GiocatoreVincente)

    'End If

    'End Sub

 

    ' ---------------------------------------------------------

 

    Public Sub PULISCI_CARTE_TAVOLO()

        'Dim Immagine As Image = PICRetro.Image

        For i As Integer = 0 To 4

            CType(Me.Controls.Item(CStr("PICTav" & i)), PictureBox).Image = Nothing

            'CType(Me.Controls.Item(CStr("PICTav" & 4 - i)), PictureBox).Refresh()

            CType(Me.Controls.Item(CStr("PICTav" & i)), PictureBox).Refresh()

        Next

 

    End Sub

 

    Public Sub AGGIUNGI_NUOVA_CARTA()

 

        DISTRIBUISCI_CARTA_SUL_TAVOLO(CNumeroDiMano, CNumeroGiocatori)

 

        CONTROLLA_CARTE()

 

        CNumeroDiMano = CNumeroDiMano + 1

 

        'If CNumeroDiMano = 6 Then

        'Dim GiocatoreVincente As String = (TROVA_N_VINCITORE())

        'End If

 

    End Sub

 

 

    Public Sub GESTISCI_DECISIONE_GIOCATORE(ByVal NumeroGiocatore As Integer, ByVal DecisioneGiocatore As String, ByVal Puntata As Integer)

 

        Dim i As Integer = NumeroGiocatore

 

        cGiocatore(i).IMPOSTA_STATO_GIOCATORE(DecisioneGiocatore)

 

        Select Case DecisioneGiocatore

 

            Case Is = cGioco

 

                'Dim SoldiDisponibili As Integer = cGiocatore(NumeroGiocatore).RITORNA_SOLDI_GIOCATORE

 

                cGiocatore(NumeroGiocatore).SCALA_SOLDI(Puntata)

                cGiocatore(NumeroGiocatore).IMPOSTA_PUNTATA_GIOCATORE(Puntata)

 

                cGiocatore(NumeroGiocatore).IMPOSTA_PUNTATA(CNumeroDiMano - 3, Puntata)

 

                cPiatto.AGGIUNGI_SOLDI(Puntata)

                REFRESH_SOLDI_PIATTO()

                REFRESH_SOLDI_GIOCATORE(NumeroGiocatore)

 

                CType(Me.Controls.Item("Giocatore" & i), Label).Text = DecisioneGiocatore & Puntata & cFish

 

                TextBox1.Text &= vbCrLf & CNumeroDiMano & ">> " & i & " ---> " & DecisioneGiocatore & " | " & Puntata

 

 

            Case Is = cLascio

 

                CType(Me.Controls.Item("Giocatore" & i), Label).Text = DecisioneGiocatore

                CType(Me.Controls.Item(CStr("Carta" & i & "G" & 1)), PictureBox).Image = PICRetroA.Image

                CType(Me.Controls.Item(CStr("Carta" & i & "G" & 2)), PictureBox).Image = PICRetroA.Image

 

                cGiocatore(NumeroGiocatore).IMPOSTA_PUNTATA(CNumeroDiMano - 3, 0)

 

                TextBox1.Text &= vbCrLf & CNumeroDiMano & ">> " & i & " ---> " & DecisioneGiocatore & " | " & Puntata

 

 

            Case Is = cVedo

 

                CType(Me.Controls.Item("Giocatore" & i), Label).Text = DecisioneGiocatore

                cGiocatore(NumeroGiocatore).IMPOSTA_PUNTATA(CNumeroDiMano - 3, 0)

                TextBox1.Text &= vbCrLf & CNumeroDiMano & ">> " & i & " ---> " & DecisioneGiocatore & " | " & Puntata

 

            Case Is = cAllIn

 

                Dim SoldiGiocatore As Integer = cGiocatore(NumeroGiocatore).RITORNA_SOLDI_GIOCATORE

 

                If SoldiGiocatore > 0 Then

 

                    cGiocatore(NumeroGiocatore).SCALA_SOLDI(SoldiGiocatore)

                    cGiocatore(NumeroGiocatore).IMPOSTA_PUNTATA_GIOCATORE(SoldiGiocatore)

 

                    cPiatto.AGGIUNGI_SOLDI(SoldiGiocatore)

                    REFRESH_SOLDI_PIATTO()

                    REFRESH_SOLDI_GIOCATORE(NumeroGiocatore)

 

                    CType(Me.Controls.Item("Giocatore" & i), Label).Text = DecisioneGiocatore & " con " & SoldiGiocatore & " fish"

 

                    cGiocatore(NumeroGiocatore).IMPOSTA_PUNTATA(CNumeroDiMano - 3, SoldiGiocatore)

                    cGiocatore(NumeroGiocatore).IMPOSTA_STATO_GIOCATORE(cAllIn)

 

                    TextBox1.Text &= vbCrLf & CNumeroDiMano & ">> " & i & " ---> " & DecisioneGiocatore & " All| "

 

                Else

 

                    CType(Me.Controls.Item("Giocatore" & i), Label).Text = DecisioneGiocatore

                    cGiocatore(NumeroGiocatore).IMPOSTA_PUNTATA(CNumeroDiMano - 3, 0)

 

                    TextBox1.Text &= vbCrLf & CNumeroDiMano & ">> " & i & " ---> " & DecisioneGiocatore & "Inn| " & 0

 

                End If

 

 

        End Select

 

 

    End Sub

 

 

    Public Sub DECISIONE_PRIME_DUE_CARTE(ByVal I As Integer)

 

        Dim DecisioneGiocatore As String = DECIDI_COSA_FARE_PRIME_DUE_CARTE(cGiocatore(I).RITORNA_CARTE_GIOCATORE, I)

        GESTISCI_DECISIONE_GIOCATORE(I, DecisioneGiocatore, cPiccoloBuio)

 

 

 

        Me.Refresh()

 

    End Sub

 

    Public Sub DECISIONI_SULLE_CARTE_SECONDA_MANO_TIMER(ByVal I As Integer)

 

        Dim DecisioneGiocatore As String = DECIDI_COSA_FARE_SECONDA_MANO(cGiocatore(I).RITORNA_CARTE_GIOCATORE, I)

 

        GESTISCI_DECISIONE_GIOCATORE(I, DecisioneGiocatore, cPuntata)

 

        Me.Refresh()

 

    End Sub

 

 

    Private Sub CMDNuovaMano_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDNuovaMano.Click

 

        cNPartite = cNPartite + 1

 

        'Aumento ogni 3 partite il piccolo buio

        If CBool(cNPartite Mod 3) = False Then

            cPiccoloBuio = cPiccoloBuio + 1

            cNPartite = 0

        End If

 

        '_______________________________

        'Cancello il contenuto

        TextBox2.Text = ""

        '_______________________________

 

        LBLScrittaMazz.Visible = False

 

        IMPOSTAZIONI_TEMPORIZZAZIONE_TURNO_PC(True)

 

        MODIFICA_STATO_GIOCATORE_FINE_PARTITA(True)

        RIAVVIA_IMPOSTAZIONI_GRAFICHE_FINE_PARTITA()

        PULISCI_CARTE_TAVOLO()

 

        For ii As Integer = 0 To cArreyGiocatori.Length - 1

            Dim i As Integer = cArreyGiocatori(ii)

            cGiocatore(i).RIAZZERA_CARTE()

        Next

 

        cFine_Turno = False

        CNumeroDiMano = 3

        cPiatto.RIAZZERA_PIATTO()

 

        If cSoldiNonDati <> 0 Then

            cPiatto.AGGIUNGI_SOLDI(cSoldiNonDati)

            cSoldiNonDati = 0

        End If

 

        'cGiocatore(0).IMPOSTA_SOLDI_INIZIALI(50)

        'cGiocatore(1).IMPOSTA_SOLDI_INIZIALI(40)

        'cGiocatore(2).IMPOSTA_SOLDI_INIZIALI(30)

        'cGiocatore(3).IMPOSTA_SOLDI_INIZIALI(20)

        'cGiocatore(4).IMPOSTA_SOLDI_INIZIALI(30)

        'cGiocatore(5).IMPOSTA_SOLDI_INIZIALI(40)

        'cGiocatore(6).IMPOSTA_SOLDI_INIZIALI(50)

 

        MODIFICA_ARREY_POSIZIONE_GIOCATORI(False)

 

        NUOVA_MANO()

 

        'PICCOLO_BUIO(cMazziere)

        'REFRESH_SOLDI_GIOCATORE(cMazziere)

        'CType(Me.Controls.Item("Giocatore" & cMazziere), Label).Text = cSTRPiccoloBuio

 

        'Faccio Mettere la Fish al piccolo Buio

        PICCOLO_BUIO(cArreyGiocatori(0))

        REFRESH_SOLDI_GIOCATORE(cArreyGiocatori(0))

        CType(Me.Controls.Item("Giocatore" & cArreyGiocatori(0)), Label).Text = cSTRPiccoloBuio

 

        'Imposto la variabile che mi permette di scorrere la posizione dei giocatori

        'Imposto già ad uno poiche il piccolo buio ha già giocato

        cNGiocatoreTurno = 1

 

        'Avvio il timer,ogni intervallo il computer pensa a cosa fare

        Timer.Interval = 500

        Timer.Start()

 

    End Sub

 

    Public Sub CANCELLA_DECISIONI_GIOCATORI()

 

        'For I As Integer = 0 To cGiocatoriRimasti - 1

        For I As Integer = 0 To cArreyGiocatori.Length - 1

 

            Dim StatoGiocatore As String = cGiocatore(cArreyGiocatori(I)).RITORNA_STATO_GIOCATORE

            If StatoGiocatore = cGameOver Or StatoGiocatore = cAllIn Then

            Else

                CType(Me.Controls.Item("Giocatore" & cArreyGiocatori(I)), Label).Text = ""

            End If

        Next

 

    End Sub

 

    Public Sub RESETTA_VARIABILI_TIMER()

 

        'Salvo in una variabile globale il numero del giocatore che fa il mazziere

        cNGiocatoreTurno = 0

        cPuntata = 0

        cRilancio = False

        ciRilancio = 0

        cRilancioGlobale = False

        cFine_TurnoUMANO = False

 

        cTurnoRilancio = False

 

    End Sub

 

    Public Sub PASSA_A_PRIMA_CARTA()

 

        Timer.Stop()

 

        CNumeroDiMano = CNumeroDiMano + 1

 

        'Distribuisco in mezzo le carte e aggiungo le carte uscite alla lista delle carte che ognuno ha

        DISTRIBUISCI_CARTA_SUL_TAVOLO(1, CNumeroGiocatori)

        DISTRIBUISCI_CARTA_SUL_TAVOLO(2, CNumeroGiocatori)

        DISTRIBUISCI_CARTA_SUL_TAVOLO(3, CNumeroGiocatori)

 

        'Controllo che cosa hanno i giocatori

        'CONTROLLA_CARTE()

 

        RESETTA_VARIABILI_TIMER()

 

        LBLDecisioneGiocatore.Text = "Si girano le carte"

 

        Dim Num As Integer = CONTA_NUMERO_GIOCATORI_IN_GIOCO()

 

        MODIFICA_ARREY_POSIZIONE_GIOCATORI(False)

 

        LBLDecisioneGiocatore.Text = LBLDecisioneGiocatore.Text & vbCrLf & vbCrLf & "Numero di Giocatori: " & Num + 1

 

        CANCELLA_DECISIONI_GIOCATORI()

 

        Timer1.Interval = 1000

        Timer1.Start()

 

    End Sub

 

    Public Sub GIRA_CARTA_SINGOLA()

 

        Timer1.Stop()

 

        PREPARA_PER_GIRARE_CARTE()

 

        Timer1.Interval = 1000

        Timer1.Start()

 

    End Sub

 

 

    Public Sub PREPARA_PER_GIRARE_CARTE()

 

        RESETTA_VARIABILI_TIMER()

 

        LBLDecisioneGiocatore.Text = "Si gira la carta ... "

 

        Dim Num As Integer = CONTA_NUMERO_GIOCATORI_IN_GIOCO()

 

        MODIFICA_ARREY_POSIZIONE_GIOCATORI(False)

 

        LBLDecisioneGiocatore.Text = LBLDecisioneGiocatore.Text & vbCrLf & vbCrLf & "Numero di Giocatori: " & Num

 

        CANCELLA_DECISIONI_GIOCATORI()

 

        AGGIUNGI_NUOVA_CARTA()

 

    End Sub

 

 

    '-------------- TEMPORIZZO LA DECISIONE PER VOLTARE LE PRIME 3 CARTE

    Private Sub TEMPORIZZA_DECISIONE_PRIME_DUE_CARTE(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer.Tick

 

        If cFine_TurnoUMANO = True Then

            GoTo 0

        End If

 

        cFine_Turno = False

 

        Dim Giocatore As Integer = cArreyGiocatori(cNGiocatoreTurno)

 

        If Giocatore = cArreyGiocatori(cArreyGiocatori.Length - 1) Then

            cFine_Turno = True

        End If

 

        If Giocatore <> 0 And (cGiocatore(Giocatore).RITORNA_STATO_GIOCATORE <> cGameOver) Then

            LBLDecisioneGiocatore.Text = "Il giocatore " & Giocatore & vbCrLf & " sta pensando cosa fare ... "

            DECISIONE_PRIME_DUE_CARTE(Giocatore)

        Else

            'Imposto per l'umano la possibilità di scegliere cosa fare

            LBLDecisioneGiocatore.Text = "è il tuo turno" & vbCrLf & "decidi cosa fare ... "

            IMPOSTAZIONI_GIOCO_IN_CORSO_PRIMA_MANO()

            Timer.Stop()

            Exit Sub

        End If

 

        'Imposto quanto tempo ci mettera il prossimo avversario a pensare la mossa

        Dim Random As Random = New Random()

        Timer.Interval = Random.Next(200, TempoMassimo)

 

        'If cNGiocatoreTurno = CNumeroGiocatori + 1 Then Timer.Interval = 1

        'If cNGiocatoreTurno = cMazziere Then Timer.Interval = 1

 

        cNGiocatoreTurno = cNGiocatoreTurno + 1

 

        'Controllo quando ho finito il primo giro

        If cFine_Turno = True Then

0:

            PASSA_A_PRIMA_CARTA()

            cFine_Turno = False

        End If

 

    End Sub

 

    Private Sub TEMPORIZZA_DECISIONE_CARTA_SINGOLA(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

 

        'se è gia fine turno passo direttamente al passo successivo

        If cFine_TurnoUMANO = True Then

            GoTo 0

        End If

 

        cRilancio = False

 

        Dim Giocatore As Integer = cArreyGiocatori(cNGiocatoreTurno)

 

        If Giocatore = cArreyGiocatori(cArreyGiocatori.Length - 1) Then

            cFine_Turno = True

        End If

 

        If Giocatore <> 0 Then

 

            LBLDecisioneGiocatore.Text = "Il giocatore " & Giocatore & vbCrLf & " sta pensando cosa fare ... "

 

            Select Case CNumeroDiMano

                Case Is = 4

                    DECISIONI_SULLE_CARTE_SECONDA_MANO_TIMER(Giocatore)

                Case Is = 5

                    DECISIONI_SULLE_CARTE_SECONDA_MANO_TIMER(Giocatore)

                Case Is = 6

                    DECISIONI_SULLE_CARTE_SECONDA_MANO_TIMER(Giocatore)

            End Select

 

        Else

 

            'Imposto per l'umano la possibilità di scegliere cosa fare

            LBLDecisioneGiocatore.Text = "è il tuo turno" & vbCrLf & "decidi cosa fare ... "

 

            If cPuntata = 0 Then

                IMPOSTAZIONI_TURNO_GIOCATORE(True)

            Else

                IMPOSTAZIONI_TURNO_GIOCATORE(False)

            End If

 

            Timer1.Stop()

 

            Exit Sub

 

        End If

 

        'Controllo se c'è stato un rilancio; se si salvo la variabile

        If cRilancio = True Then

            'prova

            'cNGiocatoreRilancio = cNGiocatoreTurno

            cNGiocatoreRilancio = cNGiocatoreTurno

            cRilancioGlobale = True

        End If

 

        'Imposto quanto tempo ci mettera il prossimo avversario a pensare la mossa

        Dim Random As Random = New Random()

        Timer1.Interval = Random.Next(250, TempoMassimo)

 

        cNGiocatoreTurno = cNGiocatoreTurno + 1

 

        If SOLO_UN_GIOCATORE_IN_GIOCO() = 1 Then

            Dim a As Integer = 0

        End If

 

        'Controllo quando ho finito ilgiro

        If cFine_Turno = True Then

0:

            cFine_Turno = False

 

            If SOLO_UN_GIOCATORE_IN_GIOCO() = 0 Then CNumeroDiMano = 6

 

            Select Case CNumeroDiMano

                Case Is = 4

                    Timer1.Stop()

                    GESTISCI_RILANCIO()

                Case Is = 5

                    Timer1.Stop()

                    GESTISCI_RILANCIO()

                Case Is = 6

                    Timer1.Stop()

                    GESTISCI_RILANCIO()

            End Select

 

        End If

 

    End Sub

 

    'RITORNA IL NUMERO IN BASE ALLA SITUAZIONE DEL TAVOLO

    'O -> UN SOLO GIOCATORE SUL TAVOLO

    '1 -> NESSUN GIOCATORE SUL TAVOLO

    '2 -> PIù AVVERSARI

 

    Public Function SOLO_UN_GIOCATORE_IN_GIOCO() As Integer

 

        Dim NumeroAbbandoni As Integer = 0

 

        For i As Integer = 0 To cArreyGiocatori.Length - 1

            If cGiocatore(cArreyGiocatori(i)).RITORNA_STATO_GIOCATORE = (cLascio) Then

                NumeroAbbandoni = NumeroAbbandoni + 1

            End If

        Next

 

        If NumeroAbbandoni = cArreyGiocatori.Length - 1 Then

            Return 0

        Else

 

            If NumeroAbbandoni = cArreyGiocatori.Length Then

                Return 1

            Else

                Return 2

            End If

 

        End If

 

 

    End Function

 

    Public Sub MODIFICA_ARREY_POSIZIONE_GIOCATORI(ByVal FINE As Boolean)

 

        Dim ii As Integer = 0

        Dim Num As Integer

 

        If FINE = True Then

            Num = CONTA_NUMERO_GIOCATORI_IN_GIOCO_FINE_PARTITA()

        Else

            Num = CONTA_NUMERO_GIOCATORI_IN_GIOCO()

        End If

 

        Dim StatoGiocatore As String = ""

 

        cMazziere = cArreyGiocatori(0)

 

        cArreyGiocatori = New Integer(Num) {}

 

        For i As Integer = cMazziere To cNumeroGiocatoriGlobali

            StatoGiocatore = cGiocatore(i).RITORNA_STATO_GIOCATORE

            If StatoGiocatore = cGioco Or StatoGiocatore = cVedo Or StatoGiocatore = cAllIn Or StatoGiocatore = cProntoAGiocare Then

                cArreyGiocatori(ii) = i

                ii += +1

            End If

        Next

 

        For i As Integer = 0 To cMazziere - 1

            StatoGiocatore = cGiocatore(i).RITORNA_STATO_GIOCATORE

            If StatoGiocatore = cGioco Or StatoGiocatore = cVedo Or StatoGiocatore = cAllIn Or StatoGiocatore = cProntoAGiocare Then

                cArreyGiocatori(ii) = i

                ii += +1

            End If

        Next

 

 

    End Sub

 

    Public Sub GESTISCI_RILANCIO()

        TimerRilancio.Start()

    End Sub

 

    'Trovato errore

    'Sul tavolo

    'asso asso donna carta carta

    'in mano asso donna

 

    Public Sub FINE_PARTITA()

 

        'cGiocatore(0).cCarte = "KPQF3P6F8CDQ9Q"

        'cGiocatore(1).cCarte = "KPKFKQAFACDQ9Q"

        'cGiocatore(2).cCarte = "KPKFKQ5F5CDQ9Q"

        'cGiocatore(3).cCarte = "QP7F3P6F8CDQ9Q"

        'cGiocatore(3).IMPOSTA_STATO_GIOCATORE(cGioco)

        'cGiocatore(4).IMPOSTA_STATO_GIOCATORE(cLascio)

 

        'cGiocatore(5).cCarte = "AP7CAFAQ8CDQAQ"

        'cGiocatore(5).IMPOSTA_STATO_GIOCATORE(cAllIn)

        'cGiocatore(5).IMPOSTA_PUNTATA(3, (0))

 

        CONTROLLA_CARTE()

 

        cGiocatoreVincitoreAllIn = False

 

        Me.Refresh()

 

        REFRESH_SOLDI_PIATTO()

 

        GESTISCI_PIATTO_VINCITORE()

 

        'LBLDecisioneGiocatore.Text = "Vince " & cPiatto.RITORNA_VALORE_PIATTO & " fish il giocatore " & NGiocatoreVincitore

 

        STAMPA_RISULTATO_GIOCATORI()

 

        MODIFICA_STATO_GIOCATORE_FINE_PARTITA(False)

 

        MODIFICA_ARREY_POSIZIONE_GIOCATORI(True)

 

        RESETTA_VARIABILI_TIMER()

 

        'Era qui STAMPA_RISULTATO_GIOCATORI

 

        FAI_SCALARE_ARREY_GIOCATORI()

 

        IMPOSTAZIONI_NUOVA_MANO()

 

        cPiatto.RIAZZERA_PIATTO()

        REFRESH_SOLDI_PIATTO()

 

        CONTROLLA_SOLDI()

 

    End Sub

 

 

    Public Sub CONTROLLA_SOLDI()

 

        Dim Tot As Integer = 0

        For i As Integer = 0 To cNumeroGiocatoriGlobali

            Tot = cGiocatore(i).RITORNA_SOLDI_GIOCATORE + Tot

        Next

 

        TextBox3.Text = CStr(Tot)

 

        'Se non vengono vinti tutti i soldi il piatto del giro successivo si arricchisce

        Dim SoldiTeorici As Integer = (cNumeroGiocatoriGlobali + 1) * Soldi_Iniziali

        If Tot <> SoldiTeorici Then

            Dim SoldiMancati As Integer = SoldiTeorici - Tot

            cSoldiNonDati = SoldiMancati

            LBLDecisioneGiocatore.Text &= "Il piatto del prossimo giro parte da " & SoldiMancati & " fish"

        End If

 

    End Sub

 

    Public Sub GESTISCI_PIATTO_VINCITORE()

 

        Dim NGiocatoreVincitore As String = TROVA_N_VINCITORE(False)

        Dim NGiocatoreVincitore2 As String = TROVA_N_VINCITORE(True)

 

        Label1.Text = NGiocatoreVincitore

        Label1.Text &= vbCrLf & NGiocatoreVincitore2

 

        Dim NsoldiAll As Integer = 0

 

        'TEST

        Try

 

            Dim NGiocatoriVincitori As Integer = NGiocatoreVincitore.Length

            Dim Vincitori As Integer() = New Integer(NGiocatoriVincitori - 1) {}

 

            For i As Integer = 0 To NGiocatoriVincitori - 1

                Vincitori(i) = CInt(NGiocatoreVincitore.Substring(i, 1))

            Next

 

            Dim Soldi As Integer = cPiatto.RITORNA_VALORE_PIATTO

            Dim SoldiPiatto As Integer = Soldi

 

            'Un solo Giocatore vincitore

            If NGiocatoriVincitori = 1 Then

 

                'Giocatore vincente in all in modifico il numero dei soldi che vince

 

                'VINCE ALL - IN -----------------------------------------

                If cGiocatore(Vincitori(0)).RITORNA_STATO_GIOCATORE() = cAllIn Then

 

                    Soldi = RITORNA_SOLDI_VINCITORE_IN_ALL_IN(Vincitori(0))

 

                    cGiocatore(Vincitori(0)).VINCI_SOLDI(Soldi)

                    LBLDecisioneGiocatore.Text = "Vince " & Soldi & " fish il giocatore " & (Vincitori(0)) & " (all-in)" & vbCrLf

                    REFRESH_SOLDI_GIOCATORE((Vincitori(0)))

 

                    'Da fare

                    'Do il resto dei soldi al secondo/i arrivato

                    SoldiPiatto = SoldiPiatto - Soldi

 

                    Dim CasoA As Boolean = False

                    If NGiocatoreVincitore2.Length = 1 Then

 

                        If cGiocatore(CInt(NGiocatoreVincitore2)).RITORNA_STATO_GIOCATORE() = cAllIn Then

                            Soldi = RITORNA_SOLDI_VINCITORE_IN_ALL_IN(Vincitori(0))

                            If Soldi < SoldiPiatto Then

                                SoldiPiatto = Soldi

                                CasoA = True

                            End If

 

                        End If

 

                        cGiocatore(CInt(NGiocatoreVincitore2)).VINCI_SOLDI(SoldiPiatto)

                        LBLDecisioneGiocatore.Text &= "Vince 2 arrivato " & SoldiPiatto & " fish il giocatore " & (CInt(NGiocatoreVincitore2))

                        If CasoA = True Then

                            LBLDecisioneGiocatore.Text &= "(all-in)"

                        End If

                        LBLDecisioneGiocatore.Text &= vbCrLf

                        REFRESH_SOLDI_GIOCATORE(CInt(NGiocatoreVincitore2))

 

                    Else

 

                        NGiocatoriVincitori = NGiocatoreVincitore2.Length

                        Vincitori = New Integer(NGiocatoriVincitori - 1) {}

 

                        For i As Integer = 0 To NGiocatoriVincitori - 1

                            Vincitori(i) = CInt(NGiocatoreVincitore.Substring(i, 1))

                        Next

 

                        Soldi = CInt(SoldiPiatto / NGiocatoriVincitori)

 

                        For i As Integer = 0 To NGiocatoriVincitori

                            cGiocatore(Vincitori(i)).VINCI_SOLDI(Soldi)

                            LBLDecisioneGiocatore.Text &= "Vince " & Soldi & " fish il giocatore " & Vincitori(i) & vbCrLf

                            REFRESH_SOLDI_GIOCATORE(Vincitori(i))

                        Next

 

                    End If

 

                    '---------------------------------

                    'Dim TotalePuntateGiocacatoreAllIn As Integer = cGiocatore(Vincitori(0)).RITORNA_PUNTATE_COMPLESSIVE

                    'RIDAI_SOLDI_GIOCATORI_NON_IN_ALL_IN(TotalePuntateGiocacatoreAllIn, Vincitori(0))

                    '---------------------------------

 

                    cGiocatoreVincitoreAllIn = True

 

                    'Ha vinto un giocatore che non è in all in

                Else

                    LBLDecisioneGiocatore.Text = "Vince " & Soldi & " fish il giocatore " & (CInt(NGiocatoreVincitore)) & vbCrLf

                    cGiocatore(Vincitori(0)).VINCI_SOLDI(Soldi)

                    REFRESH_SOLDI_GIOCATORE(Vincitori(0))

                End If

 

                'FINE VINCE ALL - IN -----------------------------------------

 

 

 

                '2 O PIù VINCITORI

                'Divido il tutto per il numero di vincitori (anche quello in all in)

            Else

 

                LBLDecisioneGiocatore.Text = ""

 

                Soldi = CInt(Soldi / NGiocatoriVincitori)

 

                For i As Integer = 0 To NGiocatoriVincitori

                    cGiocatore(Vincitori(i)).VINCI_SOLDI(Soldi)

                    LBLDecisioneGiocatore.Text &= "Vince " & Soldi & " fish il giocatore " & Vincitori(i) & vbCrLf

                    REFRESH_SOLDI_GIOCATORE(Vincitori(i))

                Next

 

            End If

 

        Catch

 

        End Try

 

        'LBLDecisioneGiocatore.Text &= vbCrLf & NsoldiAll

 

    End Sub

 

 

 

    Public Sub GESTISCI_PIATTO_VINCITORE2()

 

        Dim NGiocatoreVincitore As String = TROVA_N_VINCITORE(False)

        Dim NGiocatoreVincitore2 As String = TROVA_N_VINCITORE(True)

 

        Label1.Text = NGiocatoreVincitore

        Label1.Text &= vbCrLf & NGiocatoreVincitore2

 

        Dim NsoldiAll As Integer = 0

 

        'TEST

        Try

 

            Dim NGiocatoriVincitori As Integer = NGiocatoreVincitore.Length

            Dim Vincitori As Integer() = New Integer(NGiocatoriVincitori - 1) {}

 

            For i As Integer = 0 To NGiocatoriVincitori - 1

                Vincitori(i) = CInt(NGiocatoreVincitore.Substring(i, 1))

            Next

 

            Dim Soldi As Integer = cPiatto.RITORNA_VALORE_PIATTO

            Dim SoldiPiatto As Integer = cPiatto.RITORNA_VALORE_PIATTO

 

            'Un solo Giocatore vincitore

            If NGiocatoriVincitori = 1 Then

 

                'Giocatore vincente in all in modifico il numero dei soldi che vince

 

                'VINCE ALL - IN -----------------------------------------

 

                If cGiocatore(Vincitori(0)).RITORNA_STATO_GIOCATORE() = cAllIn Then

 

                    Soldi = RITORNA_SOLDI_VINCITORE_IN_ALL_IN(Vincitori(0))

 

                    cGiocatore(Vincitori(0)).VINCI_SOLDI(Soldi)

                    LBLDecisioneGiocatore.Text = "Vince " & Soldi & " fish il giocatore " & (Vincitori(0)) & vbCrLf

                    REFRESH_SOLDI_GIOCATORE(Vincitori(Vincitori(0)))

 

 

                    'Da fare

                    'Do il resto dei soldi al secondo/i arrivato

                    SoldiPiatto = SoldiPiatto - Soldi

 

                    If NGiocatoreVincitore2.Length = 1 Then

 

                        cGiocatore(CInt(NGiocatoreVincitore2)).VINCI_SOLDI(Soldi)

                        LBLDecisioneGiocatore.Text &= "Vince " & Soldi & " fish il giocatore " & (CInt(NGiocatoreVincitore2)) & vbCrLf

                        REFRESH_SOLDI_GIOCATORE(Vincitori(CInt(NGiocatoreVincitore2)))

 

                    Else

 

                        NGiocatoriVincitori = NGiocatoreVincitore2.Length

                        Vincitori = New Integer(NGiocatoriVincitori - 1) {}

 

                        For i As Integer = 0 To NGiocatoriVincitori - 1

                            Vincitori(i) = CInt(NGiocatoreVincitore.Substring(i, 1))

                        Next

 

                        Soldi = CInt(SoldiPiatto / NGiocatoriVincitori)

 

                        For i As Integer = 0 To NGiocatoriVincitori

                            cGiocatore(Vincitori(i)).VINCI_SOLDI(Soldi)

                            LBLDecisioneGiocatore.Text &= "Vince " & Soldi & " fish il giocatore " & Vincitori(i) & vbCrLf

                            REFRESH_SOLDI_GIOCATORE(Vincitori(i))

                        Next

 

                    End If

 

                    '---------------------------------

                    'Dim TotalePuntateGiocacatoreAllIn As Integer = cGiocatore(Vincitori(0)).RITORNA_PUNTATE_COMPLESSIVE

                    'RIDAI_SOLDI_GIOCATORI_NON_IN_ALL_IN(TotalePuntateGiocacatoreAllIn, Vincitori(0))

                    '---------------------------------

 

                    cGiocatoreVincitoreAllIn = True

 

                End If

 

                'FINE VINCE ALL - IN -----------------------------------------

 

 

                LBLDecisioneGiocatore.Text = "Vince " & Soldi & " fish il giocatore " & (CInt(NGiocatoreVincitore)) & vbCrLf

                cGiocatore(Vincitori(0)).VINCI_SOLDI(Soldi)

                REFRESH_SOLDI_GIOCATORE(Vincitori(0))

 

                'Se vince il giocatore in all in lascio le scritte con l'importo delle cifre ridate

                'If cGiocatoreVincitoreAllIn = True Then

                'LBLDecisioneGiocatore.Text &= "Vince " & Soldi & " fish il giocatore " & NGiocatoreVincitore

                'Else

                'LBLDecisioneGiocatore.Text = "Vince " & Soldi & " fish il giocatore " & NGiocatoreVincitore

                'End If

 

 

                '2 O PIù VINCITORI

                'Divido il tutto per il numero di vincitori (anche quello in all in)

            Else

 

                LBLDecisioneGiocatore.Text = ""

 

                Soldi = CInt(Soldi / NGiocatoriVincitori)

 

                For i As Integer = 0 To NGiocatoriVincitori

                    cGiocatore(Vincitori(i)).VINCI_SOLDI(Soldi)

                    LBLDecisioneGiocatore.Text &= "Vince " & Soldi & " fish il giocatore " & Vincitori(i) & vbCrLf

                    REFRESH_SOLDI_GIOCATORE(Vincitori(i))

                Next

 

            End If

 

        Catch

 

        End Try

 

        'LBLDecisioneGiocatore.Text &= vbCrLf & NsoldiAll

 

    End Sub

 

 

 

    Public Sub RIDAI_SOLDI_GIOCATORI_NON_IN_ALL_IN(ByVal Soldi_giocati_da_all_in_vincitore As Integer, ByVal nGIOCATOREALLIN As Integer)

 

        LBLDecisioneGiocatore.Text = ""

 

        For I As Integer = 0 To cArreyGiocatori.Length - 1

 

            Dim NGiocatore As Integer = cArreyGiocatori(I)

 

            If NGiocatore = nGIOCATOREALLIN Then

                'Salto quando è il turno del vincitore

            Else

                Dim PuntataGiocatore As Integer = cGiocatore(NGiocatore).RITORNA_PUNTATE_COMPLESSIVE

 

                If Soldi_giocati_da_all_in_vincitore < PuntataGiocatore Then

                    Dim SoldiDaRidare As Integer = PuntataGiocatore - Soldi_giocati_da_all_in_vincitore

                    cGiocatore(NGiocatore).VINCI_SOLDI(SoldiDaRidare)

                    REFRESH_SOLDI_PIATTO()

                    REFRESH_SOLDI_GIOCATORE(NGiocatore)

                    LBLDecisioneGiocatore.Text &= "Vengono Ridati " & SoldiDaRidare & " al giocatore " & NGiocatore & vbCrLf

                End If

 

            End If

 

        Next

 

    End Sub

 

 

    Public Sub STAMPA_RISULTATO_GIOCATORI()

 

        For I As Integer = 0 To cArreyGiocatori.Length - 1

 

            Dim ii As Integer = cArreyGiocatori(I)

 

            Dim Stato As String = cGiocatore(ii).RITORNA_STATO_GIOCATORE

 

            If Stato <> cGameOver Then

 

                Dim Mano As String = RITORNA_NOME_CARTE(cGiocatore(ii).RITORNA_CARTE_GIOCATORE)

 

                'Se il giocatore nn ha lasciato gli faccio girare le carte

                If Stato = cLascio Then

                Else

                    VISUALIZZA_CARTA_GIOCATORE(cGiocatore(ii).RITORNA_CARTE_GIOCATORE, ii)

                    Mano = RITORNA_NOME_COMPLETO_DA_SIGLA(Mano)

                    CType(Me.Controls.Item("Giocatore" & ii), Label).Text = Mano

                End If

 

                'PROVA, SPOSTO QUESTO QUI --------------------------

                'Mano = RITORNA_NOME_COMPLETO_DA_SIGLA(Mano)

                'CType(Me.Controls.Item("Giocatore" & ii), Label).Text = Mano

                '----------------------------------

 

            End If

 

        Next

    End Sub

 

    Public Sub FAI_SCALARE_ARREY_GIOCATORI()

 

        Dim ARREY_NUOVO() As Integer = New Integer(cArreyGiocatori.Length - 1) {}

 

        ' In Errore un unico Vincitore

        Try

            ARREY_NUOVO(0) = cArreyGiocatori(1)

            For I As Integer = 1 To cArreyGiocatori.Length - 2

                ARREY_NUOVO(I) = cArreyGiocatori(I + 1)

            Next

            ARREY_NUOVO(cArreyGiocatori.Length - 1) = cArreyGiocatori(0)

 

            cArreyGiocatori = ARREY_NUOVO

        Catch ex As Exception

            LBLDecisioneGiocatore.Text = "Il giocatore " & cArreyGiocatori(0) & " lascia in mutande gli avversari"

        End Try

 

 

    End Sub

 

    Public Sub VISUALIZZA_CARTA_GIOCATORE(ByVal carta As String, ByVal i As Integer)

 

        'Carico Immagine Carta Giocatori

        Dim Parte1 As String = carta.Substring(0, 1)

        Dim Parte2 As String = carta.Substring(1, 1)

        Dim Immagine As Image = CType(Me.Controls.Item(CStr("PIC" & Parte1 & Parte2)), PictureBox).Image

        CType(Me.Controls.Item(CStr("Carta" & i & "G" & 1)), PictureBox).Image = Immagine

 

 

        Parte1 = carta.Substring(2, 1)

        Parte2 = carta.Substring(3, 1)

        Immagine = CType(Me.Controls.Item(CStr("PIC" & Parte1 & Parte2)), PictureBox).Image

        CType(Me.Controls.Item(CStr("Carta" & i & "G" & 2)), PictureBox).Image = Immagine

 

    End Sub

 

 

    Public Sub GESTISCI_PULSANTI_GIOCATORE(ByVal PulsanteGioca As String)

 

        cFine_TurnoUMANO = False

        cNGiocatoreTurno = cNGiocatoreTurno + 1

 

        If cTurnoRilancio = False Then

            'PUNTATA TIMER CARTA NORMALE

 

            Select Case PulsanteGioca

 

                Case Is = cGioco

 

                    If CNumeroDiMano = 3 Then

 

                        GESTISCI_DECISIONE_GIOCATORE(0, cGioco, cPiccoloBuio)

 

                        If cFine_Turno = True Then cFine_TurnoUMANO = True

                        Timer.Start()

 

                        'If cFine_Turno = True Then PASSA_A_PRIMA_CARTA()

                        'cFine_Turno = False

 

                        Exit Sub

 

                    End If

 

                    Dim PuntataGiocatore As Integer

 

                    Try

                        PuntataGiocatore = CInt(TXTPuntata.Text)

                    Catch ex As Exception

                        PuntataGiocatore = 0

                    End Try

 

                    'PrimaMano

                    If CNumeroDiMano = 4 Or CNumeroDiMano = 5 Or CNumeroDiMano = 6 Then

 

                        GESTISCI_DECISIONE_GIOCATORE(0, cGioco, PuntataGiocatore)

 

                        If PuntataGiocatore <= cPuntata Then

                        Else

                            cRilancio = True

                            cPuntata = PuntataGiocatore

                            cRilancioGlobale = True

 

                            '-------------------------------------------

                            'Prova rilancio

                            'Controllo se c'è stato un rilancio; se si salvo la variabile

                            If cRilancio = True Then

                                cNGiocatoreRilancio = cNGiocatoreTurno - 1

                                cRilancioGlobale = True

                            End If

                            '-------------------------------------------

 

                        End If

 

                        Timer1.Start()

 

                        If cFine_Turno = True Then cFine_TurnoUMANO = True

                        cFine_Turno = False

 

                    End If

 

                Case Is = cLascio

 

                    IMPOSTAZIONI_GIOCO_ABBANDONATO()

 

                    If CNumeroDiMano = 3 Then

                        GESTISCI_DECISIONE_GIOCATORE(0, cLascio, cPiccoloBuio)

                        Timer.Start()

                        If cFine_Turno = True Then PASSA_A_PRIMA_CARTA()

                        cFine_Turno = False

                    Else

                        GESTISCI_DECISIONE_GIOCATORE(0, cLascio, cPiccoloBuio)

                        Timer1.Start()

 

                        If cFine_Turno = True Then

                            If CNumeroDiMano <> 6 Then

                                GIRA_CARTA_SINGOLA()

                            Else

                                cFine_TurnoUMANO = True

                            End If

                        End If

                        cFine_Turno = False

                    End If

 

                Case Is = cVedo

 

                    cPuntata = 0

 

                    GESTISCI_DECISIONE_GIOCATORE(0, cVedo, 0)

                    If cFine_Turno = True Then

                        If CNumeroDiMano <> 6 Then

                            GIRA_CARTA_SINGOLA()

                        Else

                            cFine_TurnoUMANO = True

                        End If

                    End If

                    Timer1.Start()

                    cFine_Turno = False

            End Select

 

            'MODALITà RILANCIO

 

        Else

 

            Select Case PulsanteGioca

 

                Case Is = cGioco

 

                    cGiocatore(0).SCALA_SOLDI(CDifferenzaDaAggiungereNelPiatto)

                    cPiatto.AGGIUNGI_SOLDI(CDifferenzaDaAggiungereNelPiatto)

                    REFRESH_SOLDI_PIATTO()

 

                    CType(Me.Controls.Item("Giocatore" & 0), Label).Text = "Vengo a vedere:" & CDifferenzaDaAggiungereNelPiatto & " fish."

                    REFRESH_SOLDI_GIOCATORE(0)

                    TimerRilancio.Start()

 

                Case Is = cLascio

 

                    CType(Me.Controls.Item("Giocatore" & 0), Label).Text = cLascio

                    cGiocatore(0).IMPOSTA_STATO_GIOCATORE(cLascio)

                    TimerRilancio.Start()

            End Select

 

 

        End If

 

        'è ridondante, si potrebbe togliere

        IMPOSTAZIONI_TEMPORIZZAZIONE_TURNO_PC(True)

 

    End Sub

 

    Private Sub CMDGioco_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDGioco.Click

        IMPOSTAZIONI_TEMPORIZZAZIONE_TURNO_PC(False)

        GESTISCI_PULSANTI_GIOCATORE(cGioco)

    End Sub

 

    Private Sub CMDLascia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDLascia.Click

        IMPOSTAZIONI_TEMPORIZZAZIONE_TURNO_PC(False)

        GESTISCI_PULSANTI_GIOCATORE(cLascio)

    End Sub

 

    Private Sub CmdVedo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdVedo.Click

        cPuntata = 0

        IMPOSTAZIONI_TEMPORIZZAZIONE_TURNO_PC(False)

        GESTISCI_PULSANTI_GIOCATORE(cVedo)

    End Sub

 

 

    Private Sub RILANCIO(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerRilancio.Tick

 

        cTurnoRilancio = True

 

        Dim Giocatore As Integer = (cArreyGiocatori(ciRilancio))

 

        If cGiocatore(Giocatore).RITORNA_STATO_GIOCATORE = cGioco Or cGiocatore(Giocatore).RITORNA_STATO_GIOCATORE = cVedo Then

 

            Dim PuntataGiocatore As Integer = cGiocatore(Giocatore).RITORNA_PUNTATA_GIOCATORE_SPECIFICA(CNumeroDiMano - 3)

            Dim DifferenzaDaAggiungereNelPiatto As Integer = cPuntata - PuntataGiocatore

 

            If DifferenzaDaAggiungereNelPiatto < 0 Then

                Dim Errore As String = ""

            End If

 

            Dim SoldiDisponibili As Integer = cGiocatore(Giocatore).RITORNA_SOLDI_GIOCATORE

 

            If Giocatore = 0 Then

 

                CDifferenzaDaAggiungereNelPiatto = DifferenzaDaAggiungereNelPiatto

 

                'Imposto per l'umano la possibilità di scegliere cosa fare

                LBLDecisioneGiocatore.Text = "è il tuo turno" & vbCrLf & "decidi se andare a vedere ... "

 

                IMPOSTAZIONI_TURNO_GIOCATORE(False)

 

                'ciRilancio = ciRilancio + 1

 

                TimerRilancio.Stop()

 

                GoTo CONTROLLOFINALE

 

            End If

 

            If DifferenzaDaAggiungereNelPiatto > cGiocatore(Giocatore).cRilancioMassimo Then

                'Lascio la partita

                CType(Me.Controls.Item("Giocatore" & Giocatore), Label).Text = cLascio

                cGiocatore(Giocatore).IMPOSTA_STATO_GIOCATORE(cLascio)

                CType(Me.Controls.Item(CStr("Carta" & Giocatore & "G" & 1)), PictureBox).Image = PICRetroA.Image

                CType(Me.Controls.Item(CStr("Carta" & Giocatore & "G" & 2)), PictureBox).Image = PICRetroA.Image

            Else

 

                If SoldiDisponibili >= DifferenzaDaAggiungereNelPiatto Then

 

                

                    cGiocatore(Giocatore).SCALA_SOLDI(DifferenzaDaAggiungereNelPiatto)

                    cPiatto.AGGIUNGI_SOLDI(DifferenzaDaAggiungereNelPiatto)

                    REFRESH_SOLDI_PIATTO()

 

                    CType(Me.Controls.Item("Giocatore" & Giocatore), Label).Text = "Vengo a vedere:" & DifferenzaDaAggiungereNelPiatto & " fish."

                    REFRESH_SOLDI_GIOCATORE(Giocatore)

 

                    Dim PuntataGiocatoreGiro As Integer = cGiocatore(Giocatore).RITORNA_PUNTATA(CNumeroDiMano - 3)

                    cGiocatore(Giocatore).IMPOSTA_PUNTATA(CNumeroDiMano - 3, PuntataGiocatoreGiro + DifferenzaDaAggiungereNelPiatto)

 

                    'Giocatore in all-in

                Else

 

                    cGiocatore(Giocatore).SCALA_SOLDI(SoldiDisponibili)

                    cGiocatore(Giocatore).IMPOSTA_STATO_GIOCATORE(cAllIn)

                    cPiatto.AGGIUNGI_SOLDI(SoldiDisponibili)

 

                    REFRESH_SOLDI_PIATTO()

 

                    Dim PuntataGiocatoreGiro As Integer = cGiocatore(Giocatore).RITORNA_PUNTATA(CNumeroDiMano - 3)

                    cGiocatore(Giocatore).IMPOSTA_PUNTATA_GIOCATORE(PuntataGiocatoreGiro + DifferenzaDaAggiungereNelPiatto)

 

                    CType(Me.Controls.Item("Giocatore" & Giocatore), Label).Text = "Vengo a vedere:" & SoldiDisponibili & " fish."

                    REFRESH_SOLDI_GIOCATORE(Giocatore)

 

                End If

 

            End If

 

        End If

 

 

        'Imposto quanto tempo ci mettera il prossimo avversario a pensare la mossa

        Dim Random As Random = New Random()

        TimerRilancio.Interval = Random.Next(250, TempoMassimo)

 

 

CONTROLLOFINALE:

 

        If (cRilancioGlobale = False) Or (ciRilancio = cNGiocatoreRilancio) Then

 

            TimerRilancio.Stop()

 

            Select Case CNumeroDiMano

                Case Is = 4

                    GIRA_CARTA_SINGOLA()

                Case Is = 5

                    GIRA_CARTA_SINGOLA()

                Case Is = 6

                    FINE_PARTITA()

            End Select

 

            Exit Sub

 

        End If

 

        ciRilancio = ciRilancio + 1

 

    End Sub

 

    Private Sub MODIFICA_STATO_GIOCATORE_FINE_PARTITA(ByVal AncheGraficamente As Boolean)

 

        For I As Integer = 0 To cNumeroGiocatoriGlobali

 

            If cGiocatore(I).RITORNA_SOLDI_GIOCATORE = 0 Then

 

                cGiocatore(I).IMPOSTA_STATO_GIOCATORE(cGameOver)

 

                If AncheGraficamente = True Then

                    CType(Me.Controls.Item(CStr("Carta" & I & "G" & 1)), PictureBox).Image = PICRetroA.Image

                    CType(Me.Controls.Item(CStr("Carta" & I & "G" & 2)), PictureBox).Image = PICRetroA.Image

                End If

 

            Else

                cGiocatore(I).IMPOSTA_STATO_GIOCATORE(cProntoAGiocare)

 

                If AncheGraficamente = True Then

                    CType(Me.Controls.Item(CStr("Carta" & I & "G" & 1)), PictureBox).Image = Nothing

                    CType(Me.Controls.Item(CStr("Carta" & I & "G" & 2)), PictureBox).Image = Nothing

                End If

 

            End If

        Next

 

    End Sub

 

    Private Sub CMDAumentaPuntata_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDAumentaPuntata.Click

 

        TXTPuntata.Text = CStr(CDbl(TXTPuntata.Text) + 1)

        CMDDiminuisciPuntata.Enabled = True

        CMDAumentaPuntata.Enabled = True

 

        If CDbl(TXTPuntata.Text) = cGiocatore(0).RITORNA_SOLDI_GIOCATORE Then

            CMDAumentaPuntata.Enabled = False

        Else

            CMDAumentaPuntata.Enabled = True

        End If

 

 

    End Sub

 

    Private Sub CMDDiminuisciPuntata_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDDiminuisciPuntata.Click

 

        If CDbl(TXTPuntata.Text) = cPuntata Then

            CMDDiminuisciPuntata.Enabled = False

            CMDAumentaPuntata.Enabled = True

        Else

            TXTPuntata.Text = CStr(CDbl(TXTPuntata.Text) - 1)

            CMDAumentaPuntata.Enabled = True

        End If

 

        If CDbl(TXTPuntata.Text) = cPuntata Then

            CMDDiminuisciPuntata.Enabled = False

            CMDAumentaPuntata.Enabled = True

        End If

 

    End Sub

 

    ' DA MODIFICARE ERRORI

 

    Public Function RITORNA_SOLDI_VINCITORE_IN_ALL_IN(ByVal Giocatore_Vincente As Integer) As Integer

 

        Dim TotaleAllIn As Integer = 0

 

        'Numero Di mano

        For ii As Integer = 0 To 3

 

            Dim Fine As Boolean = False

 

            'Faccio scorrere i giocatori

            For i As Integer = 0 To CNumeroGiocatori

 

                Dim PuntataGiocatore As Integer = cGiocatore(i).RITORNA_PUNTATA_GIOCATORE_SPECIFICA(ii)

                Dim PuntataGiocatoreVincente As Integer = cGiocatore(Giocatore_Vincente).RITORNA_PUNTATA_GIOCATORE_SPECIFICA(ii)

 

                TotaleAllIn += +PuntataGiocatore

             

                If PuntataGiocatoreVincente < PuntataGiocatore Then Fine = True

 

            Next

 

            If Fine = True Then

                Return TotaleAllIn

            End If

 

        Next

 

        Return TotaleAllIn

 

    End Function

 

    Public Sub New()

 

        ' This call is required by the Windows Form Designer.

        InitializeComponent()

 

        ' Add any initialization after the InitializeComponent() call.

 

    End Sub

 

    Private Sub CMDNGiocatori1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDNGiocatori1.Click

        SCEGLI_QUANTI_GIOCATORI(1)

    End Sub

 

    Public Sub SCEGLI_QUANTI_GIOCATORI(ByVal NGiocatori As Integer)

        CNumeroGiocatori = NGiocatori

        cNumeroGiocatoriGlobali = NGiocatori

        cArreyGiocatori = New Integer(NGiocatori) {}

        PANSfondo.Visible = False

        INIZIO_PARTITA()

        IMPOSTAZIONI_NUOVA_MANO()

    End Sub

 

    Private Sub CMDNGiocatori2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDNGiocatori2.Click

        SCEGLI_QUANTI_GIOCATORI(2)

    End Sub

 

    Private Sub CMDNGiocatori3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDNGiocatori3.Click

        SCEGLI_QUANTI_GIOCATORI(3)

    End Sub

 

    Private Sub CMDNGiocatori4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDNGiocatori4.Click

        SCEGLI_QUANTI_GIOCATORI(4)

    End Sub

 

    Private Sub CMDNGiocatori5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMDNGiocatori5.Click

        SCEGLI_QUANTI_GIOCATORI(5)

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        SCEGLI_QUANTI_GIOCATORI(6)

    End Sub

 

    Private Sub LBLCrediti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LBLCrediti.Click

 

        If LBLCrediti2.Visible = True Then

            LBLCrediti2.Visible = False

            Exit Sub

        End If

 

        If LBLCrediti2.Visible = False Then

            LBLCrediti2.Visible = True

            Exit Sub

        End If

 

    End Sub

End Class

 

Public Class ClassePIATTO

 

    Dim cSoldi As Integer = 0

 

    Public Sub AGGIUNGI_SOLDI(ByVal Soldi_da_Aggiungere As Integer)

        cSoldi = cSoldi + Soldi_da_Aggiungere

    End Sub

 

    Public Function RITORNA_VALORE_PIATTO() As Integer

        Return cSoldi

    End Function

 

    Public Sub RIAZZERA_PIATTO()

        cSoldi = 0

    End Sub

End Class

 

Public Class ClasseGIOCATORE

 

   

    Dim cSoldi As Integer

    Dim cStato As String = ""

    Public cCarte As String = ""

    Dim cStringaCarteGiocatore As String = ""

    Dim cPuntata As Integer = 0

    Dim cArreyPuntate As Integer() = New Integer(3) {}

 

    Public cCoraggio As Integer = 0

    Public cRilancioMassimo As Integer = 0

 

    Public Function RITORNA_PUNTATA_GIOCATORE_SPECIFICA(ByVal NumeroDiMano As Integer) As Integer

        Return cArreyPuntate(NumeroDiMano)

    End Function

 

    Public Sub IMPOSTA_PUNTATA(ByVal Giro As Integer, ByVal Puntata As Integer)

        cArreyPuntate(Giro) = Puntata

    End Sub

 

    Public Function RITORNA_PUNTATA(ByVal Giro As Integer) As Integer

        Return cArreyPuntate(Giro)

    End Function

 

    Public Sub IMPOSTA_STRINGA_CARTE_GIOCATORE(ByVal CARTE_GIOCATORE As String)

        cStringaCarteGiocatore = CARTE_GIOCATORE

    End Sub

 

    Public Function RITORNA_STRINGA_CARTE_GIOCATORE() As String

        Return cStringaCarteGiocatore

    End Function

 

    Public Sub SCALA_SOLDI(ByVal Soldi_da_Scalare As Integer)

        cSoldi = cSoldi - Soldi_da_Scalare

    End Sub

 

    Public Sub VINCI_SOLDI(ByVal Soldi_Vinti As Integer)

        cSoldi = cSoldi + Soldi_Vinti

    End Sub

    Public Sub New(ByVal ValoreInizialeSoldi As Integer)

        cSoldi = ValoreInizialeSoldi

    End Sub

 

    Public Sub IMPOSTA_SOLDI_INIZIALI(ByVal ValoreInizialeSoldi As Integer)

        cSoldi = ValoreInizialeSoldi

    End Sub

 

    Public Sub RIAZZERA_CARTE()

        cCarte = ""

    End Sub

 

    Public Function RITORNA_SOLDI_GIOCATORE() As Integer

        Return cSoldi

    End Function

 

    Public Function RITORNA_STATO_GIOCATORE() As String

        Return cStato

    End Function

 

    Public Sub IMPOSTA_STATO_GIOCATORE(ByVal StatoGiocatore As String)

        cStato = StatoGiocatore

    End Sub

 

    Public Sub AGGIUNGI_CARTA(ByVal Carta As String)

        cCarte = cCarte & Carta

    End Sub

 

    Public Function RITORNA_CARTE_GIOCATORE() As String

        Return cCarte

    End Function

 

    Public Sub IMPOSTA_PUNTATA_GIOCATORE(ByVal Puntata As Integer)

        cPuntata = Puntata

    End Sub

 

    Public Function RITORNA_PUNTATA_GIOCATORE() As Integer

        Return cPuntata

    End Function

 

    Public Function RITORNA_PUNTATE_COMPLESSIVE() As Integer

        Return cArreyPuntate(0) + cArreyPuntate(1) + cArreyPuntate(2) + cArreyPuntate(3)

    End Function

 

End Class

 

Public Class Mazzo

 

    'Carte = New String(51) {"1Q", "2Q", "3Q", "4Q", "5Q", "6Q", "7Q", "8Q", "9Q", "DQ", "JQ", "QQ", "KQ", "1C", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "DC", "JC", "QC", "KC", "1F", "2F", "3F", "4F", "5F", "6F", "7F", "8F", "9F", "DF", "JF", "QF", "KF", "1P", "2P", "3P", "4P", "5P", "6P", "7P", "8P", "9P", "DP", "JP", "QP", "KP"}

    'Carte = New String(51) {"1C", "1Q", "1F", "1P", "2C", "2Q", "2F", "2P", "3C", "3Q", "3F", "3P", "3C", "4Q", "4F", "4P", "4C", "5Q", "5F", "5P", "6C", "6Q", "6F", "6P", "7C", "7Q", "7F", "7P", "8C", "8Q", "8F", "8P", "9C", "9Q", "9F", "9P", "DC", "DQ", "DF", "JP", "JC", "JQ", "JF", "JP", "QC", "QQ", "QF", "QP", "KC", "KQ", "KF", "KP"}

 

    Public Carte As String() = New String(51) {"1Q", "2Q", "3Q", "4Q", "5Q", "6Q", "7Q", "8Q", "9Q", "DQ", "JQ", "QQ", "KQ", "1C", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "DC", "JC", "QC", "KC", "1F", "2F", "3F", "4F", "5F", "6F", "7F", "8F", "9F", "DF", "JF", "QF", "KF", "1P", "2P", "3P", "4P", "5P", "6P", "7P", "8P", "9P", "DP", "JP", "QP", "KP"}

    Public CarteMescolate As String() = New String(51) {}

    Public NDiCarta As Integer = -1

 

    Public Sub New()

 

        MESCOLA_MAZZO()

        Carte = New String(51) {"8Q", "JQ", "KC", "DF", "AQ", "8F", "DQ", "7P", "6Q", "3C", "QF", "8C", "6F", "8P", "9Q", "4F", "QQ", "QC", "2F", "9P", "3F", "5F", "7C", "DC", "3Q", "KQ", "2C", "6C", "5P", "KF", "7F", "4P", "KP", "4Q", "JC", "5C", "AF", "JF", "3P", "9C", "6P", "JP", "4C", "2P", "9F", "5Q", "QP", "DP", "2Q", "7Q", "AC", "AP"}

 

    End Sub

 

    Public Sub RIPRISTINA_MAZZO()

 

        Carte = New String(51) {"8Q", "JQ", "KC", "DF", "AQ", "8F", "DQ", "7P", "6Q", "3C", "QF", "8C", "6F", "8P", "9Q", "4F", "QQ", "QC", "2F", "9P", "3F", "5F", "7C", "DC", "3Q", "KQ", "2C", "6C", "5P", "KF", "7F", "4P", "KP", "4Q", "JC", "5C", "AF", "JF", "3P", "9C", "6P", "JP", "4C", "2P", "9F", "5Q", "QP", "DP", "2Q", "7Q", "AC", "AP"}

        NDiCarta = -1

 

    End Sub

 

    Public Sub MESCOLA_MAZZO()

 

        RIPRISTINA_MAZZO()

        Dim NRandom As Random = New Random

 

        For i As Integer = 0 To 51

            Dim NumeroEstratto As Integer = NRandom.Next(0, (52 - i) - 1)

            CarteMescolate(i) = Carte(NumeroEstratto)

            Carte(NumeroEstratto) = Carte(51 - i)

        Next

 

    End Sub

 

    Public Function DAI_CARTA() As String

        NDiCarta = NDiCarta + 1

        Return CarteMescolate(NDiCarta)

    End Function

 

 

End Class