Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 12-12-2005, 16:11   #1
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
[CICLO 6/bis] Xmas Story 1

Dato che a Natale siamo tutti più buoni, oggi apriamo un ciclo "speciale", dalla durata superiore al solito, e che si chiuderà il 6 gennaio 2006 (giorno fino al quale siamo formalmente - ma non effettivamente - in pausa). Si tratterà di un ciclo differente perchè stavolta sarà aperto, e quindi è possibile che dei nuovi task vengano aggiunti in seguito. Quindi, sbirciate spesso questo post... potreste trovare qualche sorpresa di tanto in tanto

Storia: Storia di servizio. Quando la colonna centrale in cui le gemme entrano nell'area di gioco è piena, il gioco deve smettere di crearle, e deve far comparire al centro dello schermo una png con la scritta Game Over. Occorre anche fare in modo che, quando viene premuto un tasto direzionale (sinistra o destra) mentre l'altro opposto è già premuto, venga eliminata l'incertezza sulla colonna di posizionamento della gemma, che deve restare fissa nella colonna in cui si trovava un istante prima della pressione del tasto contrastante.
To be continued...

Punti cardine da tenere a mente durante i lavori:
  • Mai fare a gara a chi finisce il task per primo, meglio procedere con calma, altrimenti perderemo molto più tempo in seguito
  • Evitiamo di complicarci la vita, esiste di certo una soluzione più semplice di quella che abbiamo pensato di implementare
  • MAI aggiungere elementi non richiesti esplicitamente dai task: se mai serviranno, se ne parlerà nelle prossime storie
  • Comunichiamo il più possibile, se qualcosa non è chiaro discutiamone tutti i dettagli fino ad eliminare ogni dubbio, anche il più insignificante
  • Postare sempre la test list PRIMA di mettere mano al codice
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.

Ultima modifica di Jocchan : 13-12-2005 alle 12:03.
Jocchan è offline  
Old 12-12-2005, 16:50   #2
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Ecco i task per il ciclo natalizio.

Task:
Xmas.1.1: 71104:
Interrompere l'inserimento di nuove gemme quando la colonna centrale si riempie dopo di che si deve mostrare la scritta "Game Over" all'interno della griglia.
Xmas.1.2: cisc: 3 giorni
Aggiungere un ritardo di 300 millisecondi tra l'istante in cui la gemma si ferma e la creazione di una nuova gemma.
Xmas.1.3: cionci: 2 giorni
Ignorare la pressione del tasto direzionale finche quello con direzione opposto rimane premuto.
Xmas.1.4: Ufo13: completo
Portare a 50 millisecondi il repeat delay dopo la prima volta che è stato superato. E riportarlo al suo valore originale quando il tasto viene rilasciato.

ciao

Ultima modifica di VICIUS : 16-12-2005 alle 12:38.
VICIUS è offline  
Old 12-12-2005, 17:11   #3
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Specifico meglio il task 3 per evitare incomprensioni.
Attualmente, se tengo premuto un tasto direzionale (ad esempio destra), ed in seguito premo quello opposto (in questo caso sinistra) senza rilasciare il precedente, spesso la gemma, prima di continuare la sua caduta senza spostarsi lateralmente, ha un comportamento imprevedibile: può rimanere nella stessa colonna, finire in una adiacente, oppure spostarsi temporaneamente e tornare in quella iniziale.
Lo scopo del task è fare in modo che questo non avvenga, e che - finchè entrambi i tasti restano premuti - la gemma rimanga nella stessa colonna, e continui a cadere in questa, senza incertezze (che, nella foga del gioco vero e proprio, possono portare a un posizionamento errato).
La necessità di apportare questa correzione nasce dalla possibilità che il giocatore cambi idea all'ultimo secondo, e decida di posizionare la gemma da un'altra parte: questo evento può comportare la pressione contemporanea di due direzioni contrastanti, e non possiamo permetterci di avere imprecisioni in questa circostanza
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline  
Old 12-12-2005, 17:52   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
UAO LA STORIA DI NATALE, A ME A ME!!!
li voglio fare tutti io!!!

comincio col primo ^^
dubbi: la scritta "Game Over" come ce la scrivo? c'è qualche texture? e a che coordinate la scrivo?
ora penso alla test list
71104 è offline  
Old 12-12-2005, 17:53   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Jocchan; mi puoi spiegare emglio il problema che vuoi risolvere ?

a) pressione continua del tasto a dx...pressione del tasto sx, la gemma si deve fermare
b) pressione contemporanea di entrambi i tasti la gemma deve restare ferma...
cionci è offline  
Old 12-12-2005, 17:56   #6
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da 71104
UAO LA STORIA DI NATALE, A ME A ME!!!
li voglio fare tutti io!!!

comincio col primo ^^
dubbi: la scritta "Game Over" come ce la scrivo? c'è qualche texture? e a che coordinate la scrivo?
ora penso alla test list
Jocchan fra un po prepara la texture tu non devi far altro che metterla al centro della griglia.

ciao
VICIUS è offline  
Old 12-12-2005, 18:02   #7
cisc
Senior Member
 
L'Avatar di cisc
 
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
volevo fare la stessa domanda di cionci, cmq, vorrei prenotarmi per il Xmas.1.2, tempo 3 giorni (meglio essere larghi)
__________________
GNU MyServer Wants YOU!!
We live thinking we will never die. We die thinking we had never lived. Jason Becker
cisc è offline  
Old 12-12-2005, 18:08   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da cisc
volevo fare la stessa domanda di cionci,
Anche perchè risolvendone uno si cambia l'altro...
Risolvendo il problema a)...se si premono entrambi i tasti la gemma si sposta nella cella corrispondente al tasto premuto prima fra i due (se la pressione va a cavallo fra due polling)

Al massimo possiamo lasciare il b) com'è ora e risolvere il problema a)...
cionci è offline  
Old 12-12-2005, 18:11   #9
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Texture committata.

Per il problema della pressione contemporanea, si tratta solo dell'incertezza che si ha quando si preme un tasto opposto a quello già in pressione.
La gemma ogni tanto o si sposta di una colonna, e non deve accadere, oppure si sposta e torna nella precedente.
In realtà bisogna fare in modo che, quando si preme il secondo tasto, oltre a quello premuto, la gemma non abbia questa incertezza.
Se sto tenendo premuto destra e, quando sono nella casella 4, inizio a tenere premuto anche sinistra, la gemma deve continuare a cadere nella casella 4 fino a quando non rilascio uno dei due pulsanti.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline  
Old 12-12-2005, 19:31   #10
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
ho letto il codice attuale e riflettuto, e per la cronaca mi sono anche fatto consigliare da Jocchan; inoltre mi sono fatto un panino con insalata e mortazza, due solitari di Windows, una partita a campo minato, fumato una sigaretta, guardato in aria, fatto una cosa che non si dice, ed infine rieccomi qua sul forum

il problema è il seguente: il codice per catturare l'eccezione e visualizzare uno sprite con scritto "Game Over" dove lo metto, in Grid, in Game o in una classe apposta?

Jocchan dice Grid e io mi trovo d'accordo...

questo è il test che ho fatto (si troverebbe in TestGrid):
Codice:
    public void testGridStops()
    {
        grid.insertGem(1, 4, gem1);
        grid.getGemUnderControl().dropGem();
        grid.insertGem(0, 4, gem2);
        try
        {
            grid.update();
        }
        catch(IllegalArgumentException e)
        {
            fail("Grid.update is trying to put other gems");
        }
    }
eventualmente poi potrei anche creare una nuova classe GameOverException in modo tale che insertNewGem cattura la IllegalArgumentException causata dall'inserzione di una gemma quando non c'è spazio e la converte lanciando una GameOverException.

poi magari la test listi si potrebbe completare con un test per verificare col MockEngine che Grid.update, una volta catturata l'eccezione, disegni lo sprite "Game Over".
71104 è offline  
Old 12-12-2005, 19:45   #11
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da 71104
ho letto il codice attuale e riflettuto, e per la cronaca mi sono anche fatto consigliare da Jocchan; inoltre mi sono fatto un panino con insalata e mortazza, due solitari di Windows, una partita a campo minato, fumato una sigaretta, guardato in aria, fatto una cosa che non si dice, ed infine rieccomi qua sul forum
Ma la test list non include una descrizione dettagliata delle tue sessioni onaniste

Quote:
il problema è il seguente: il codice per catturare l'eccezione e visualizzare uno sprite con scritto "Game Over" dove lo metto, in Grid, in Game o in una classe

Jocchan dice Grid e io mi trovo d'accordo...
apposta?
Allora prima di mettere dell'altro codice in Grid, devi avere un'ottima ragione, ma proprio ottima, e spiegarcela dettagliatamente e poi giustificarla e poi, quando hai finito, devi pensare di nuovo se per caso non c'e' una soluzione migliore.
Tradotto: non mettere nulla in Grid se non strettamente necessario ma anche di piu'.

Quote:
eventualmente poi potrei anche creare una nuova classe GameOverException in modo tale che insertNewGem cattura la IllegalArgumentException causata dall'inserzione di una gemma quando non c'è spazio e la converte lanciando una GameOverException.
Non mi piace come idea, perche' le eccezioni servono solo per comunicare condizioni eccezionali nell'esecuzione del programma, ovvero condizioni che non dovrebbero mai accadere in una normale esecuzione (sono per l'appunto eccezionali). Il Game Over e' una condizione normale alla fine del gioco, quindi quest'informazione non andrebbe veicolata per mezzo di un'eccezione.
fek è offline  
Old 12-12-2005, 21:12   #12
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
prendo il secondo task
Ufo13 è offline  
Old 12-12-2005, 22:30   #13
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Quote:
Originariamente inviato da Ufo13
prendo il secondo task
E' già prenotato da cisc
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline  
Old 13-12-2005, 00:24   #14
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Allora il quarto
Ufo13 è offline  
Old 13-12-2005, 02:37   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Jocchan
Se sto tenendo premuto destra e, quando sono nella casella 4, inizio a tenere premuto anche sinistra, la gemma deve continuare a cadere nella casella 4 fino a quando non rilascio uno dei due pulsanti.
Ok...allora vedo di mantenere la situazione com'è per la situazione b) e correggo la situazione a)...
cionci è offline  
Old 13-12-2005, 09:58   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mi prendo 2 giorni di tempo...

L'acceptance test list sarà come segue:

- se un tasto freccia è premuto continuamente e premo il tasto freccia opposta la gemma deve stare ferma

- se due tasti freccia vengono premuti due tasti freccia e la pressione risulta a cavallo fra due aggiornamenti la gemma deve tornare alla posizione iniziale (quindi mantennedo la condizione attuale)

Ultima modifica di cionci : 13-12-2005 alle 11:37.
cionci è offline  
Old 13-12-2005, 11:37   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Test list per il task Xmas.1.3:
Codice:
    public void testLeftAndRightBothPressed()
    {
        grid.insertGem(2, 4, gem);
        grid.setGemUnderControl(gem);
        input.generateKey(KeyCode.vk_Left);
        input.generateKey(KeyCode.vk_Right);
        grid.reactToInput(input, timer);
        assertTrue("Gem may not move when Left & Right key are both pressed",
            grid.isGemAt(2, 4));
    }


    public void testLeftAndRightSequenceInTwoPollings()
    {
        grid.insertGem(2, 4, gem);
        grid.setGemUnderControl(gem);
        input.generateKey(KeyCode.vk_Left, timer.getTime());
        grid.reactToInput(input, timer);
        timer.advance(grid.getRepeatDelay() - 1);
        input.generateKey(KeyCode.vk_Right, timer.getTime());
        grid.reactToInput(input, timer);
        assertTrue("Gem may not move when Left & Right key are both pressed",
            grid.isGemAt(2, 4));
    }
    
    
    public void testLeftStillPressedAndRightPressed()
    {
        grid.insertGem(2, 4, gem);
        grid.setGemUnderControl(gem);
        input.generateKey(KeyCode.vk_Left, timer.getTime());
        grid.reactToInput(input, timer);
        timer.advance(grid.getRepeatDelay() + 1);
        input.generateKey(KeyCode.vk_Right, timer.getTime());
        grid.reactToInput(input, timer);
        assertTrue("Gem may not move when Left key is repeated & Right key is pressed",
            grid.isGemAt(2, 3));
        
    }
    
    
    public void testRightStillPressedAndLeftPressed()
    {
        grid.insertGem(2, 4, gem);
        grid.setGemUnderControl(gem);
        input.generateKey(KeyCode.vk_Right, timer.getTime());
        grid.reactToInput(input, timer);
        timer.advance(grid.getRepeatDelay() + 1);
        input.generateKey(KeyCode.vk_Left, timer.getTime());
        grid.reactToInput(input, timer);
        assertTrue("Gem may not move when Right key is repeated & Left key is pressed",
            grid.isGemAt(2, 5));        
    }
cionci è offline  
Old 13-12-2005, 12:04   #18
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Ma vi state mangiando quattro task al giorno voi? E' cosi' che mi piace, duri, cattivi e produttivi.

E per premiarvi, vi diamo altri task di Natale
fek è offline  
Old 13-12-2005, 13:33   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Fatto il commit del task Xmas.1.3
cionci è offline  
Old 13-12-2005, 14:00   #20
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Siete delle belve.

ciao
VICIUS è offline  
 Discussione Chiusa


Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Nasce l'albo degli influencer 'rilevanti...
Il Digital Networks Act è stato r...
ASUS ROG ha lanciato due nuovi monitor d...
I nuovi iPhone 18 Pro potrebbero present...
Una parte dei Galaxy S26 avrà chi...
Amazon permetterà agli autori ind...
Il caso Zuckerberg a Palo Alto: una scuo...
Texas contro Roblox: il procuratore gene...
Offerte auto da urlo su Amazon: da CarPl...
Windows 11 26H1 in arrivo fra pochi mesi...
Un Black Friday continuo a rilascio lent...
Redmi Pad Pro da 12,1" 2560x2600 pi...
Tesla Roadster rinviata (di nuovo): ora ...
Il nuovo TV premium 2025 Samsung OLED 4K...
Ecco una TV QLED da 55'' che costa 303€:...
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: 20:41.


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