Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL debutta in Italia con il nuovo Tensor G6, lo Zoom Pro fino a 120x, il display Super Actua da 3600 nit e la new entry HiLight riservata ai modelli Pro: lo abbiamo provato in anteprima per diversi giorni prima del lancio commerciale, tra fotocamera generativa, ricarica ancora indietro rispetto ai rivali e un prezzo che parte da 1399 euro
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Con un semplice dialogo in linguaggio naturale e la potenza di una scheda video di fascia alta è possibile costruire software funzionante da zero, senza scrivere una riga di codice e senza inviare un solo byte dei propri dati a server esterni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-08-2006, 17:08   #1
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
[Java]Game Of Life, aiutatemi a progettarlo

Ciao a tutti
Vi espongo subito il mio problema: il 14 Settembre devo presentare un progetto-esame in Java e io ho scelto di fare Game of Life ( http://www.bitstorm.org/gameoflife/ ). C'è solo un problemone ... ovvero io non ho frequentato il corso per motivi che non stò qui a spiegarvi. Ho letto un pò le linee guida del Java, ma visto che il tempo stringe ho deciso di aprire questo topic nella speranza di ricevere un vostro aiuto. Non vi chiedo assolutamente di scrivermi le righe di codice, al massimo di correggere quelle che farò io e di darmi alcuni consigli.
Detto questo, partiamo con la descrizione del progetto. La consegna è la seguente:



Life applet: scrivere un'applet che rappresenti l'andamento della vita di una popolazione di individui monocellulari su una matrice in un universo toroidale, (rappresentato da una matrice A di dimensione m x n in cui gli elementi della prima riga si considerano adiacenti a quelli dell'ultima riga, e quelli della prima colonna adiacenti all'ultima) vivono microorganismi cellulari booleani (A[i,j]=true rappresenta che "esiste una cellula nella posizione i,j"). Inizialmente gli organismi possono essere casualmente inseriti dall'utente tramite mouse.
La vita della matrice si evolve di istante in istante secondo le seguenti regole:

1- Sesso ternario. Le cellule si riproducono attraverso una sessualità ternaria: se una casella vuota all'istante i è circondata ESATTAMENTE da 3 cellule, all'istante i+1 verrà generata una nuova cellula in tale casella.

2- Morte per isolamento. Se una cellula non è circondata da alcuna altra cellula, all'istante successivo essa muore per isolamento e quindi la corrispondente casella sarà vuota in tale istante.

3- Morte per sovrappopolazione. Se una cellula è circondata da 4 o più cellule essa muore per sovrappopolazione all'istante successivo.

Si considerino adiacenti alla casella le 8 caselle confinanti, anche in diagonale.
L'utente deve poter scegliere tramite un menu la dimensione della matrice.



Ora, se avete guardato il link postato a inizio topic potete notare che quel progetto rispecchia in gran parte quella che dovrà essere la mia consegna. Ovviamente NON ho intenzione di copiare alcuna riga di sorgente, anche perchè dovrò discutere in sede di esame come ho costruito il tutto.

Detto questo e fatte le dovute considerazioni nonchè ringraziamenti per essere arrivati a leggere fin quà, direi che posso iniziare con la prima domanda: come organizzare il tutto?


Io avevo pensato di dividere il progetto in due package, uno per la gestione della parte grafica e uno riguardante il motore del programma. Quindi, a grandi linee:

1) Package Motore

La logica del gioco suggerisce l'utilizzo di due matrici booleane (lasciando per adesso da parte la loro grandezza). Inizialmente l'oggetto matrice A conterrà solo 0 (ovvero il campo sarà privo di cellule) e posso scrivere una procedura che riempia a random le caselle. Una volta che ho una matrice con delle cellule posso scrivere una procedura che legga casella per casella e tramite alcuni if mi scriva in una seconda matrice B quali sarà lo stato successivo. La matrice A poi verrà azzerata e il ruolo da essa svolto precedentemente sarà ricoperto dalla matrice B.

2) Package Grafica

Il risvolto grafico sarà rappresentato da un pannello contenente m x n rettangolini che verranno riempiti o meno a seconda degli 0 e degli 1.


Per ora ho pensato a queste cose. Conto sul vostro aiuto e sulle vostre idee e vi chiedo un attimo di pazienza e del vostro tempo nell'aiutarmi.
Un grazie in anticipo a tutti colore replyeranno (vi stò facendo abbastanza pena? ).

Betto.
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 19-08-2006, 21:11   #2
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
potresti risparmiarti una matrice in questa maniera:

1)la matrice non la fai di booleani, ma la fai di oggetti. Ad esempio l'oggetto cellula. L'oggetto conterrà il booleano.


2)usi il pattern command sull'oggetto cellula. Praticamente ti scorri una volta la matrice, analizzi ogni cellula e assegni a ogni cellula l'azione da fare(rappresentata da una classe)(cancellare/rimanere/nascere).
Poi ti riscorri la matrice e esegui le varie azioni(resettandole).

Questo vuol dire scorrere 2 volte la matrice, ma guadagni spazio.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 19-08-2006, 21:24   #3
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Quote:
Originariamente inviato da thebol
potresti risparmiarti una matrice in questa maniera:

1)la matrice non la fai di booleani, ma la fai di oggetti. Ad esempio l'oggetto cellula. L'oggetto conterrà il booleano.


2)usi il pattern command sull'oggetto cellula. Praticamente ti scorri una volta la matrice, analizzi ogni cellula e assegni a ogni cellula l'azione da fare(rappresentata da una classe)(cancellare/rimanere/nascere).
Poi ti riscorri la matrice e esegui le varie azioni(resettandole).

Questo vuol dire scorrere 2 volte la matrice, ma guadagni spazio.
Quella della matrice di oggetti era un'idea che avevo inizialmente. Il problema è: conviene? Non sarebbe meno costoso creare una semplice matrice di booleani?
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2006, 08:34   #4
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da :.Blizzard.:
Quella della matrice di oggetti era un'idea che avevo inizialmente. Il problema è: conviene? Non sarebbe meno costoso creare una semplice matrice di booleani?
da un punto di vista "minimalista" conviene lavorare con oggetti primitivo. Ma è meno maleabile, e il costo per realizzare un oggetto e quasi insignificante.

In piu creando un oggetto, puoi modificarlo.

Ad esempio a un oggetto puoi assegnare uno stato(ce o non cè la cellula e delle azioni), o un comportamento(il pattern command di prima).

In questa maniera riescia a separare le varie azioni che puoi fare su una cella in diverse classi
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2006, 11:29   #5
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Ok ... cmq ... per ora stò seguendo un'altra strada e ho un problema:

Data una matrice A[][] di tipo boolean, devo riempirla a random con valori true e false. Tralasciando il discorso dell'usare due cicli annidati, esiste nella libreria java qualche procedura che esegua una simile operazione?
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2006, 13:13   #6
Barbalbero
Registered User
 
Iscritto dal: Aug 2006
Messaggi: 305
Quote:
Originariamente inviato da thebol
Questo vuol dire scorrere 2 volte la matrice, ma guadagni spazio.
In ogni caso dovresti scorrere una volta entrambe le matrici, quindi l'idea di thebol, a mio avviso, è molto valida, ed è più elegante.
Barbalbero è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2006, 13:16   #7
Barbalbero
Registered User
 
Iscritto dal: Aug 2006
Messaggi: 305
Quote:
Originariamente inviato da :.Blizzard.:
Data una matrice A[][] di tipo boolean, devo riempirla a random con valori true e false. Tralasciando il discorso dell'usare due cicli annidati, esiste nella libreria java qualche procedura che esegua una simile operazione?
Secondo me nel tempo che cerchi questa fantomatica procedura, hai già scritto dieci volte i due cicli for annidati!!!
Barbalbero è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2006, 17:10   #8
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
se vi serve uno spunto ho trovato il codice
Spoiler:
http://www.bitstorm.org/gameoflife/code/
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2006, 17:41   #9
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Quote:
Originariamente inviato da AngeL)
se vi serve uno spunto ho trovato il codice
Spoiler:
http://www.bitstorm.org/gameoflife/code/

Ti ringrazio, l'ho osservato attentamente ed è troppo complicato per i miei gusti e per le kmie capacità. Ad ogni modo ho appena terminato la classe Griglia. Il gioco è perfettamente funzionante su carta ... nel senso che su console stampo prima una matrice A con valori random, poi un'altra matrice che rappresenta la sua evoluzione secondo le regole del gioco e ... funziona!
Devo ancora aggiustare alcune cosette e poi inizio a progettare la gui.
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2006, 17:44   #10
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
complimenti!
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2006, 18:40   #11
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Eccomi di nuovo qua. Il progetto ormai volge verso l'ultima fase di completamento ... solo che ho bisogno di un aiuto adesso.
Mancano tre cose da completare.

1- Possibilità di creare nuove cellule cliccando con il mouse sulla relativa casella.
2- Creare un tasto "Start/Stop" che una volta cliccato crei la nuova generazione di cellule a ciclo infinito fino a quando non lo riclikko.
3- Creare una slide bar che regoli la velocità con cui viene rappresentata la nuova generazione

Ora come ora l'unica cosa che sono riuscito a fare è il tasto "Step" che mi calcola direttamente una nuova generazione ogni volta che clikko (dopo aver generato con un tasto "Casuale" una colonia di cellule random visto che per ora nn è possibile inserirla tramite mouse).
Avete qualche dritta da darmi?
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2006, 16:20   #12
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
nessuno nessuno?
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Linktour Alumi, test drive: la microcar ...
Dopo l'atterraggio, il razzo spaziale ci...
Godox lancia due accessori per fotografi...
Nova Lake-S da 28 core a 296 W: pi&ugrav...
Adobe Firefly rende disponibili per tutt...
Si torna a lavoro, e torna disponibile E...
PlayStation 6 e Xbox Project Helix verso...
Oltre un terzo delle pagine web pubblica...
Bosoni e fermioni nella stessa goccia: i...
Guerra alle targhe polacche: diventer&ag...
LinkedIn, oltre un milione di utenti ha ...
Odissea oltre 1,34 miliardi: nessun viet...
Il robot impara gesti osservando per poc...
Windows 11, chi ha rotto i giochi? Micro...
Golden Axe diventa una serie animata com...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:32.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v