Torna indietro   Hardware Upgrade Forum > Software > Programmazione

FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7
FRITZ!Repeater 1700 porta il Wi-Fi 7 dual-band nelle case connesse. Mette a disposizione fino a 2.880 Mbit/s su 5 GHz e 688 Mbit/s su 2,4 GHz, integrazione Mesh immediata via WPS con FRITZ!Box e funzioni smart come MLO per bassa latenza. Compatto, plug-and-play e pronto per il futuro, è la soluzione ideale per chi vuole coprire ogni angolo senza cavi o complicazioni
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica
La Fondazione Chips-IT ha presentato a Pavia il piano strategico 2026-2028 per rafforzare l'ecosistema italiano dei semiconduttori. Con un focus su ricerca, design, talenti e infrastrutture, la Fondazione punta a consolidare il ruolo dell'Italia nel Chips Act europeo, sostenendo innovazione, collaborazione industriale e sovranità tecnologica.
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Al Museo Alfa Romeo di Arese, Nutanix ha riunito clienti, partner ed esperti per .Next On Tour Italia e per mostrare come l’infrastruttura hybrid multicloud possa diventare il fondamento dell’innovazione, con una piattaforma capace di unificare applicazioni tradizionali, moderne architetture cloud-native e nuovi scenari basati sull’intelligenza artificiale
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 23-09-2005, 21:04   #1
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
[CICLO 1] Storia 2: Divisione in Task

Ecco la nuova storiella e i task da implementare.

Storia:
Una volta aperta la finestra del gioco deve essere possibile spostare il
diamante al suo interno usando le frecce direzionali della tastiera. Durante
gli spostamenti il diamante deve "pulsare" cioè ingrandirsi e rimpicciolirsi
di qualche millimetro. Quando il diamante tocca un bordo il movimento deve
fermarsi e il gioco riprodurre un suono.

Task:
2.1 Permettere al diamante di essere posizionato in un punto qualsiasi dello schermo. (Vifani: completato)
2.2 Spostare il diamante nelle quattro direzioni di X pixel. (Vifani: completato)
2.3 Intercettare la pressione delle frecce direzionali e spostare il diamante. (cdimauro: 2 giorni)
2.4 Rilevare la "collisione" con i bordi dello finestra e impedire lo spostamento. (DanieleC88: 2 giorni)
2.5 Riprodurre il suono quando il diamante collide con un bordo. (BlueDragon: da definire)
2.6 Permettere al diamante di pulsare durante lo spostamento. (VICIUS: 2 giorni)

Il ciclo comincia lunedi mattina alle 8. Siate puntuali e ricordatevi di timbrare il cartellino

ciao

Ultima modifica di VICIUS : 27-09-2005 alle 12:23.
VICIUS è offline  
Old 23-09-2005, 21:41   #2
Vifani
Senior Member
 
Iscritto dal: Apr 2001
Città: Bari
Messaggi: 2776
Task 2.1 e 2.2 prenotati. Prevedo un paio di giorni per tutti e due
__________________
Raffaele Fanizzi
My Personal Web Site
Membro Jedi del HWU Star Wars Clan
Vifani è offline  
Old 23-09-2005, 21:42   #3
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Vi ricordo che questi sono i test "obbligatori" per concludere il task, ma siete caldamente invitati ad aggiungere tutti i test necessari.

Come sempre trovate i test in it.diamonds.tests.ignore e dovete spostarli in it.diamonds.tests.

2.1 Permettere al diamante di essere posizionato in un punto qualsiasi dello schermo. (Vifani: 2 giorni)

2.2 Spostare il diamante nelle quattro direzioni di X pixel. (Vifani: 2 giorni)

Codice:
public class TestSprite extends TestCase
{
    protected void setUp() throws Exception
    {
        super.setUp();
    }

    protected void tearDown() throws Exception
    {
        super.tearDown();
    }
    
    public void testGetTexture()
    {
        Texture texture = new Texture("diamond");
        Sprite sprite = new Sprite(100, 200, texture);
        
        assertAreSame(texture, sprite.getTexture());   
    }
    
    public void testGetPosition()
    {
        Texture texture = new Texture("diamond");
        Sprite sprite = new Sprite(100, 200, texture);
        
        assertAreEqual(100, sprite.getX());
        assertAreEqual(200, sprite.getY());   
    }
    
    public void testMove()
    {
        Texture texture = new Texture("diamond");
        Sprite sprite = new Sprite(100, 200, texture);
        
        sprite.Move(10, 20);
        
        assertAreEqual(110, sprite.getX());
        assertAreEqual(220, sprite.getY());
        
        sprite.Move(-10, -20);
        
        assertAreEqual(90, sprite.getX());
        assertAreEqual(180, sprite.getY());   
    }
 }
2.3 Intercettare la pressione delle frecce direzionali e spostare il diamante. (cdimauro: 2 giorni)

Input da tastiera. Va testato manualmente.

2.4 Rilevare la "collisione" con i bordi dello finestra e impedire lo spostamento. (DanieleC88: 2 giorni)

Codice:
public class testSpriteCollision extends TestCase
{
    protected void setUp() throws Exception
    {
        super.setUp();
    }

    protected void tearDown() throws Exception
    {
        super.tearDown();
    }

    public void testLeftCollision()
    {
        // no texture
        Sprite sprite = new Sprite(5, 0);
        sprite.Move(-10, 0);
        assertAreEqual(0, sprite.getX());        
    }
    
    public void testRightCollision()
    {
        int width = 800;
        Sprite sprite = new Sprite(width - 5, 0);
        sprite.Move(10, 0);
        assertAreEqual(width, sprite.getX());        
    }
    
    public void testTopCollision()
    {
        // no texture
        Sprite sprite = new Sprite(0, 5);
        sprite.Move(0, -10);
        assertAreEqual(0, sprite.getY());        
    }
    
    public void testBottomCollision()
    {
        int height = 600;
        Sprite sprite = new Sprite(height - 5, 0);
        sprite.Move(0, 10);
        assertAreEqual(height, sprite.getY());        
    } 

}

2.5 Riprodurre il suono quando il diamante collide con un bordo.

Codice:
public class TestSpriteCollisionSound extends TestCase
{

    protected void setUp() throws Exception
    {
        super.setUp();
    }
    
    protected void tearDown() throws Exception
    {
        super.tearDown();
    }
    
    public void testCollisionSound()
    {
        Sprite sprite = new Sprite(0, 0);
        
        Sound sound = new Sound("diamond");

        // TODO: use a MockObject
        sound.setTesting(true);
        
        assertFalse("Sound must not be played before a collision",
            sound.wasPlayed());
        
        sprite.setCollisionSound(sound);
        sprite.Move(-10, 0);

        assertFalse("Sound must be played after a collision",
            sound.wasPlayed());
    }
    
}
2.6 Permettere al diamante di pulsare durante lo spostamento.

Vicius?

Ultima modifica di fek : 25-09-2005 alle 19:38.
fek è offline  
Old 24-09-2005, 08:53   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Task 2.3 pronotato. Prevedo due giorni per realizzarlo.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline  
Old 24-09-2005, 10:36   #5
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Vorrei che i restanti task fossero prenotati da qualcuno che non ha partecipato alla Storia precedente.
fek è offline  
Old 24-09-2005, 12:46   #6
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da fek
Vorrei che i restanti task fossero prenotati da qualcuno che non ha partecipato alla Storia precedente.
Esatto. Dove sono finiti tutti quei volenterosi collaboratori che si erano offerti nell'altro thread

ciao
VICIUS è offline  
Old 24-09-2005, 13:16   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
pazientate altri 3 giorni e ne avrete un altro ^^
comunque vorrei chiedere un chiarimento sul task 2.6: il diamante deve pulsare sempre o solo quando si muove? nel gioco finale il diamante una volta che è arrivato a terra (o sopra un altro diamante sottostante) deve smettere di pulsare?
71104 è offline  
Old 24-09-2005, 13:21   #8
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da 71104
pazientate altri 3 giorni e ne avrete un altro ^^
comunque vorrei chiedere un chiarimento sul task 2.6: il diamante deve pulsare sempre o solo quando si muove? nel gioco finale il diamante una volta che è arrivato a terra (o sopra un altro diamante sottostante) deve smettere di pulsare?
Deve pulsare solo quando si muove. Non centra niente con il gioco. L'ho messo solo per vedere come risolvete e se fate una cosa

ciao
VICIUS è offline  
Old 24-09-2005, 13:32   #9
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da fek
Vorrei che i restanti task fossero prenotati da qualcuno che non ha partecipato alla Storia precedente.
È libero il 2.4 (collisioni coi bordi della finestra)?
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline  
Old 24-09-2005, 13:34   #10
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da DanieleC88
È libero il 2.4 (collisioni coi bordi della finestra)?
Per ora si.

ciao
VICIUS è offline  
Old 26-09-2005, 11:06   #11
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da fek
2.3 Intercettare la pressione delle frecce direzionali e spostare il diamante. (cdimauro: 2 giorni)

Input da tastiera. Va testato manualmente.
Ma tu guarda che "fortuna": l'unico senza test da scrivere...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline  
Old 26-09-2005, 11:08   #12
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cdimauro
Ma tu guarda che "fortuna": l'unico senza test da scrivere...
Ehm, no, l'unico senza acceptance test
I test li scrivi comunque...
fek è offline  
Old 26-09-2005, 11:39   #13
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da VICIUS
2.5 Riprodurre il suono quando il diamante collide con un bordo.
Manca questo task da assegnare. Volontario?

Oppure scelgo io il volontario e facciamo il task assieme in TDD in diretta in un topic
fek è offline  
Old 26-09-2005, 11:59   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da fek
Ehm, no, l'unico senza acceptance test
I test li scrivi comunque...
Oops.

Mi vengono in mente soltanto 4 test per controllare se lo spostamento del diamante (a seguito della pressione di una delle frecce) è avvenuto regolarmente.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline  
Old 26-09-2005, 12:20   #15
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cdimauro
Oops.

Mi vengono in mente soltanto 4 test per controllare se lo spostamento del diamante (a seguito della pressione di una delle frecce) è avvenuto regolarmente.
Per lo spostamento del diamante ci sono gia' i test. Pero' puoi fare una cosa, puoi "virtualizzare" l'input vero e proprio della tastiera e poi scrivere un MockKeyboard che fa finta di essere una tastiera e scrivere codice di test tipo:

keyboard.notifyLeftArrow();

dall'altra parte keyboard.isLeftArrowPressed() tornera' 'true'.

In questo modo possiamo scrivere dei test che controllano che il diamante si sia effettivamente spostato quando la tastiera notifica la pressione della freccia a sinistra.

Il finale di tutto questo lavoro sono i cosiddetti "Customer Test", test scritti in un linguaggio ad alto livello che simulano il gioco vero e proprio. Ma non so se arriveremo mai a questo.
fek è offline  
Old 26-09-2005, 12:39   #16
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da fek
Manca questo task da assegnare. Volontario?

Oppure scelgo io il volontario e facciamo il task assieme in TDD in diretta in un topic
Propongo volontario Daniele per questo task. Una volta che ha capito come rilevare la collisioni far partire un suono è banale

ciao
VICIUS è offline  
Old 26-09-2005, 13:47   #17
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da VICIUS
Propongo volontario Daniele per questo task. Una volta che ha capito come rilevare la collisioni far partire un suono è banale

ciao
Preferirei che qualcuno che non ha ancora fatto un task si prendesse quest'ultimo, ma in mancanza di volontari, se Daniele vuole e' ok.
fek è offline  
Old 26-09-2005, 13:49   #18
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da VICIUS
Propongo volontario Daniele per questo task. Una volta che ha capito come rilevare la collisioni far partire un suono è banale

ciao
Che fai, decidi per me, ora?
Ma scherzo, hai ragione tu. Ci vorranno 5 minuti. (spero )
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline  
Old 26-09-2005, 13:52   #19
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da DanieleC88
Che fai, decidi per me, ora?
Ma scherzo, hai ragione tu. Ci vorranno 5 minuti. (spero )
Non ci vogliono 5 minuti, non e' cosi' banale. Guarda i test che ho scritto per i tuoi due task, ci sono delle duplicazioni grosse come delle case e non sono banali da eliminare.

Oltre tutto il test del suono dopo una collisione apre le porte ad un paio di interrogativi non banali (gestione degli eventi associati ad uno sprite?) e dev'essere affrontato con molta cura.
fek è offline  
Old 26-09-2005, 15:55   #20
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da fek
Non ci vogliono 5 minuti, non e' cosi' banale. Guarda i test che ho scritto per i tuoi due task, ci sono delle duplicazioni grosse come delle case e non sono banali da eliminare.

Oltre tutto il test del suono dopo una collisione apre le porte ad un paio di interrogativi non banali (gestione degli eventi associati ad uno sprite?) e dev'essere affrontato con molta cura.
Argh, non ci avevo pensato... be', che dire? Se c'è chi si offre volontario, ben venga, altrimenti ci provo io. In caso di difficoltà posso sempre consultarmi con voi. E soprattuto con VICIUS, ché lo vedo molto volontario oggi.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline  
 Discussione Chiusa


FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica Fondazione Chips-IT, l'Italia alla riscossa nei ...
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud Nutanix: innovazione, semplicità e IA al ...
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Aumento di prezzo in arrivo per la Ninte...
Samsung Galaxy S26 Ultra, nuove conferme...
Robot aspirapolvere ancora ai prezzi del...
Un sacco di dispositivi Ring scontati su...
Hisense HS3100 a meno di 100€ su Amazon:...
Tomb Raider Catalyst è il sequel ...
Logitech G Yeti GX in offerta su Amazon:...
Le Sony INZONE H5 scendono a 99€ su Amaz...
Macbook Air M4 a 899€, Macbook Pro M5 -1...
iPhone 17 su Amazon: tornano le offerte ...
Chip occidentali nei missili russi: caus...
La nuova generazione di AirTag è ...
Utah, scoperto un grande giacimento di t...
Intel prova macchinari 'cinesi' per i ch...
Windows 11, problemi con l'aggiornamento...
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: 12:38.


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