Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-08-2006, 18: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, 22: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, 22: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, 09: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, 12: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, 14: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, 14: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, 18: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, 18: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, 18: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, 19: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, 17: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


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Meta lavora a un sistema di riconoscimen...
Il mercato smartphone potrebbe registrar...
Apple punterà sull'architettura c...
NASA Curiosity: i processi non biologici...
Sega conferma l'arrivo di tanti nuovi gi...
La serie POCO X8 è pronta al debu...
Apple conferma che l'arrivo della 'nuova...
Le vendite di Square Enix sono in netto ...
iPhone 17e si mostra in un video 'first ...
Il nuovo Xiaomi Watch 5 è pronto ...
Steam Deck è out of stock in dive...
Le migliori offerte Amazon del weekend, ...
PC più potente, meno spesa: su Amazon ta...
Amazon Haul: come fare acquisti 'pazzi' ...
Threads permetterà agli utenti di...
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: 22:22.


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