Risultati da 1 a 7 di 7

Discussione: Sempre il mio gioco della Dama Rielaborata



  1. #1
    L'avatar di A.Maurizio
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Torino
    Età
    56
    Messaggi
    383
    Versione Office
    2013
    Likes ricevuti
    44
    Likes dati
    0

    Sempre il mio gioco della Dama Rielaborata

    Ciao a Tutti , sono Maurizio : Dunque il mio problema e questo : Su di un foglio di Excel con Microsoft Office 2007; Stò tentando di ricreare il gioco della Dama All'italiana .
    ora Sostanzialmente il mio progetto funziona cosi e cosi , però incomincia a dare i suoi buoni Frutti , Tranne che per un Fatto : Non ho ancora capito il perchè sè Muovo le pedine Nere , Esse si muovono Liberamente e mangiano l'avversario.

    Mentre sè tento di muovere le pedine bianche , esse Spariscono .
    Voi gentilmente non riuscireste ad Apportarmi le modifiche del Caso in modo che io possa comprendere dove stò Sbagliando.

    Vi invio il mio nuovo progetto di Base; Nel frattempo vi porgo i miei più sinceri saluti a Tutti e vi Auguro un buon fine Settimana da A.Maurizio

  2. #2
    L'avatar di Ciurmy
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Vigodarzere
    Età
    44
    Messaggi
    7
    Versione Office
    Excel 2013
    Likes ricevuti
    1
    Ciao Maurizio,

    interessante il gioco che hai fatto.
    Ho aperto il file e cliccato "Inizio Gioco", ma ci alcuni errori, che prima di tutto dovresti eliminare.
    In particolare nelle righe del foglio "Dama"
    c'è l'evento Worksheet_SelectionChange(ByVal Target As Range) che viene scatenato.
    Le righe seguenti creano un errore:

    ElseIf (Not IsEMPTY(Priga) And Not IsEMPTY(Pcolo)) Then
    If (Cells(Priga, Pcolo).Locked = False) Then Cells(Priga, Pcolo).Font.Color = -65536
    End If

    per il fatto che le variabili Priga, Pcolo sono vuote. Io partirei con la gestione di questo errore, in modo da poter proseguire con il codice.
    Ti consiglio di permettere all'evento suddetto si scatenarsi solo su un certo range di celle (la scacchiera) e non tutto il foglio.

    Buona giornata

  3. #3
    L'avatar di A.Maurizio
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Torino
    Età
    56
    Messaggi
    383
    Versione Office
    2013
    Likes ricevuti
    44
    Likes dati
    0
    Ciao Ciurmy inizialmente ti ringrazio per i tuoi Complimenti ; poi passo con lo spiegare il perchè ho inserito quella riga di codice che mi hai citato tu.
    Come havrai capito anche tu : quella riga non fà altro che Cambiare il colore di base della pedina Selezionata , che a sua volta lo riporta al Colore Originale una volta spostata; ho portata a Destinazione.
    Per il Resto : Non Riuscireti tu ha fare in modo che si possa risolvere per entrambi gli scierameti tali Mosse.
    In quanto la mangiata c'è già nel suo Insieme ; Dovrei solo più risolvere la condizione dell'arrivo a dama con il cambio di Immagine e il proseguimento del gioco stesso, Ma questo forse ho già anche capito come fare.
    Però e proprio la mossa della pedina Bianca , che attualmente mi fa tribilare.
    Grazie per Tutto L'aiuto che riuscirai a darmi in merito Ciao e Buon Fine Settimana a tutti.

  4. #4
    L'avatar di Ciurmy
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Vigodarzere
    Età
    44
    Messaggi
    7
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Smile

    Ciao Maurizio,

    io nella programmazione, sono come gli Alpini, faccio un passo dietro l’altro :-)
    Togliamo prima gli errori che ci sono nel codice e poi passiamo a strutturare le logiche.

    Nel Foglio1 “Dama”, io il codice lo cambierei così introducendo una funzione che verifica la posizione del click dell’utente se è o meno dentro la scacchiera.
    Poi dovresti gestire meglio la verifica sulle variabili Priga e Pcolo.
    Non usare isEmpty, è poco robusto.
    Invece di scrivere:
    Not IsEMPTY(Priga) And Not IsEMPTY(Pcolo))
    Scrivi:
    chek_pos_pedina = Priga <> "" And Pcolo <> ""
    e usa questa variabile nei ElseIf, vedi codice sotto

    Ultimo consiglio (perdona se sono pedante), non usare Option Explicit in fase di prototipazione, rallenta solo la programmazione.


    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Const col_start = 3
    Const col_end = 12
    Const row_start = 4
    Const row_end = 13

    Dim esito As Boolean
    esito = verifica_posizione_cella(col_start, col_end, row_start, row_end)
    If esito = False Then Exit Sub

    Dim chek_pos_pedina As Boolean
    chek_pos_pedina = Priga <> "" And Pcolo <> ""

    On Error Resume Next
    'Protegge il Foglio con Codice Interno
    '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ' Sheets(1).Protect Password:="Dama", _
    ' UserInterFaceOnly:=False
    '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    'Range("D5:K12").Activate

    Riga = Selection.Row
    Colo = Selection.Column
    If (FLAG And Selection.Borders.LineStyle = xlContinuous) Then
    If (Cells(Riga, Colo) = "") Then
    If ((Abs(Priga - Riga) = 1 And (Pcolo - Colo = -1)) Or ((Abs(Pcolo - Colo) = 1 And (Priga - Riga = -1)))) Then
    Cells(Riga, Colo) = Cells(Priga, Pcolo)
    Cells(Priga, Pcolo) = ""
    If (Abs(Priga - Riga) = 1) Then
    If ((Priga - Riga) > 0) Then
    Cells(Priga - 1, Colo) = ""
    Else
    Cells(Riga - 1, Colo) = ""
    End If
    Else
    If ((Pcolo - Colo) > 0) Then
    Cells(Riga, Pcolo - 1) = ""
    Else
    Cells(Riga, Colo - 1) = ""
    End If
    End If
    End If

    ElseIf (chek_pos_pedina) Then
    Cells(Priga, Pcolo).Font.Color = -65536
    End If

    ElseIf (chek_pos_pedina) Then
    If (Cells(Priga, Pcolo).Locked = False) Then Cells(Priga, Pcolo).Font.Color = -65536
    End If
    FLAG = False

    If ((Riga <> 1 Or Colo <> 1) And Cells(Riga, Colo) <> "") Then
    Selection.Font.Color = -16776961
    FLAG = True
    Priga = Riga
    Pcolo = Colo
    ElseIf (chek_pos_pedina) Then
    Cells(Priga, Pcolo).Font.Color = -65536
    End If

    Mosse = Mosse + 1
    If Mosse = 1 Then
    Range("A15").Value = Str$(Mosse) + " mossa"
    Else
    Range("N15").Value = Str$(Mosse) + " mosse"
    End If
    End Sub

  5. #5
    L'avatar di A.Maurizio
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Torino
    Età
    56
    Messaggi
    383
    Versione Office
    2013
    Likes ricevuti
    44
    Likes dati
    0
    Ciao Ciurmy ; Aora Principalmente ti Ringrazio per il Tuo Contributo , ne volermi aiutare in questo mio progetto a qui ci tengo molto , in quanto sono anni che tento di riuscire a risolvere il tutto.
    In più un ulteriore grazie , in quanto sei uno dei pochi che habbia per lo meno speso due parole ho due righe che siano in tal Senso; e questo ti fa enormemente onore.
    Detto questo Devo dire : che ho provato ad Modificare come mi hai fatto vedere tu le cose.
    Però l'unica cosa che ho Riscontrato e che ora non funziona più nulla.
    In fatti non solo ti invito Nuovamente ma senza Impegno a Scaricare il Mio Progetto a questo Link :
    https://app.box.com/s/seip5xjkjxlh01reya32kneb6hai77hz
    Ma a dare anche un occhiata a tutto il resto in quanto ti ho dato il mio Programma Originale ; Cioè : una volta che si fosse messo tutti i pezzi del Puzzle al proprio posto , e il tutto funzionasse come dovrebbe; Questo e il programma che mi piacerebbe avere come Ricordo.
    Provalo e vedrai che non funziona più Nulla ; Ma può anche darsi che sia io ad Aver Interpretato male ed inserito il tutto in modo sbagliato .
    Ciao e Buona Domenica

  6. #6
    L'avatar di Ciurmy
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Vigodarzere
    Età
    44
    Messaggi
    7
    Versione Office
    Excel 2013
    Likes ricevuti
    1
    Ciao,

    ho guardato il codice.
    Il gioco non si avvia poichè la variabile FLAG è settata a false e quindi esce subito da Worksheet_SelectionChange.
    Questa variabile cosa esprime? L’avvio del gioco? In tal caso devi capire dove impostarla a true questa variabile (per esempio subito dopo la scelta del Bianco e del Nero).

    Poi guardando il resto del codice presente in Worksheet_SelectionChange, il codice sotto cosa rappresenta? Il successivo posizionamento della pedina?
    Allora ti consiglio di prendere il codice sotto, toglierlo da Worksheet_SelectionChange e farci un modulo a parte dove gestisci la mossa dell’utente.
    Disaccoppiando la grafica (disegno delle pedine e della scacchiera) dall’engine del gioco riuscirai sicuramente a gestire meglio il programma.

    If (Cells(Riga, Colo) = "") Then

    If ((Abs(Priga - Riga) = 1 And (Pcolo - Colo = -1)) Or ((Abs(Pcolo - Colo) = 1 And (Priga - Riga = -1)))) Then
    Cells(Riga, Colo) = Cells(Priga, Pcolo)
    Cells(Priga, Pcolo) = ""

    If (Abs(Priga - Riga) = 1) Then
    If ((Priga - Riga) > 0) Then
    Cells(Priga - 1, Colo) = ""
    Else
    Cells(Riga - 1, Colo) = ""
    End If

    Else

    If ((Pcolo - Colo) > 0) Then
    Cells(Riga, Pcolo - 1) = ""
    Else
    Cells(Riga, Colo - 1) = ""
    End If
    End If
    End If
    End If

    If Priga <> "" And Pcolo <> “” Then
    Cells(Priga, Pcolo).Font.Color = -65536
    End If

    If Priga <> "" And Pcolo <> “” Then
    If (Cells(Priga, Pcolo).Locked = False) Then Cells(Priga, Pcolo).Font.Color = -65536
    End If

    FLAG = False

    If ((Riga <> 1 Or Colo <> 1) And Cells(Riga, Colo) <> "") Then
    Selection.Font.Color = -16776961
    FLAG = True
    Priga = Riga
    Pcolo = Colo
    End If

    If Priga <> "" And Pcolo <> “” Then
    Cells(Priga, Pcolo).Font.Color = -65536

  7. #7
    L'avatar di A.Maurizio
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Torino
    Età
    56
    Messaggi
    383
    Versione Office
    2013
    Likes ricevuti
    44
    Likes dati
    0
    Ciao Ciurmy allora sè ho capito bene dovrei fare una Cosa come quella che ti ho appena Inviato .
    Solo che in questo caso ho usato delle Shapes .
    però qui mente in questo caso Funziona Tutto Perfettamente a parte il solito inconvegnente che non saprei proprio come fare per evitare che si possa saltare da una a più celle .
    Per il resto funziona : Tranne che per un altro invconvegnente , che per il momento non sono ancora riuscito a risolvere ed e questo :
    Una volta giunti a Dama , avviene si la trasformazione ; ma poi non mangia più nessuno sia da una parte che dall'altra.
    E anche qui non ho ancora copito il perchè.
    Provalo e fammi sapere ciao da maurizio

Discussioni Simili

  1. Gioco Della Tombola Parlante
    Di A.Maurizio nel forum Lavori e giochi con Excel
    Risposte: 2
    Ultimo Messaggio: 13/01/17, 11:38
  2. Gioco dei 15 Numeri con le Chart
    Di A.Maurizio nel forum Lavori e giochi con Excel
    Risposte: 2
    Ultimo Messaggio: 27/06/16, 18:05
  3. Un nuovo gioco per Voi
    Di Marius44 nel forum Lavori e giochi con Excel
    Risposte: 13
    Ultimo Messaggio: 14/05/16, 20:44
  4. Come posso Risolvere questo problema con il Gioco della dama e le Image.Picture
    Di A.Maurizio nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 08/12/15, 17:37
  5. Arrivare a Dama e Cambiare Aspetto
    Di A.Maurizio nel forum Domande su Excel VBA e MACRO
    Risposte: 3
    Ultimo Messaggio: 23/11/15, 19:24

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •