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 - Guida

2048+ the Game

Sommario | Admin | Forum | Bugs | Todo | Files

Pagine: [ 1 2 3 4 5 6 7 8 9 ] Precedente | Prossimo
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 1:21
Lunedì, 11/06/2018
versione 8.10.2



Ultimo ha allegato un file: 2048_the_game_v8.10.2.zip (1629791 bytes)
Clicca qui per scaricare il file


If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1345
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 19:53
Lunedì, 11/06/2018
Testo quotato

Postato originariamente da Ultimo:

versione 8.10.2




Dovresti aggiungere su AboutBox2:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub AboutBox2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
  2.         If e.KeyCode = Keys.F12 then Me.Close()
  3.     End Sub



Per fare in modo che se si preme di nuovo F12, AboutBox2 si chiude e Form1 si riabilita.
Sulla finestra Proprietà di AboutBox2, mettere KeyPreview = True

Oppure aggiungere la riga:
    Me.KeyPreview = True

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

Ultima modifica effettuata da Carlo il 11/06/2018 alle 19:56


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


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 20:19
Lunedì, 11/06/2018
@Carlo

Ok lo inserisco





If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1345
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 20:14
Martedì, 12/06/2018
@Ultimo
@Mikelius

SubRoutine grafica commentata, usate matrici al posto degli if per il colore dei fondi.

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.             Dim Fondo As New SolidBrush(Color.Transparent)
  6.             'Carico una matrice con il valore da scrivere e il rispettivo colore di fondo in RGB
  7.             Dim ColoreFondo(,) As Short = {{2, 14, 209, 69}, {4, 255, 127, 39}, {8, 185, 122, 86}, {16, 0, 168, 243}, {32, 225, 184, 44},
  8.                                           {64, 0, 53, 243}, {128, 255, 242, 0}, {256, 196, 255, 14}, {512, 160, 13, 234},
  9.                                           {1024, 155, 112, 77}, {2048, 230, 17, 81}, {4096, 181, 181, 223}, {8192, 91, 92, 67}}
  10.             For i = 0 To 12 ' ciclo per creare 13 tessere grafiche
  11.                 imgbmp = New Bitmap(84, 84) ' creo una bitmap in ram 84x84 pixel
  12.                 Using g As Graphics = Graphics.FromImage(imgbmp) ' istanzio l'oggetto g che disegnerà su imgbmp
  13.                     g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit ' setto alta qualità di disegno per i testi
  14.                     Dim Testo As String = ColoreFondo(i, 0).ToString ' testo da scrivere
  15.                     Fondo = New SolidBrush(Color.FromArgb(255, ColoreFondo(i, 1), ColoreFondo(i, 2), ColoreFondo(i, 3))) ' colore di fondo del numero corrente
  16.                     g.Clear(Color.Snow) ' cancello la casella con il colore bianconeve
  17.                     g.FillEllipse(Fondo, -14, -14, 111, 111) ' disegno un'ellisse più grande della bitmap per creare l'effetto stondato
  18.  
  19.                     If i < 2 Then
  20.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Bold)
  21.                             g.DrawString(Testo, Carattere, Brushes.Black, New PointF(26, 22)) ' 2 e 4
  22.                         End Using
  23.                     ElseIf i = 2 Then
  24.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  25.                             g.DrawString(Testo, Carattere, Brushes.White, New PointF(26, 22)) ' 8
  26.                         End Using
  27.                     ElseIf i = 3 Then
  28.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  29.                             g.DrawString(Testo, Carattere, Brushes.DarkRed, New PointF(18, 22)) ' 16
  30.                         End Using
  31.                     ElseIf i = 4 Then
  32.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  33.                             g.DrawString(Testo, Carattere, Brushes.Blue, New PointF(18, 22)) ' 32
  34.                         End Using
  35.                     ElseIf i = 5 Then
  36.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  37.                             g.DrawString(Testo, Carattere, Brushes.Yellow, New PointF(18, 22)) ' 64
  38.                         End Using
  39.                     ElseIf i = 6 Then
  40.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  41.                             g.DrawString(Testo, Carattere, Brushes.Blue, New PointF(5, 22)) ' 128
  42.                         End Using
  43.                     ElseIf i = 7 Then
  44.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  45.                             g.DrawString(Testo, Carattere, Brushes.Black, New PointF(8, 22)) ' 256
  46.                         End Using
  47.                     ElseIf i = 8 Then
  48.                         Using Carattere As Font = New Font("Arial", 26, FontStyle.Regular)
  49.                             g.DrawString(Testo, Carattere, Brushes.White, New PointF(8, 22)) ' 512
  50.                         End Using
  51.                     ElseIf i = 9 Then
  52.                         Using Carattere As Font = New Font("Arial", 22, FontStyle.Regular)
  53.                             g.DrawString(Testo, Carattere, Brushes.LimeGreen, New PointF(5, 26)) ' 1024
  54.                         End Using
  55.                     ElseIf i = 10 Then
  56.                         Using Carattere As Font = New Font("Arial", 22, FontStyle.Regular)
  57.                             g.DrawString(Testo, Carattere, Brushes.White, New PointF(5, 26)) ' 2048
  58.                         End Using
  59.                     ElseIf i = 11 Then
  60.                         Using Carattere As Font = New Font("Arial", 22, FontStyle.Regular)
  61.                             g.DrawString(Testo, Carattere, Brushes.DarkRed, New PointF(5, 26)) ' 4096
  62.                         End Using
  63.                     ElseIf i = 12 Then
  64.                         Using Carattere As Font = New Font("Arial", 22, FontStyle.Regular)
  65.                             g.DrawString(Testo, Carattere, Brushes.Red, New PointF(5, 26)) ' 8192
  66.                         End Using
  67.                     End If
  68.                 End Using
  69.                 ImageList1.Images.Add(imgbmp) ' aggiungo a ImageList1 la BitMap appena disegnata
  70.             Next
  71.             Panel1.BackColor = Color.Snow ' colore di fondo del Panel1, contenitore di tutte le caselle
  72.             PictureBox1.BackColor = Color.Silver ' colore di fondo della PictureBox1, massima potenza raggiunta
  73.             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
  74.         ElseIf TipoSimboli = 2 Then ' Grafica 2
  75.             Dim Fondo As New SolidBrush(Color.Transparent)
  76.             ' Carico una matrice con il valore da scrivere e il rispettivo colore di fondo in RGB
  77.             Dim ColoreFondo(,) As Short = {{2, 245, 245, 245}, {4, 245, 245, 220}, {8, 242, 177, 121}, {16, 245, 149, 99}, {32, 245, 124, 97},
  78.                                           {64, 255, 10, 10}, {128, 250, 220, 90}, {256, 240, 225, 80}, {512, 235, 200, 0},
  79.                                           {1024, 230, 190, 0}, {2048, 220, 160, 0}, {4096, 0, 0, 0}, {8192, 0, 0, 0}}
  80.             For i = 0 To 12 ' ciclo per creare 13 tessere grafiche
  81.                 imgbmp = New Bitmap(84, 84) ' creo una bitmap in ram 84x84 pixel
  82.                 Using g As Graphics = Graphics.FromImage(imgbmp) ' istanzio l'oggetto g che disegnerà su imgbmp
  83.                     g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit ' setto alta qualità di disegno per i testi
  84.                     Dim Testo As String = ColoreFondo(i, 0).ToString ' testo da scrivere
  85.                     Fondo = New SolidBrush(Color.FromArgb(255, ColoreFondo(i, 1), ColoreFondo(i, 2), ColoreFondo(i, 3))) ' colore di fondo del numero corrente
  86.                     g.FillRectangle(Fondo, 4, 4, 76, 76) ' disegno un rettangolo più piccolo della bitmap per creare l'effetto tessera
  87.                     If i < 3 Then
  88.                         Using Carattere As Font = New Font("Arial", 32, FontStyle.Bold)
  89.                             g.DrawString(Testo, Carattere, Brushes.DarkSlateGray, New PointF(24, 20)) ' 2, 4 e 8
  90.                         End Using
  91.                     ElseIf i < 6 And i > 2 Then
  92.                         Using Carattere As Font = New Font("Arial", 32, FontStyle.Bold)
  93.                             g.DrawString(Testo, Carattere, Brushes.White, New PointF(12, 20)) ' 16, 32, e 64
  94.                         End Using
  95.                     ElseIf i < 9 And i > 5 Then
  96.                         Using Carattere As Font = New Font("Arial", 28, FontStyle.Bold)
  97.                             g.DrawString(Testo, Carattere, Brushes.White, New PointF(6, 22)) ' 128, 256 e 512
  98.                         End Using
  99.                     ElseIf i < 13 And i > 8 Then
  100.                         Using Carattere As Font = New Font("Arial", 22, FontStyle.Bold)
  101.                             g.DrawString(Testo, Carattere, Brushes.White, New PointF(5, 26)) ' 1024, 2048, 4096 e 8182
  102.                         End Using
  103.                     End If
  104.                 End Using
  105.                 ImageList1.Images.Add(imgbmp) ' aggiungo a ImageList1 la BitMap appena disegnata
  106.             Next
  107.             Panel1.BackColor = Color.Gray ' colore di fondo del Panel1, contenitore di tutte le caselle
  108.             PictureBox1.BackColor = Color.Gray ' colore di fondo della PictureBox1, massima potenza raggiunta
  109.             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
  110.         ElseIf TipoSimboli = 3 Then ' Grafica 3
  111.             Dim Fondo As New SolidBrush(Color.FromArgb(255, 220, 220, 220))
  112.             Dim Penna As New SolidBrush(Color.FromArgb(255, 40, 40, 40))
  113.             Dim Testo As String
  114.             For i = 0 To 12
  115.                 imgbmp = New Bitmap(84, 84)
  116.                 Using g As Graphics = Graphics.FromImage(imgbmp)
  117.                     g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
  118.                     g.SmoothingMode = SmoothingMode.AntiAlias
  119.                     Testo = 2 ^ (i + 1).ToString
  120.                     Penna = New SolidBrush(Color.FromArgb(255, 10 * i, i * 10, 21 * i))
  121.                     g.FillRectangle(Fondo, 0, 0, 84, 84)
  122.                     Call PoligonoRegolare(g, Penna, 28 - i, i + 3, 42, 41, 0, False)
  123.                     If i < 13 And i > 8 Then
  124.                         Using Carattere As Font = New Font("Arial", 22, FontStyle.Bold)
  125.                             g.DrawString(2 ^ (i + 1).ToString, Carattere, Brushes.White, New PointF(5, 26))
  126.                         End Using
  127.                     End If
  128.                 End Using
  129.                 ImageList1.Images.Add(imgbmp)
  130.             Next
  131.             Panel1.BackColor = Color.IndianRed
  132.             PictureBox1.BackColor = Color.DarkKhaki
  133.             Call ToolStrip_Checked(TipoGrafica)
  134.         ElseIf TipoSimboli = 4 Then
  135.             Dim Fondo As New SolidBrush(Color.Blue)
  136.             Dim Penna As New SolidBrush(Color.Yellow)
  137.             For i = 0 To 12
  138.                 imgbmp = New Bitmap(84, 84)
  139.                 Using g As Graphics = Graphics.FromImage(imgbmp)
  140.                     g.FillRectangle(Fondo, 0, 0, 84, 84)
  141.                     g.FillRectangle(Penna, 0, 80 - i * 6, 84, 84)
  142.                 End Using
  143.                 ImageList1.Images.Add(imgbmp)
  144.             Next
  145.             Panel1.BackColor = Color.Coral
  146.             PictureBox1.BackColor = Color.Brown
  147.             Call ToolStrip_Checked(TipoGrafica)
  148.         ElseIf TipoSimboli = 5 Then
  149.  
  150.             For i = 0 To 12
  151.                 ImageList1.Images.Add(ImageList2.Images(i))
  152.             Next
  153.             Panel1.BackColor = Color.Brown
  154.             PictureBox1.BackColor = Color.Brown
  155.             Call ToolStrip_Checked(TipoGrafica)
  156.         ElseIf TipoSimboli = 6 Then
  157.  
  158.             For i = 0 To 12
  159.                 ImageList1.Images.Add(ImageList3.Images(i))
  160.             Next
  161.             Panel1.BackColor = Color.DarkGreen
  162.             PictureBox1.BackColor = Color.DarkGreen
  163.             Call ToolStrip_Checked(TipoGrafica)
  164.         ElseIf TipoSimboli = 7 Then
  165.  
  166.             Dim Roma() As String = {"    I", "   II", "  III", "  IV", "   V", "   VI", "  VII", " VIII", "  IX", "   X", "  XI", "  XII", " XIII"}
  167.             For i = 0 To 12
  168.                 imgbmp = New Bitmap(84, 84) ' creo una bitmap
  169.                 Using g As Graphics = Graphics.FromImage(imgbmp) ' g agisce su imgbmp
  170.                     g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
  171.                     g.FillRectangle(Brushes.Navy, 0, 0, 84, 84)
  172.                     Using Carattere As Font = New Font("Georgia", 22, FontStyle.Regular)
  173.                         g.DrawString(Roma(i), Carattere, Brushes.Red, New PointF(5, 26))
  174.                     End Using
  175.                 End Using
  176.                 ImageList1.Images.Add(imgbmp)
  177.             Next
  178.             Panel1.BackColor = Color.Tomato
  179.             PictureBox1.BackColor = Color.Navy
  180.             Call ToolStrip_Checked(TipoGrafica)
  181.         ElseIf TipoSimboli = 8 Then
  182.  
  183.             Dim Lettere() As String = {"   A", "   B", "   C", "   D", "   E", "   F", "   G", "   H", "   I", "   J", "   K", "   L", "   M"}
  184.             For i = 0 To 12
  185.                 imgbmp = New Bitmap(84, 84) ' creo una bitmap
  186.                 Using g As Graphics = Graphics.FromImage(imgbmp) ' g agisce su imgbmp
  187.                     g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
  188.                     g.FillRectangle(Brushes.Navy, 0, 0, 84, 84)
  189.                     Using Carattere As Font = New Font("Georgia", 32, FontStyle.Regular)
  190.                         g.DrawString(Lettere(i), Carattere, Brushes.Red, New PointF(-10, 16))
  191.                     End Using
  192.                 End Using
  193.                 ImageList1.Images.Add(imgbmp)
  194.             Next
  195.             Panel1.BackColor = Color.Tomato
  196.             PictureBox1.BackColor = Color.Navy
  197.             Call ToolStrip_Checked(TipoGrafica)
  198.         End If
  199.  
  200.     End Sub



Modifica routine poligoni, aggiunta variabile: Pieno=True poligoni pieni, False poligoni vuoti, in 2048+ usata solo con True

Codice sorgente - presumibilmente VB.NET

  1. Private Sub PoligonoRegolare(ByVal gR As Graphics, ByVal Solido As Brush, ByVal MisuraLato As Single, ByVal NumeroLati As Single, ByVal XCentro As Single, ByVal YCentro As Single, ByVal GradiRotazione As Single, ByVal Pieno As Boolean)
  2.  
  3.         'Trasforma i GradiRotazione in Radianti
  4.         Dim RadiantiRotazione As Single = GradiRotazione * Math.PI / 180
  5.  
  6.         'Archi del cerchio(IN RADIANTI)entro il quale s'immagina inscritto il poligono,
  7.         'occupati dal punto ZERO (minima coordinata Y dell'area di disegno)all'estremo
  8.         'finale di ogni lato. Non serve l'estremo dell'ultimo lato, perchè è uguale al  
  9.         'punto ZERO.
  10.         Dim ARCHI As Single = 360 * Math.PI / 180 / NumeroLati
  11.  
  12.         'Dichiara una Matrice con numero elementi pari a NumLati per contenere
  13.         'l'arco complessivo(in RADIANTI)occupato dal punto più alto del cerchio
  14.         '(zero radianti)ai punti successivi (estremi dei lati).
  15.         Dim aArc(NumeroLati) As Single
  16.  
  17.         'Carica la matrice con gli archi complessivi (in radianti) dei suddetti punti
  18.         For i As Short = 0 To NumeroLati
  19.             aArc(i) = ARCHI * i
  20.         Next
  21.  
  22.         '  1)Calcolo del Numero Fisso (serve solo il numero dei lati: NumLati)
  23.         Dim nFisso As Single = 0.5 / Math.Tan(Math.PI / NumeroLati)
  24.  
  25.         '  2)Calcolo Apotema (servono Numero Fisso e Misura del Lato)
  26.         Dim Apotema As Single = nFisso * MisuraLato
  27.  
  28.         '  3)Calcolo Raggio del cerchio in cui il poligono si immagina iscritto (è
  29.         '  anche il raggio del poligono)
  30.         Dim Raggio As Single = Math.Sqrt(Apotema ^ 2 + (MisuraLato / 2) ^ 2)
  31.  
  32.         'Dichiara una Matrice con numero elementi pari a NumLati per contenere le
  33.         'coordinate X di ogni punto
  34.         Dim XPunto(NumeroLati) As Single
  35.  
  36.         'Dichiara una Matrice con numero elementi pari a NumLati per contenere le
  37.         'coordinate Y di ogni punto
  38.         Dim YPunto(NumeroLati) As Single
  39.  
  40.         'Carica le 2 matrici suddette con le relative coordinate X ed Y
  41.         For k As Short = 0 To NumeroLati - 1
  42.             XPunto(k) = XCentro + Raggio * Math.Sin(aArc(k) + RadiantiRotazione)
  43.             YPunto(k) = YCentro - Raggio * Math.Cos(aArc(k) + RadiantiRotazione)
  44.         Next
  45.  
  46.         'Definisce un'istanza della Classe GraphicsPath, atta a contenere un
  47.         ' "insieme" di disegni
  48.         Dim Percorso As New GraphicsPath
  49.  
  50.         ' Crea un Percorso con tutte le linee CONSECUTIVE che costituiscono
  51.         ' i Lati di un poligono tranne l'ultima, che è aggiunta poi tramite
  52.         ' "CloseFigure()"
  53.         For i As Short = 0 To NumeroLati - 2
  54.             Percorso.AddLine(XPunto(i), YPunto(i), XPunto(i + 1), YPunto(i + 1))
  55.         Next (i)
  56.  
  57.         'La seg. istruzione chiude il poligono, creando automaticamente l'ultimo lato
  58.         Percorso.CloseFigure()
  59.  
  60.         If Pieno Then
  61.             'DISEGNA IL POLIGONO REGOLARE PIENO(che corrisponde al path appena costruito)
  62.             'Solido deve essere di tipo Brush
  63.             gR.FillPath(Solido, Percorso)
  64.         Else
  65.             'DISEGNA IL POLIGONO REGOLARE VUOTO(che corrisponde al path appena costruito)
  66.             Dim Penna As New Pen(Solido) ' conversione da Brush a Pen
  67.             'Penna deve essere di tipo Pen
  68.             gR.DrawPath(Penna, Percorso)
  69.         End If
  70.  
  71.     End Sub


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


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


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 22:12
Martedì, 12/06/2018
@Carlo

Ok modifico il codice :k:


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 1:51
Venerdì, 06/07/2018
Ecco un aggiornamento della guida.

Manca una trattazione del Salvataggio e revisione della partita.
Dopo la revisionerò tutta (sono sicuro in molti refusi :D)
Fatemi sapere le vostre impressioni.
e sopratutto cosa vi piace cosa cambiereste.

P.s. @Ultimo,
La mia prefazione è fatta alla meno peggio, se vuoi farla tu una migliore visto che il progetto è partito da te... non mi offendo, anzi XD...

P.s. Questa è la versione chm per metterla dentro il gioco. E' possibile anche il formato pdf, o html (ma non credo che nel sito ci sia il modo di allegare al progetto la guida visionabile in html ).
Inoltre, se il progetto android andrà in porto, la stessa idendica guida è convertibile senza problemi in formato Epub.


Mikelius ha allegato un file: 2048 The Game 9.6.chm.zip (1071541 bytes)
Clicca qui per scaricare il file
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1345
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 3:27
Venerdì, 06/07/2018
vedo solo la tree view, non vedo i contenuti


Carlo ha allegato un file: guida.jpg (55919 bytes)
Clicca qui per guardare l'immagine


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


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 10:13
Venerdì, 06/07/2018
strano...


Mikelius ha allegato un file: NomeGiocatore.png (76143 bytes)
Clicca qui per guardare l'immagine
PM Quote
Pagine: [ 1 2 3 4 5 6 7 8 9 ] Precedente | Prossimo