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
Encoder Disc - Encoder Disc, Rompicapo grafico

Encoder Disc

Sommario | Admin | Forum | Bugs | Todo | Files

Avatar
Carlo (Member)
Guru


Messaggi: 1389
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 15:52
Mercoledì, 13/12/2023
Ho pubblicato il gioco scritto in C# GDI+ Encoder Disc, graficamente ispirato al gioco CSAL, presente nella sezione javascript.

Vi invito a provarlo e a condividerne le impressioni di giocabilità. Nella stesura del codice ho cercato di rendere l'iterazione mouse rotazione dischi credibile, se avete commenti e/o migliorie da proporre sono bene accette.

Qualsiasi sia la combinazione casuale di colori proposta dopo mescolamento, agendo sulla rotazione dei livelli ed inversione dei colori sui 4 spicchi centrali, tutti i settori e tutti i livelli si possono riportare a scuro.

Personalmente risolvo il puzzle sempre in meno di un minuto.

Ultima modifica effettuata da Carlo il 13/12/2023 alle 16:07


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


Messaggi: 708
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 17:07
Mercoledì, 13/12/2023
Scaricato. Provato. Funziona tutto in modo molto scorrevole, senza esitazioni o "intoppi".
La questione è che si tratta di un tipo di gioco non adatto alla mia forma mentale: mi sono subito stufato (anche perché non riuscivo a "trovare la quadra" - evidentemente non sono all'altezza, o l'ho provato in un momento in cui ero particolarmente "appannato"). Il che non significa che non sia tutto come dovrebbe essere.


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1389
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 17:36
Mercoledì, 13/12/2023
Il gioco in se non mi è sembrato un granché, le prime volte lo risolvevo per caso, se ho scelto di replicarlo è perché nella versione javascript la rotazione dei dischi è affetta da scatti se si compiono rotazioni ampie.

Questo mi ha portato a pensare come avrei affrontato la situazione in C# e il risultato anche se non perfettamente soddisfacente, sicuramente superiore alla versione javascript.

In particolare non sono soddisfatto del fatto che con il mio approcio il puntatore del mouse non resta ancorato nel settore cliccato. Questo perché se si è sui settori esterni il mouse percorre più strada e produce uno spostamento veloce, mentre se si è sul settore interno più o meno ci siamo.

La soluzione logica è decrementare lo step mano mano che ci si allontana dal centro, ma poi bisogna introdurre ulteriori correttivi in base alla dimensione del form, che è ridimensionabile. Anche gli interi che ho usato per definire la rotazione in gradi non sarebbero adeguati.

Una curiosità, l'encoder disc esiste davvero e serve per ottenere valori binari in robotica, quello da me proposto è a 5 bit. http://www.mcmanis.com/chuck/robotics/projects/encoders/en ...

Ultima modifica effettuata da Carlo il 15/12/2023 alle 19:06


in programmazione tutto è permesso
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 21:37
Mercoledì, 13/12/2023
Mi piace, molto bello,
Bravo carlo.
Anche se sarebbe meglio rallentare un pò il drag dei vari cluster.
Girano troppo veloce


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1389
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 19:32
Giovedì, 14/12/2023
Se Thejuster non lo avesse evidenziato avrei lasciato i livelli ruotabili senza aggancio al mouse.
Pubblicata versione 1.0.1 dove la freccia del mouse resta ancorata nel settore cliccato. Ad essere pignoli, l'ancoraggio non è sempre perfetto in tutti i livelli e a tutte le risoluzioni.
Usati i float per ottenere i calcoli decimali, e i byte nelle variabili che contengono numeri che non superano il valore 127. Sostituiti anche gli int con gli short ove possibile.

Domanda tecnica, in C# dichiarare variabili di tipo byte quando possibile, porta dei benefici? Meno memoria usata e più velocità nei calcoli?

Grazie.

Ultima modifica effettuata da Carlo il 14/12/2023 alle 19:36


in programmazione tutto è permesso
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 7:42
Venerdì, 15/12/2023
Si ovviamente Carlo.
Ma dipende dalle circostanze.

un intero sono 4 bytes, fin quando si lavora con piccoli dati è più performante.
Solitamente si usano i bytes quando si lavora su dati inviati o da inviare alla rete.

Ma se in seguito, se si effettuano conversioni andando in overhead non ne vale la pena.




https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1389
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 16:25
Venerdì, 15/12/2023
Testo quotato

Postato originariamente da Thejuster:
un intero sono 4 bytes, fin quando si lavora con piccoli dati è più performante.



Ovvio ma mi chiedevo se il compilatore C# con i registri delle nuove CPU a 32 e 64 bit, e le memorie organizzate a Word, Dword e Qword, rendano l'uso dei byte come tipo di variabile inutile, perché poi il byte verrebbe infilato comunque in 2, 4 o 8 byte. Un po' come capita con i boolean che non vanno ad occupare 1 bit ma 8.

Diverso il discorso se scrivo, leggo e manipolo i byte andando a puntare direttamente la memoria facendo operazioni sui bit o sui byte...

Ultima modifica effettuata da Carlo il 15/12/2023 alle 18:04


in programmazione tutto è permesso
PM Quote