Italian Animazione dadi

udg

Expert
Licensed User
Longtime User
Ciao a tutti.
Mi chiedevo se qualcuno di voi avesse già pronta una bella animazione di lancio dadi. Niente di clamoroso, basta vedere due dadi che rotolano mostrando le varie facce e dopo pochi secondi si fermano.
Se fosse una classe, sarebbe bello poter fornire le immagini (o i testi nel caso di dadi utilizzati in senso "verbale") in fase di inizializzazione.
Altro plus potrebbe essere il numero di facce (6 o 12)

In alternativa, vedrei bene anche la "ruotona della fortunona" (decisamente più facile). Una o due ruotone e tasto/i che imprimono la forza di rotazione (ho già qualcosa del genere per il gioco della bottiglia).

Buona domenica
 

Star-Dust

Expert
Licensed User
Longtime User

 

Star-Dust

Expert
Licensed User
Longtime User
Comunque se è per B4A creare un animazione 3D con i comandi nativi non è complicato.

 

udg

Expert
Licensed User
Longtime User
Ciao, sapevo che qualcosa l'avevi già realizzata!
Forse, una versione ridotta e specializzata della View3D potrebbe avere un buon successo.
Come ruotona, ricordavo sia quella di Klaus che la tua.
Non mi ricordo cosa abbia utilizzato a suo tempo per la rotazione della bottiglia, ma direi qualcosa di banale (anche perchè era in 2D). Direi che allora mi premeva di più correlare la pressione del tasto (il tempo di pressione) con la forza da imprimere (e quindi la durata di rotazione) rispettando un minimo le leggi della fisica.

In generale, dire che su tutto ciò che sia grafico (anche solo colori e font) io sia moolto carente (o fortemente disinteressato..eheh) resta un educato eufemismo :)
 

Star-Dust

Expert
Licensed User
Longtime User
Non mi ricordo cosa abbia utilizzato a suo tempo ...

.....o fortemente disinteressato.....
Ho risposto troppo in tardi? hai già trovato una soluzione?

Ma parliamo di B4A, b4J oppuro b4I?
 

udg

Expert
Licensed User
Longtime User
No, anzi. Ti ringrazio per i riferimenti. Il "disinteressato" è relativo alla mia scarsa, molto scarsa, attitudine verso tutto ciò che sia "coreografico"... non hai idea dei colori imbarazzanti che posso attribuire ai vari oggetti (l'unico scopo di colorarli è poter distinguere visivamente dove inzia uno e finisce l'altro..).

All'origine c'era l'idea di un qualcosa che permettesse giochi di società molto semplici ma anche molto flessibili.
I giocatori (o la logica delle app) definiscono le label che appariranno sulle facce dei due dadi, lanciano i dadi e, al termine dell'animazione, ottengono il responso.
La durata dell'animazione potrebbe dipendere, come per il caso bottiglia su accennato, al tempo di pressione di un tasto o a dai parametri di una gesture.

Da cui, se tu utilizzassi la View3D in modo da avere una coppia di dadi, curando tutta la parte animazione, avremmo una classe generica cui passare pochi parametri di inizializzazione (le 12 label (o immagini) e la durata, ad esempio; eventualmente la configurazioen di partenza delle facce), lasciando alla logica dell'app il resto.
Pensavo a B4A, ma se funziona anche su B4i perché no?

Quindi, in sostanza, si tratta di avere una classe specializzata in grado di far "rotolare" due dadi generici per un certo tempo.

ps: non ho uno scopo ben preciso; contemporaneamente sto giocando con un widget di previsioni meteo..e magari mi verrà in mente altro..(il lockdown è lungo e fa danni..ehehe)
 

Star-Dust

Expert
Licensed User
Longtime User
No, anzi. Ti ringrazio per i riferimenti. Il "disinteressato" è relativo alla mia scarsa, molto scarsa, attitudine verso tutto ciò che sia "coreografico"... non hai idea dei colori imbarazzanti che posso attribuire ai vari oggetti (l'unico scopo di colorarli è poter distinguere visivamente dove inzia uno e finisce l'altro..).
neanche io sono molto attratto, ero abituato al testo semplice sullo schermo a fosfori verdi... ma per un motivo inspiegabile le viste mi riescono meglio di altro codice... sfrutto l'onda...

Pensavo a B4A, ma se funziona anche su B4i perché no?
In B4J le rotazioni 3d sulle viste non sono previste, solo rotazioni sull'asse Z, come in b4x. Ma sono previste rotazioni 3d di immagini su pannello grafico (here)
B4I esiste la possibilità di ruotare in 3d ma non ti fa scegliere il punto pivot che rimane fisso al centro della vista. Ed è un problema in in Dado che il punto pivot è al centro della vista (x,y) ma non ti fa scendere sul piano Z. In un dado la faccia fronta e quella dietro ruotano su un PIVOT sul piano Z esterno alla vista.

Ovviamente se non usi istruzioni native (come la mia libreia 3D) non hai questi limiti, ma non ti può gestire oggetti troppo grandi con migliaia di punti e centinaia di immagini e facce.

Non credo che tu voglia usare OpenGL, quindi si pensa a una soluzione più semplice
 

udg

Expert
Licensed User
Longtime User
Decisamente più semplice. Dovrebbe essere al limite del "banale". Dici che la View3D potrebbe non essere la soluzione migliore?
Aggiungo, in ordine sparso, altre idee per quello che potrebbe risultare un componente di successo ($$$$).

In fase di inizializzazione:
- specificare quanti dadi si desiderano (tra 1 e max; nel mio caso specificherei 2)
- specificare il numero di facce per ciascun dado (va bene anche se tutti hanno lo stesso numero di facce); magari scegliendo tra opzioni predefinite (es. 6, 10 e 12)
- specificare il contenuto di ciascuna faccia e di conseguenza la configurazione iniziale (immagini o stringhe; le immagini probabilmente saranno più gradite, ma a me vanno bene anche delle diciture che la view applicherà sulle label che ricoprano le facce). Se sono immagini, queste "comprendono" anche il colore dei dadi
- specificare durata animazione
- specificare se i dadi (in caso siano più di uno) eseguano tutti la stessa sequenza di "rimbalzi" o se questa (come penso sia meglio) sia casuale su ognuno. Eventualmente prevedere un valore "random seed" che l'app possa settare in modo da avere una specifica animazione di rimbalzi
- specificare se un eventuale comando "lancia ancora" (o il solo "lancia") parta dalla config iniziale delle facce o dall'ultima ottenuta

A quel punto, all'activity chiamante basterà mettere a disposizione un panel su cui attivare la custom view e chiamare quel paio di funzioni per animare il tutto. Sulla callback, leggerà il valore finale della/e faccia/facce risultante/i.

Hmmm, come spesso accade, è partita come un'idea che sembrava banale e più ci si ragiona e più si complica.. Meno male che le vacanze natalizie sono lunghe..e il lockdown anche di più..eheh
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
La view3D è la soluzione pronta quindi semplice, ma non sai cosa c'è dentro il cofano.
pensavo volessi qualcosa per smanettarci dentro.

Si può fare tutto quello che chiedi ma devi scrivere codice per rimbalzi, giri ecc
 

Star-Dust

Expert
Licensed User
Longtime User
Ae vuoi appena posso ti faccio una versione ridotta della libreria 3D solo per i Dati.
 

Star-Dust

Expert
Licensed User
Longtime User
Eh tanto @udg dovrebbe farle a runtime, per poter decidere cosa disegnare o scrivere sulle facce.

Troppo impegnativo importare anche le texture? O pensi che non ne valga la pena (dipende anche da quanti abbiano acquistato la tua libreria)
Non ho la documentazione completa dei formati. Molto complicato farlo. Fatto in B4X diventerebbe troppo lento.

Di solito sono fatte in C queste librerie per guadagnare in velocità oltre ad alcuni trucchi matematici che non è possibile realizzare in b4x
 

Star-Dust

Expert
Licensed User
Longtime User
Anche per me la grafica è arabo (quindi non so a cosa ti servirebber quella funzione).
Cmq, me pare ci sia un sorgente, al link wikipedia, "traducibile" in B4X, no?
Credo che serva proprio per le texture e sorgenti di luce , quindi colori, riflessi e ombre.
Guarda bene il codice e capisci che non si può tradurre. Leggi la spiegazione ti chiarirà ogni dubbio
 

Elric

Well-Known Member
Licensed User

Ho già reagito con "WOW" ma volevo ribadirlo. Anzi, per dirla alla Quake III Arena* - come ogni tanto capitava: Impressive!

* Dal link wikipedia
l'algoritmo fu usato per la prima volta in questo videogioco.
 

Star-Dust

Expert
Licensed User
Longtime User
Tutto creato con codice B4X. Niente immagini
dado.gif



Sono semplici calcoli trigonometrici elementari:
1609691132227.png
 
Last edited:
Top