Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 31-10-2005, 21:19   #1
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
[CICLO 4] Storia 1

Storia: Introduzione di una temporizzazione fissata per il movimento della gemma.
Occorre fare in modo che, alla rapida pressione delle frecce direzionali sinistra e destra, la gemma si sposti di una e una sola casella. Tenendo premuti i tasti in questione, la gemma continuerà a spostarsi nella direzione corrispondente di una casella per ogni decimo di secondo, a meno di collisioni con i bordi laterali.
Come in precedenza, alla pressione contemporanea dei tasti sinistra e destra, la gemma non dovrà spostarsi in nessuna delle due direzioni, e dovrà comunque continuare la sua caduta verticale (a meno di collisione con il bordo inferiore).
In secondo luogo, come sfondo della schermata, l'engine del gioco disegnerà una immagine fissa in jpg, di dimensione 800x600 e profondità di colore 24 bit.

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
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline  
Old 01-11-2005, 14:18   #2
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Task:
4.1.1: Disegnare l'immagine Jpg dello sfondo alle coordinate 0x0 di dimensione 800x600 pixel dietro a tutti gli altri elementi presenti nella finestra. (cover: completo)
4.1.2: Creare un timer molto preciso che sia in grado di misurare il trascorrere del tempo con una precisione pari ad almeno 5 millesimi di secondo. (BlueDragon: completo)
4.1.3: Sincronizzare il disegno di ogni frame in ad 1/50 di secondo aggiungendo un loop che attende il termine dei 20 millisecondi previsti per il disegno di un intero frame prima di lasciare il controllo. (71104: completato)
4.1.4: Input deve ignorare la pressione di tasti uguali e consecutivi se l'intevallo tra loro è inferiore ad 1/50 di secondo segnalando solo la pressione del primo. (^TiGeRShArK^: completato)
4.1.5: Refactoring. Aggiungere a drawable la capacita di specificare il layer su cui disegnare i vari oggetti. (VICIUS: completo)
4.1.6: Refactoing della classe Game. spostare tutta la creazione nel costruttore e creare un gameLoop come si deve.


ciao

Ultima modifica di VICIUS : 02-11-2005 alle 23:45.
VICIUS è offline  
Old 01-11-2005, 14:47   #3
BlueDragon
Senior Member
 
L'Avatar di BlueDragon
 
Iscritto dal: Dec 2002
Messaggi: 418
Quote:
Originariamente inviato da VICIUS
Task:
4.1.3: Sincronizzare il disegno di ogni frame in ad 1/50 di secondo aggiungendo un loop che attende il termine dei 20 millisecondi previsti per il disegno di un intero frame prima di lasciare il controllo.
Scusa Vicius ma perché c'è questo task che impone un framerate? In quello che ha scritto Jocchan non c'è e non abbiamo bisogno di vincolare il disegno dei frame ad una certa frequenza per ottenere la temporizzazione del movimento della gemma.

Inoltre, nel 4.1.4, l'intervallo da ignorare non è un 1/10? Jocchan ha parlato di spostamenti di massimo 1 casella ogni decimo di secondo, non ogni 50esimo

Scusa se rompo ma meglio chiarire subito
BlueDragon è offline  
Old 01-11-2005, 14:51   #4
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
La tua obiezione e' giusta.

La Storia non e' implementabile esattamente come scritta, quindi abbiamo deciso di cambiare alcuni dettagli per semplificarci la vita nei task. Uno di questi dettagli e' il tempo di spostamento da una casella e l'altra che invece di essere 1/10 di secondo esatto, sara' qualcosa di leggermente diverso. Alla fine del Ciclo 4 il Customer decidera' se il tempo sara' di suo gradimento oppure vorra' delle variazioni.

Dato questo, abbiamo deciso che sara' piu' semplice implementare quanto richiesto sincronizzando il gioco al cinquantesimo e abbiamo aggiunto il task relativo.
fek è offline  
Old 01-11-2005, 15:25   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
io vorrei suggerire un'altra maniera (secondo me migliore) di temporizzare il gioco, premesso che il gioco deve essere temporizzato perché non può girare a velocità diverse su computers diversi.
secondo me Input deve tenere un flag per ogni tasto che intercetta che indica se il tasto al momento è alzato o abbassato (e questo già succede) e poi bisogna introdurre un timer (non so come si possa fare in Java...) con una certa frequenza e reagire ad ogni scatto del timer reagendo alla pressione dei tasti attualmente abbassati e disegnando un frame. non ho capito se questo corrisponde a quello che si è progettato in questa storia, ma non mi sembra...
inoltre sarebbe anche bene implementare qualcosa di simile a quello che succede in Win32 coi messaggi WM_TIMER, i quali non vengono immessi nella coda se il timeout è scaduto ma l'ultimo messaggio della coda è un altro WM_TIMER che l'applicazione deve ancora processare.
secondo me la Sleep deve essere evitata come la peste, a meno che non si lavori in multithreading.
71104 è offline  
Old 01-11-2005, 15:59   #6
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Quote:
Originariamente inviato da BlueDragon
Scusa Vicius ma perché c'è questo task che impone un framerate? In quello che ha scritto Jocchan non c'è e non abbiamo bisogno di vincolare il disegno dei frame ad una certa frequenza per ottenere la temporizzazione del movimento della gemma.

Inoltre, nel 4.1.4, l'intervallo da ignorare non è un 1/10? Jocchan ha parlato di spostamenti di massimo 1 casella ogni decimo di secondo, non ogni 50esimo

Scusa se rompo ma meglio chiarire subito
In questo dettaglio sono stato volutamente vago, ho solo dato un tempo di riferimento, in modo che poi fosse possibile scegliere l'implementazione più adeguata per la temporizzazione.

In questo caso, anche se apparentemente un pò ci allontaniamo dalla storia, alla fine il risultato sarà molto simile a quello desiderato (a parte il tempo che - come ho detto poco fa - è solo indicativo).

Il customer non sa in che modo sono fisicamente implementate le varie feature, ed al termine del ciclo si limiterà a valutare se il risultato coincide o no con quello desiderato
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline  
Old 01-11-2005, 16:10   #7
cover
Senior Member
 
L'Avatar di cover
 
Iscritto dal: May 2002
Città: Milan
Messaggi: 572
Quote:
Originariamente inviato da VICIUS
Task:
4.1.1: Disegnare l'immagine Jpg dello sfondo alle coordinate 0x0 di dimensione 800x600 pixel dietro a tutti gli altri elementi presenti nella finestra.
Ci provo.. ^^
Primo task, non mi picchiate se non va bene qualcosa
Tempo previsto: 1 giorno
cover è offline  
Old 01-11-2005, 16:18   #8
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
La jpg sarà il file back000.jpg, che in questo momento Antares88 sta committando.

@Vicius: per favore potresti aggiungere questo task, prima del 4.1.1?
Task 4.1.0: Creare uno sfondo 800x600 in jpg, con nome del file back000.jpg
Il task in questione è già completato da Antares
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline  
Old 01-11-2005, 16:27   #9
BlueDragon
Senior Member
 
L'Avatar di BlueDragon
 
Iscritto dal: Dec 2002
Messaggi: 418
Quote:
Originariamente inviato da VICIUS
Task:
4.1.2: Creare un timer molto preciso che sia in grado di misurare il trascorrere del tempo con una precisione pari ad almeno 5 millesimi di secondo.
Mi prenoto per il 4.1.2.

La risposta è System.currentTimeMillis().
Va bene? Ho vinto qualche cosa?

Dalla documentazione Java, classe System:
Quote:
public static long currentTimeMillis()

Returns the current time in milliseconds. Note that while the unit of time of the return value is a millisecond, the granularity of the value depends on the underlying operating system and may be larger. For example, many operating systems measure time in units of tens of milliseconds.
See the description of the class Date for a discussion of slight discrepancies that may arise between "computer time" and coordinated universal time (UTC).


Returns:
the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.
See Also:
Date
L'unico limite è il sistema operativo sottostante, ma non credo sia un limite aggirabile in altro modo..
BlueDragon è offline  
Old 01-11-2005, 16:40   #10
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da BlueDragon
L'unico limite è il sistema operativo sottostante, ma non credo sia un limite aggirabile in altro modo..
in Windows esistono anche i timers ad alta risoluzione che arrivano ben al di sotto la decina di millisecondi; se alla Sun vedono la decina di ms come un limite sicuramente avranno usato i timers ad alta risoluzione per implementare la JVM per Windows.
71104 è offline  
Old 01-11-2005, 16:55   #11
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da cover
Ci provo.. ^^
Primo task, non mi picchiate se non va bene qualcosa
Tempo previsto: 1 giorno
Ok. è tutto tuo.

ciao
VICIUS è offline  
Old 01-11-2005, 16:56   #12
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da Jocchan
La jpg sarà il file back000.jpg, che in questo momento Antares88 sta committando.

@Vicius: per favore potresti aggiungere questo task, prima del 4.1.1?
Task 4.1.0: Creare uno sfondo 800x600 in jpg, con nome del file back000.jpg
Il task in questione è già completato da Antares
NO. fek a detto che non li devo scrivere i task di voi grafici. Siete troppo veloci

ciao
VICIUS è offline  
Old 01-11-2005, 16:56   #13
BlueDragon
Senior Member
 
L'Avatar di BlueDragon
 
Iscritto dal: Dec 2002
Messaggi: 418
Quote:
Originariamente inviato da 71104
in Windows esistono anche i timers ad alta risoluzione che arrivano ben al di sotto la decina di millisecondi; se alla Sun vedono la decina di ms come un limite sicuramente avranno usato i timers ad alta risoluzione per implementare la JVM per Windows.
Sì, infatti usando currentTimeMillis su Windows mi segnala fino al singolo millisecondo
BlueDragon è offline  
Old 01-11-2005, 16:59   #14
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da BlueDragon
Mi prenoto per il 4.1.2.

La risposta è System.currentTimeMillis().
Va bene? Ho vinto qualche cosa?

Dalla documentazione Java, classe System:

L'unico limite è il sistema operativo sottostante, ma non credo sia un limite aggirabile in altro modo..
Vediamo che cosa scappa fuori.

ciao
VICIUS è offline  
Old 01-11-2005, 17:02   #15
Jocchan
Senior Member
 
L'Avatar di Jocchan
 
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
Quote:
Originariamente inviato da VICIUS
NO. fek a detto che non li devo scrivere i task di voi grafici. Siete troppo veloci

ciao
Più che veloci, ci siamo portati avanti con il lavoro
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam.
Jocchan è offline  
Old 01-11-2005, 17:02   #16
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da BlueDragon
Mi prenoto per il 4.1.2.

La risposta è System.currentTimeMillis().
Va bene? Ho vinto qualche cosa?

L'unico limite è il sistema operativo sottostante, ma non credo sia un limite aggirabile in altro modo..
Chiaramente non e' un task testabile, pero' voglio vedere una classe Wrapper che ci permetta, se necessario, di cambiare l'implementazione del Timer. Overengineering? No, Facade Pattern dai Design Pattern

Il metodo getTime() della classe deve darmi il tempo in millisecondi passato dalla creazione della sua istanza.
fek è offline  
Old 01-11-2005, 17:04   #17
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da 71104
io vorrei suggerire un'altra maniera (secondo me migliore) di temporizzare il gioco, premesso che il gioco deve essere temporizzato perché non può girare a velocità diverse su computers diversi.
Per ora andiamo avanti con la soluzione richiesta dai task per due motivi:
1) perche' l'ho gia' fatto almeno venti volte e so che funziona
2) perche' so che funziona perche' l'ho gia' fatto almeni venti volte

Ed infine perche' sono letteralmente tre righe di codice da implementare, e' semplice, e non richiede nessuna infrastruttura per registrare callback e scatenare eventi di sincronizzazione.
fek è offline  
Old 01-11-2005, 17:15   #18
cover
Senior Member
 
L'Avatar di cover
 
Iscritto dal: May 2002
Città: Milan
Messaggi: 572
Quote:
Originariamente inviato da VICIUS
Task:
4.1.1: Disegnare l'immagine Jpg dello sfondo alle coordinate 0x0 di dimensione 800x600 pixel dietro a tutti gli altri elementi presenti nella finestra. (cover: 1 giorno)

Test ( ):

Codice:
public class TestBackground extends TestCase
{   
    private Background background;
    
    public void setUp()
    {
        background = new Background("back000", ".jpg");
    }
    
    public void testBackgroundPosition()
    {
        assertEquals("X origin must be 0",
            0F, background.getX());
        assertEquals("Y origin must be 0",
            0F, background.getY());
    }
    
    public void testBackgroundWidthAndHeight()
    {
        assertEquals("Width must be equal to the width of the window",
            Game.getWindowWidth(), background.getWidth());
        assertEquals("Height must be equal to the height of the window",
            Game.getWindowHeight(), background.getHeight());
    }
    
    public void testBackgroundSpriteNotNull()
    {
        assertNotNull(background.getSprite());
    }
    
    public void testDraw()
    {
        MockEngine engine = new MockEngine();
        
        background.draw(engine);
        assertEquals(1, engine.getNumberOfQuadsDrawn());        
    }
}
A proposito, a chi devo chiedere l'user/pwd per il commit? fek? vicius?
cover è offline  
Old 01-11-2005, 18:06   #19
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Bene! Hai anche aggiunto il background alla classe Game per vederlo in gioco?
fek è offline  
Old 01-11-2005, 18:14   #20
cover
Senior Member
 
L'Avatar di cover
 
Iscritto dal: May 2002
Città: Milan
Messaggi: 572
Quote:
Originariamente inviato da fek
Bene! Hai anche aggiunto il background alla classe Game per vederlo in gioco?

Sì, ho già finito tutto ^^
Ho anche spostato la griglia per farla stare dentro il riquadro dello sfondo di esempio. Inoltre c'era anche un problema nel disegnare la griglia in game.
Era usato: new Rectangle(TOP, LEFT, WIDTH+LEFT, HEIGTH+TOP)
quando invece dev'essere: new Rectangle(LEFT, TOP, WIDTH+LEFT, HEIGTH+TOP)

chi mi passa via pm l'autenticazione per il commit?
fek?

Ultima modifica di cover : 01-11-2005 alle 18:18.
cover è offline  
 Discussione Chiusa


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
Recensione HUAWEI FreeBuds Neo, piccoli ...
TSMC aumenta i costi di produzione: AMD ...
L'Europa sfida i magnati dei combustibil...
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: 18:47.


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