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 - V 9.10

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
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 19:41
Mercoledì, 20/06/2018
@Carlo

Lo provo, :k:


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 21:29
Mercoledì, 20/06/2018
Visto che oramai usiamo le liste per i colori, per uniformare il codice ho inserito una lista dei colori anche su TipoGrafica = 1
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Crea_Simboli(TipoSimboli As Short)
  2.         Dim imgbmp As Bitmap = Nothing
  3.         ImageList1.Images.Clear() ' svuoto ImageList1
  4.         If TipoSimboli = 1 Then ' Grafica 1
  5.  
  6.             Dim Fondo As New SolidBrush(Color.Transparent)
  7.             Dim Colore_Font As New List(Of Brush)
  8.             Colore_Font.Add(Brushes.Black) '2
  9.             Colore_Font.Add(Brushes.Black) '4
  10.             Colore_Font.Add(Brushes.White) '8
  11.             Colore_Font.Add(Brushes.DarkRed) '16
  12.             Colore_Font.Add(Brushes.Blue) '32
  13.             Colore_Font.Add(Brushes.Yellow) '64
  14.             Colore_Font.Add(Brushes.Blue) '128
  15.             Colore_Font.Add(Brushes.Black) '256
  16.             Colore_Font.Add(Brushes.White) '512
  17.             Colore_Font.Add(Brushes.LimeGreen) '1024
  18.             Colore_Font.Add(Brushes.White) '2048
  19.             Colore_Font.Add(Brushes.DarkRed) '4096
  20.             Colore_Font.Add(Brushes.Red) '8192
  21.  
  22.             'Carico una matrice con il valore da scrivere e il rispettivo colore di fondo in RGB
  23.             Dim ColoreFondo(,) As Short = {{2, 14, 209, 69}, {4, 255, 127, 39}, {8, 185, 122, 86}, {16, 0, 168, 243}, {32, 225, 184, 44},
  24.                                           {64, 0, 53, 243}, {128, 255, 242, 0}, {256, 196, 255, 14}, {512, 160, 13, 234},
  25.                                           {1024, 155, 112, 77}, {2048, 230, 17, 81}, {4096, 181, 181, 223}, {8192, 91, 92, 67}}
  26.  
  27.             For i = 0 To 12 ' ciclo per creare 13 tessere grafiche
  28.                 imgbmp = New Bitmap(84, 84) ' creo una bitmap in ram 84x84 pixel
  29.                 Using g As Graphics = Graphics.FromImage(imgbmp) ' istanzio l'oggetto g che disegnerà su imgbmp
  30.                     g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit ' setto alta qualità di disegno per i testi
  31.                     Dim Testo As String = ColoreFondo(i, 0).ToString ' testo da scrivere
  32.                     Fondo = New SolidBrush(Color.FromArgb(255, ColoreFondo(i, 1), ColoreFondo(i, 2), ColoreFondo(i, 3))) ' colore di fondo del numero corrente
  33.                     g.Clear(Color.Snow) ' cancello la casella con il colore bianconeve
  34.                     g.FillEllipse(Fondo, -14, -14, 111, 111) ' disegno un'ellisse più grande della bitmap per creare l'effetto stondato
  35.  
  36.                     If i < 2 Then
  37.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Bold)
  38.                             g.DrawString(Testo, Carattere, Colore_Font(i), New PointF(26, 22)) ' 2, 4
  39.                         End Using
  40.                     ElseIf i = 2 Then
  41.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  42.                             g.DrawString(Testo, Carattere, Colore_Font(i), New PointF(26, 22)) ' 8
  43.                         End Using
  44.                     ElseIf i > 2 And i < 6 Then
  45.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  46.                             g.DrawString(Testo, Carattere, Colore_Font(i), New PointF(18, 22)) ' 16, 32, 64
  47.                         End Using
  48.                     ElseIf i > 5 And i < 9 Then
  49.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  50.                             g.DrawString(Testo, Carattere, Colore_Font(i), New PointF(8, 22)) ' 128, 256, 512
  51.                         End Using
  52.                     ElseIf i > 8 Then
  53.                         Using Carattere As Font = New Font("Arial", 22, FontStyle.Regular)
  54.                             g.DrawString(Testo, Carattere, Colore_Font(i), New PointF(5, 26)) ' 1024, 2048, 4096, 8192
  55.                         End Using
  56.                     End If
  57.                 End Using
  58.                 ImageList1.Images.Add(imgbmp) ' aggiungo a ImageList1 la BitMap appena disegnata
  59.             Next
  60.             Panel1.BackColor = Color.Snow ' colore di fondo del Panel1, contenitore di tutte le caselle
  61.             PictureBox1.BackColor = Color.Silver ' colore di fondo della PictureBox1, massima potenza raggiunta
  62.             Call ToolStrip_Checked(TipoGrafica) ' carica i colori di fondo di Mat4x4Pict_2040 in accordo alla grafica scelta, si vede quando non ci sono i numeri


Ultima modifica effettuata da Carlo il 20/06/2018 alle 21:48


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


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 3:50
Giovedì, 21/06/2018
@Mikelius
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form1_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
  2.     ' .Delta è la proprietà che indica di quanto è stata ruotata la rotellina
  3.             If e.Delta > 0 Then
  4.                 countSetImm += 1
  5.                 'La rotellina è stata ruotata verso l'alto
  6.             ElseIf e.Delta < 0 Then
  7.                 countSetImm -= 1
  8.                 'La rotellina è stata ruotata verso il basso
  9.             End If
  10.             '  MessageBox.Show(Math.Abs(countSetImm) Mod 8)
  11.             Call ImmSet_Click((countSetImm Mod 8) + 1)
  12.         End Sub



Per i test in sostituzione a:  MessageBox.Show(Math.Abs(countSetImm) Mod 8)
Puoi scrivere:  Debug.Print(Math.Abs(countSetImm) Mod 8) (viene aggiunto linefeed)
oppure:  Debug.Write(Math.Abs(countSetImm) Mod 8) (non viene aggiunto linefeed)
  
Quando sei in modalità Debug, nella Finestra di controllo immediato avrai il risultato dell'operazione senza interruzione del programma ed in modo continuo.
In compilazione Release, l'istruzione sarà ignorata.

La stessa cosa si fa in C# ma è obbligatorio inserire:
     using System.Diagnostics;

Ultima modifica effettuata da Carlo il 21/06/2018 alle 4:37


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


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 10:03
Giovedì, 21/06/2018
@carlo
si lo so, ma non mi volevo portare dietro il messaggio ad ogni Debug, per questo commento/decommento
Figurati che nell'evento di chiusura ho messo:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
  2. #If Not DEBUG Then
  3.         If MessageBox.Show("Vuoi uscire?", "2048+", MessageBoxButtons.YesNo) = DialogResult.No Then
  4.                 e.Cancel = True
  5.             End If
  6. #End If
  7.         My.Settings.Save()
  8.     End Sub



Proprio per evitare la finestra in debug XD

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 11:13
Giovedì, 21/06/2018
Testo quotato

Postato originariamente da Mikelius:

@carlo
si lo so, ma non mi volevo portare dietro il messaggio ad ogni Debug, per questo commento/decommento
Figurati che nell'evento di chiusura ho messo:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
  2. #If Not DEBUG Then
  3.         If MessageBox.Show("Vuoi uscire?", "2048+", MessageBoxButtons.YesNo) = DialogResult.No Then
  4.                 e.Cancel = True
  5.             End If
  6. #End If
  7.         My.Settings.Save()
  8.     End Sub



Proprio per evitare la finestra in debug XD  



Anche io commento decommento, per avere nella finestra immediata solo quello che mi serve al momento, per cui capisco bene quello che affermi, a volte mi doto anche di uno strumento di debug personalizzato.
Ho scritto anche un articolo:http://www.pierotofy.it/pages/guide_tutorials/Visual_Basic ...

Ho capito anche il perché del controllo: MessageBox.Show(Math.Abs(countSetImm) Mod 8), ad ogni giro di rotellina, con l'apertura della finestra vedevi il valore prima che generasse un eventuale errore!!! (furbo)


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


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 13:07
Giovedì, 21/06/2018
Testo quotato

Postato originariamente da Carlo:

Anche io commento decommento, per avere nella finestra immediata solo quello che mi serve al momento, per cui capisco bene quello che affermi, a volte mi doto anche di uno strumento di debug personalizzato.
Ho scritto anche un articolo:http://www.pierotofy.it/pages/guide_tutorials/Visual_Basic ...

Ho capito anche il perché del controllo: MessageBox.Show(Math.Abs(countSetImm) Mod 8), ad ogni giro di rotellina, con l'apertura della finestra vedevi il valore prima che generasse un eventuale errore!!! (furbo)



L'articolo letto, ma conoscendo nulla (sto imparando tramite questo gioco XD) di VB.net l'avevo un pò lasciato stare.

Diciamo che in questo caso la MessageBox è utile, ma spesso mi metto a utilizzare il debug al 100% ( verifico le ariabili, stach chiamate, espressioni ecc ecc) dal debug di Visual Studio. Questo era un modo spicciolo.

Comunque:

Al di là dei precedenti Bug (tasti indietro fino a -infinito) ho modificato la mia versione che non aveva la ultime corezzioni.. più tardi unisco se va bene.
La gestione Menu/Tasti Scelta rapida come vi sembra ora?  Ho tolto quasi tutti i CTRL..Ora si comanda da tasto singolo, anche l'uscita con ESC (per uniformità, non per altro.in caso ALT + F4 lo rimetto, quello è uno stardard obbligatorio XD).
Vedete se (SOLO RELATIVO A MENU E TASTI) ci siano bug.

P.s. dico anche qui:
Sapete come utilizzare gli strumenti di diagnostica? in modo da sapere quanto CPU e RAM consuma il gioco (anche se pochissima, ma vorrei confrontare le prestazioni con animazione e senza)



Mikelius ha allegato un file: 2048 the game v9.4.0.zip (561630 bytes)
Clicca qui per scaricare il file
PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 16:06
Giovedì, 21/06/2018
@Mikelius

Quale versione usi di Visual Studio ?

io sto usando la versione Community 2015


sto risolvendo i bug dei pulsanti :k:







If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 16:16
Giovedì, 21/06/2018
Testo quotato

Postato originariamente da Mikelius:

P.s. dico anche qui:
Sapete come utilizzare gli strumenti di diagnostica? in modo da sapere quanto CPU e RAM consuma il gioco (anche se pochissima, ma vorrei confrontare le prestazioni con animazione e senza)




Ho usato qualche volta Dubug/Avvia analisi prestazioni, facile ed intuitivo (ma quasi inutile per i nostri progetti).
In visual studio 2017, se si è in Debug, dopo un break, avanzando con F8 riga per riga, vengono segnalati i ms trascorsi.
Per un controllo immediato per sapere quanto pesa sulla CPU il programma, uso gestione risorse di windows.
Se invece voglio sapere quando tempo impiega ad essere eseguita una porzione di programma salvo i tempi:
Codice sorgente - presumibilmente VB.NET

  1. Dim Partenza As Double = (Now.ToOADate)
  2.  
  3. SubInControllo()
  4.  
  5. Dim DurataInSecondi As Double = (Now.ToOADate - Partenza) * 86400


Ovviamente ci sono altri metodi, Timer, TickCount, TimeSpan ecc ecc
Tutte le proprietà delle date .Millisecond .Second .Minute ecc ecc
Preferisco i Double perché mi piace come tratta il tempo Windows internamente.

Ultima modifica effettuata da Carlo il 21/06/2018 alle 17:54


in programmazione tutto è permesso
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