Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
2048+ the Game - 2048 aggiunte

2048+ the Game

Sommario | Admin | Forum | Bugs | Todo | Files

Pagine: [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ] Precedente | Prossimo
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 17:34
Venerdì, 01/06/2018
Non mi sono perso XD, ma mi viene difficile restarvi dietro con il codice in VB.
Non sto agendo su nuove feature et simila, ma per migliorare qualcosa.
Ad esempio ho riscritto la funzione Verifica_Ultima_Potenza()
Codice sorgente - presumibilmente Delphi

  1. public void Verifica_Ultima_Potenza(Int32 Ultima_Potenza)
  2. {
  3.     Thread.Sleep(200);
  4.  
  5.     if (Ultima_Potenza > Max_Potenza_Raggiunta)
  6.             Max_Potenza_Raggiunta = Ultima_Potenza;
  7.  
  8.     /* Se non trova Max_potenza torna -1 */
  9.     Int32 index = Array.IndexOf(Obiettivi_Punteggio, Max_Potenza_Raggiunta);
  10.  
  11.     if (index > 0)
  12.     {
  13.         Suono4.play();
  14.         Obiettivi_Punteggio[index] = 0;
  15.      }
  16. }


Codice sorgente - presumibilmente VB.NET

  1. ' Versione in VB.
  2. ' Nuova
  3.     Public Sub Verifica_Ultima_Potenza(ByVal Ultima_Potenza As Int32)
  4.         Thread.Sleep(200)
  5.         If Ultima_Potenza > Max_Potenza_Raggiunta Then Max_Potenza_Raggiunta = Ultima_Potenza
  6.         Dim index As Int32 = Array.IndexOf(Obiettivi_Punteggio, Max_Potenza_Raggiunta)
  7.  
  8.         If index > 0 Then
  9.             Suono4.play()
  10.             Obiettivi_Punteggio(index) = 0
  11.         End If
  12.     End Sub
  13.  
  14. ' Vecchia Riga.505
  15.     Public Sub Verifica_Ultima_Potenza(ByVal P As Int32)
  16.         Thread.Sleep(200)
  17.         Ultima_Potenza = P
  18.         If Ultima_Potenza > Max_Potenza_Raggiunta Then Max_Potenza_Raggiunta = Ultima_Potenza
  19.  
  20.         If Max_Potenza_Raggiunta = 2048 And Obiettivi_Punteggio(0) = 2048 Then
  21.             Suono4.play()
  22.             Obiettivi_Punteggio(0) = 0
  23.         End If
  24.  
  25.         If Max_Potenza_Raggiunta = 4096 And Obiettivi_Punteggio(1) = 4096 Then
  26.             Suono4.play()
  27.             Obiettivi_Punteggio(1) = 0
  28.         End If
  29.  
  30.         If Max_Potenza_Raggiunta = 8192 And Obiettivi_Punteggio(2) = 8192 Then
  31.             Suono4.play()
  32.             Obiettivi_Punteggio(2) = 0
  33.         End If
  34.     End Sub



Se va bene inseritela voi nei vostri update.io con le 1000 modifiche e prove non ho la versione 8.9 quindi ne inserirei una vecchia

Ultima modifica effettuata da Mikelius il 01/06/2018 alle 17:44
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 17:44
Venerdì, 01/06/2018
Testo quotato

Postato originariamente da Mikelius:
Non mi sono perso XD, ma mi viene difficile restarvi dietro con il codice in VB.


Tranquillo non ci corre dietro nessuno.
Io trovo difficoltà con il C#, non ricordo mai la giusta sintassi.
E' un buon allenamento, utilizzare + linguaggi.


in programmazione tutto è permesso
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 18:00
Venerdì, 01/06/2018
Testo quotato

Postato originariamente da Carlo:

E' un buon allenamento, utilizzare + linguaggi.



Si certamente, ma ad esempio il namespace My.Application non ha una "reale" controparte in c#, quindi non basta una semplice conversione

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 18:01
Venerdì, 01/06/2018
Testo quotato

Postato originariamente da Mikelius:
Ad esempio ho riscritto la funzione Verifica_Ultima_Potenza()



Vediamo che dice Ultimo, anche io ho una versione che non è più quella ufficiale, per esempio ho riscritto una sub

Originale:

Codice sorgente - presumibilmente VB.NET

  1. Public Sub Random_Matrice4x4_2048(ByRef Matr2048 As Int32(,))
  2.         Dim rand As New Random
  3.         Dim Riga() As Int32 = {1, 2, 3, 4}
  4.         Dim Colonna() As Int32 = {1, 2, 3, 4}
  5.         Dim R As Int32
  6.         Dim C As Int32
  7. Avvia:
  8.         Do
  9.             R = Riga(rand.Next(0, 4))
  10.             C = Colonna(rand.Next(0, 4))
  11.             If Matr2048(R, C) = 1 Then
  12.                 Matr2048(R, C) = Rand_2_4()
  13.                 Indx_Nuovo_Val = R & "-" & C
  14.                 Verifica_Ultima_Potenza(Matr2048(R, C))
  15.                 Exit Do
  16.             End If
  17.         Loop
  18.         If Stato_eventi = Stato.Azzerato Then
  19.             Stato_eventi = Stato.Avviato
  20.             Thread.Sleep(300)
  21.             GoTo Avvia
  22.         End If
  23. End Sub


modificata:


Codice sorgente - presumibilmente VB.NET

  1. Public Sub Random_Matrice4x4_2048()
  2.         If Stato_eventi = Stato.Azzerato Then
  3.             Stato_eventi = Stato.Avviato
  4.             Estrai()
  5.             Estrai()
  6.         Else
  7.             Estrai()
  8.         End If
  9. End Sub
  10.  
  11. Public Sub Estrai()
  12.         Dim rand As New Random
  13.         Dim R As Int32
  14.         Dim C As Int32
  15.         Do
  16.             R = rand.Next(1, 5)
  17.             C = rand.Next(1, 5)
  18.             If Matrice4x4(R, C) = 1 Then
  19.                 Matrice4x4(R, C) = Rand_2_4()
  20.                 Indx_Nuovo_Val = R & "-" & C
  21.                 Verifica_Ultima_Potenza(Matrice4x4(R, C))
  22.                 Exit Do
  23.             End If
  24.         Loop
  25. End Sub


Naturalmente tutte le chiamate a Random_Matrice4x4_2048(), ora vanno fatte senza specificare il parametro matrice, perché  Matrice4x4() è una matrice pubblica.

Ultima modifica effettuata da Carlo il 01/06/2018 alle 18:14


in programmazione tutto è permesso
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 18:33
Venerdì, 01/06/2018
Testo quotato

Postato originariamente da Mikelius:

Testo quotato

Postato originariamente da Carlo:

E' un buon allenamento, utilizzare + linguaggi.



Si certamente, ma ad esempio il namespace My.Application non ha una "reale" controparte in c#, quindi non basta una semplice conversione



Application.DoEvents(); in C# = Application.DoEvents() in Vb

Per il My mi sembra che se in C# si caricano i giusti assembly c'è.

Per portare un programma VB in C#, apro un progetto nuovo C#, da progettazione replico tutta la grafica, usando come aiuto il designer della grafica vb, scrivo da zero l'inizializzazione, poi incollo la prima routine che deve essere eseguita e correggo tutti gli errori. Poi incollo uno per uno gli eventi click, e correggo tutti gli errori e così via.
Con i convertitori, impiegavo più tempo.

Ultima modifica effettuata da Carlo il 01/06/2018 alle 19:10


in programmazione tutto è permesso
PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 18:51
Venerdì, 01/06/2018
@Mikelius

La tua soluzione va bene, si può modificare, abbrevia il codice :k:

l'array parte dall'indice zero

Codice sorgente - presumibilmente VB.NET

  1. ' Versione in VB.
  2. ' Nuova
  3.     Public Sub Verifica_Ultima_Potenza(ByVal Ultima_Potenza As Int32)
  4.         Thread.Sleep(200)
  5.         If Ultima_Potenza > Max_Potenza_Raggiunta Then Max_Potenza_Raggiunta = Ultima_Potenza Else Return
  6.         Dim index As Int32 = Array.IndexOf(Obiettivi_Punteggio, Max_Potenza_Raggiunta)
  7.  
  8.         If index >= 0 Then
  9.             Suono4.play()
  10.             Obiettivi_Punteggio(index) = 0
  11.         End If
  12.     End Sub




@Carlo


Codice sorgente - presumibilmente VB.NET

  1. Public Sub Random_Matrice4x4_2048()
  2.         If Stato_eventi = Stato.Azzerato Then
  3.             Stato_eventi = Stato.Avviato
  4.             Estrai()
  5.            'Ricorsiva
  6.            Random_Matrice4x4_2048()
  7.         Else
  8.             Estrai()
  9.         End If
  10. End Sub
  11.  
  12. Public Sub Estrai()
  13.         Dim rand As New Random
  14.         Dim R As Int32
  15.         Dim C As Int32
  16.         Do
  17.             R = rand.Next(1, 5)
  18.             C = rand.Next(1, 5)
  19.             If Matrice4x4(R, C) = 1 Then
  20.                 Matrice4x4(R, C) = Rand_2_4()
  21.                 Indx_Nuovo_Val = R & "-" & C
  22.                 Verifica_Ultima_Potenza(Matrice4x4(R, C))
  23.                 Exit Do
  24.             End If
  25.         Loop
  26. End Sub



ho messo la Ricorsione nel tuo codice :k:





Ultima modifica effettuata da Ultimo il 01/06/2018 alle 18:57


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 19:09
Venerdì, 01/06/2018
sempre per la storia abbasso gli IF ELSE....
verso la riga 130 c'è:
Codice sorgente - presumibilmente Delphi

  1. if (TipoGrafica == 1)
  2.                     Mat4x4Pict_2040[nCel].BackColor = Color.Bisque;
  3.                 else if (TipoGrafica == 2)
  4.                     Mat4x4Pict_2040[nCel].BackColor = Color.DarkGray;
  5.                 else if (TipoGrafica == 3)
  6.                     Mat4x4Pict_2040[nCel].BackColor = Color.DarkKhaki;
  7.                 else if (TipoGrafica == 4)
  8.                     Mat4x4Pict_2040[nCel].BackColor = Color.Brown;
  9.                 else if (TipoGrafica == 5)
  10.                     Mat4x4Pict_2040[nCel].BackColor = Color.Brown;
  11.                 else if (TipoGrafica == 6)
  12.                     Mat4x4Pict_2040[nCel].BackColor = Color.DarkGreen;




Se lo si vuole rendere più

Codice sorgente - presumibilmente Plain Text

  1. Mat4x4Pict_2040[nCel].BackColor=ColoreSfondo[TipoGrafica];


previa definizione definizione
Codice sorgente

                List<Color> ColoreSfondo = new List<Color>();                 ColoreSfondo.Add(Color.Bisque);                 ColoreSfondo.Add(Color.DarkGray);                 ColoreSfondo.Add(Color.DarkKhaki);                 ColoreSfondo.Add(Color.Brown);                 ColoreSfondo.Add(Color.RosyBrown);                 ColoreSfondo.Add(Color.DarkGreen);



Questo se un domani si avranno altre TipoGrafica

Si potrebbe creare anche una lista per i suoni volendo.

PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 19:14
Venerdì, 01/06/2018

@Mikelius

Bella soluzione, utilizzare le Liste aiuta :k:


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Pagine: [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ] Precedente | Prossimo