Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Il REDMAGIC Astra Gaming Tablet rappresenta una rivoluzione nel gaming portatile, combinando un display OLED da 9,06 pollici a 165Hz con il potente Snapdragon 8 Elite e un innovativo sistema di raffreddamento Liquid Metal 2.0 in un form factor compatto da 370 grammi. Si posiziona come il tablet gaming più completo della categoria, offrendo un'esperienza di gioco senza compromessi in mobilità.
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2
Dopo un mese di utilizzo intensivo e l'analisi di oltre 50 scatti, l'articolo offre una panoramica approfondita di Nintendo Switch 2. Vengono esaminate le caratteristiche che la definiscono, con un focus sulle nuove funzionalità e un riepilogo dettagliato delle specifiche tecniche che ne determinano le prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-01-2006, 12:26   #1
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
[TASK 8.2.2] Pair Programming: Ufo13 + thebol

Benissimo partiamo subito!
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 12:29   #2
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
Prima la test list
fek è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 12:44   #3
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Test List:

- Le Gem appartenenti ad un GemGroup non vengono disegnate.

- Dato un GemGroup testiamo che la texture caricata per disegnare il GemGroup sia la texture corretta.

- Dato un GemGroup testiamo che vengano rilevate le tile di tipo "angolo_alto_sx, angolo_alto_dx etc...", i bordi (alto, sx, dx, basso) e i riempimenti. Il tutto nelle corrette posizioni.

- Dato un gruppo 3x3 testiamo che ai corrispondenti angoli, bordi e riempimenti vengano disegnate le "tile" corrette.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 12:44   #4
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da fek
Prima la test list
dammi il tempo
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:03   #5
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
ecco il primo test

Codice:
public class TestGemGroupsDrawing extends TestCase
{
    private Grid grid;
    
    private MockTimer timer;
    
    public void setUp()
    {
        grid = Grid.createForTesting();

        timer = new MockTimer();
    }
    
    public void testGroupedGemIsNotDrawn()
    {
        MockEngine engine = new MockEngine();

        Gem gem1 = Gem.diamond(3500);
        Gem gem2 = Gem.diamond(3500);
        Gem gem3 = Gem.diamond(3500);
        Gem gem4 = Gem.diamond(3500);
        
        insertAndUpdate(gem1, 13, 3);
        insertAndUpdate(gem2, 13, 4);
        insertAndUpdate(gem3, 12, 3);
        insertAndUpdate(gem4, 12, 4);

        gem1.draw(engine);
        gem2.draw(engine);
        gem3.draw(engine);
        gem4.draw(engine);
        
        assertEquals("grouped Gems must be not drawn", 0, engine.getNumberOfQuadsDrawn());
    }
    
    private void insertAndUpdate(Gem gem, int x, int y)
    {
        grid.insertGem(x, y, gem); 
        grid.update(timer, gem); 
    }
}
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:14   #6
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    public void draw(EngineInterface engine)
    {
        if (!isInAGroup())
        {
            sprite.draw(engine);
        }
        
    }
è la draw di gem

ps.si sarebbe potuto inserire il controllo in grid.draw(), anziche in gem.draw(); dove è piu sensato metterlo?(per passare questo test è pero obbligatorio metterlo in gem)
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:15   #7
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
Quote:
Originariamente inviato da Ufo13
Test List:

- Le Gem appartenenti ad un GemGroup non vengono disegnate.

- Dato un GemGroup testiamo che la texture caricata per disegnare il GemGroup sia la texture corretta.

- Dato un GemGroup testiamo che vengano rilevate le tile di tipo "angolo_alto_sx, angolo_alto_dx etc...", i bordi (alto, sx, dx, basso) e i riempimenti. Il tutto nelle corrette posizioni.

- Dato un gruppo 3x3 testiamo che ai corrispondenti angoli, bordi e riempimenti vengano disegnate le "tile" corrette.
Ottimo. Aggiungete i test man mano che ne vengono fuori altri.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:16   #8
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
Quote:
Originariamente inviato da thebol
Codice:
    public void draw(EngineInterface engine)
    {
        if (!isInAGroup())
        {
            sprite.draw(engine);
        }
        
    }
è la draw di gem

ps.si sarebbe potuto inserire il controllo in grid.draw(), anziche in gem.draw(); dove è piu sensato metterlo?(per passare questo test è pero obbligatorio metterlo in gem)
E' piu' sensato metterlo dove fa passare tutti i test, quindi dove l'hai messo tu
fek è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:24   #9
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Che bello...ho la ppossibilità di guardarmi un task in pair in diretta!!!
Meglio di SKY...mi prendo 2 pop-corn e me lo godo tutto !!!
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:25   #10
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da fek
E' piu' sensato metterlo dove fa passare tutti i test, quindi dove l'hai messo tu
ashg
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:26   #11
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    
public void testGetTexture(){
        Config config = Config.createForTesting();
        GemGroups gemGroups = new GemGroups(config.getInteger("rows"), config.getInteger("columns"));
        gemGroups.addGem(gem1);
        assertNotNull("Not texture loaded in gemGroups",gemGroups.getTexture());

    }

Ultima modifica di thebol : 20-01-2006 alle 13:31.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:48   #12
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Hmmm il test da NullPointerException...

La Gem va prima inserita nella griglia

Il test cambia così:

Codice:
   public void testGetTexture()
    {
        Config config = Config.createForTesting();
        GemGroups gemGroups = new GemGroups(config.getInteger("rows"), config.getInteger("columns"));
        insertAndUpdate(gem1, 11, 4);
        gemGroups.addGem(gem1);
        assertNotNull("No texture loaded in gemGroups", gemGroups.getTexture());
    }

Questo è il codice (Quick Fix) che fa passare il test

Codice:
    public Texture getTexture()
    {
        return new Texture("diamond");
    }
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14:00   #13
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
preparo il nuovo test....

Devo testare che il GemGroup restituisca la Texture giusta in base al "GemType del gruppo"... Il GemType del GemGroup non è definito... Tralasciamo questo test un secondo

Propongo questo test
Codice:
    public void testGemType()
    {
        insertAndUpdate(gem3, 13, 3);
        insertAndUpdate(gem4, 13, 4);
        insertAndUpdate(gem5, 12, 3);
        insertAndUpdate(gem6, 12, 4);
        
        assertEquals("Wrong GemType of this GemGroup", GemType.EMERALD, gem3.getGroup().getType());
    }
Corretto il test... 12 invece di 14

Ultima modifica di Ufo13 : 20-01-2006 alle 14:09.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14:25   #14
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Non capisco perchè da build rotta sulla build machine... I test sono in ignore!
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14:30   #15
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    public GemType getType()
    {
        return gemType;
    }
il type viene definito nel costruttore

Codice:
    public GemGroups(int rows, int columns, GemType gemType)
    {
        defaultRows = rows;
        defaultColumns = columns;
        this.gemType = gemType;
    }
questo per evitare che un gruppo non abbia gemType.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 15:26   #16
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
thebol ha committato un nuovo test ma è dovuto scappare così non ha potuto postare

Codice:
    public void testDifferenteTextureLoaded(){
        insertAndUpdate(gem3, 13, 1);
        insertAndUpdate(gem4, 13, 2);
        insertAndUpdate(gem5, 12, 1);
        insertAndUpdate(gem6, 12, 2);
        
        insertAndUpdate(gem9, 13, 3);
        insertAndUpdate(gem10, 13, 4);
        insertAndUpdate(gem11, 12, 3);
        insertAndUpdate(gem12, 12, 4);
        
        assertEquals("gemGroup Texture is not correct", "gfx/gems/tiles/emerald", gem3.getGroup().getTexture().getName());
        assertEquals("gemGroup Texture is not correct", "gfx/gems/tiles/diamond", gem9.getGroup().getTexture().getName());
    }
L'ho modificato un pelo per testare che la texture sia proprio del tipo corretto

Ultima modifica di Ufo13 : 20-01-2006 alle 15:36.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 15:40   #17
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Aggiunti i seguenti field in GemGroup (ho pure cambiato il nome da GemGroups a GemGroup per coerenza con Gem)

Codice:
private static final String GEMGROUP_PATH = "gfx/gems/tiles/";

private Texture texture;


Nel costruttore viene inizializzato l'oggetto Texture

Codice:
this.texture = new Texture(GEMGROUP_PATH.concat(gemType.name()));


Di conseguenza

Codice:
public Texture getTexture()
    {
        return texture;
    }
Build verde

Preparo il nuovo test
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 16:55   #18
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Il nuovo test è:

Codice:
    public void testCorrectGemsPositions()
    {
        Gem gem9 = Gem.create(gem3.getType(), 3500);
        Gem gem10 = Gem.create(gem3.getType(), 3500);
        Gem gem11 = Gem.create(gem3.getType(), 3500);
        
        insertAndUpdate(gem3, 13, 1);
        insertAndUpdate(gem4, 13, 2);
        insertAndUpdate(gem5, 13, 3);
        insertAndUpdate(gem6, 12, 1);
        insertAndUpdate(gem7, 12, 2);
        insertAndUpdate(gem8, 12, 3);
        insertAndUpdate(gem9, 11, 1);
        insertAndUpdate(gem10, 11, 2);
        insertAndUpdate(gem11, 11, 3);
        
        GemGroup gemGroup = gem3.getGroup();
        
        assertEquals("gem3's groupPosition is not correct", GemGroup.PositionType.BottomLeftCorner, gemGroup.getPositionType(gem3));
        assertEquals("gem4's groupPosition is not correct", GemGroup.PositionType.BottomEdge, gemGroup.getPositionType(gem4));
        assertEquals("gem5's groupPosition is not correct", GemGroup.PositionType.BottomRightCorner, gemGroup.getPositionType(gem5));
        assertEquals("gem6's groupPosition is not correct", GemGroup.PositionType.LeftEdge, gemGroup.getPositionType(gem6));
        assertEquals("gem7's groupPosition is not correct", GemGroup.PositionType.Inner, gemGroup.getPositionType(gem7));
        assertEquals("gem8's groupPosition is not correct", GemGroup.PositionType.RightEdge, gemGroup.getPositionType(gem8));
        assertEquals("gem9's groupPosition is not correct", GemGroup.PositionType.TopLeftCorner, gemGroup.getPositionType(gem9));
        assertEquals("gem10's groupPosition is not correct", GemGroup.PositionType.TopEdge, gemGroup.getPositionType(gem10));
        assertEquals("gem11's groupPosition is not correct", GemGroup.PositionType.TopRightCorner, gemGroup.getPositionType(gem11));
    }
A te thebol
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 19:25   #19
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    private void updateGroup()
    {
        
        if (checkRectFullOfGems())
        {
            setGemPositionType();
            lightUpGems();
        }
    }
Codice:
    private void setGemPositionType()
    {
        candidateGems.put(lefTopCorner, PositionType.TopLeftCorner);
        candidateGems.put(leftBottomCorner, PositionType.BottomLeftCorner);
        candidateGems.put(rightTopCorner, PositionType.TopRightCorner);
        candidateGems.put(rightBottomcorner, PositionType.BottomRightCorner);
        
        for(Gem currentGem : candidateGems.keySet())
        {
            if (isSettablePositionType(currentGem))
            {
                if (isInnerGem(currentGem))
                {
                    candidateGems.put(currentGem, PositionType.Inner);
                
                }
                else if (currentGem.getCellRow() == topRow)
                {
                    candidateGems.put(currentGem, PositionType.TopEdge);
                }
                else if (currentGem.getCellRow() == bottomRow)
                {
                    candidateGems.put(currentGem, PositionType.BottomEdge);
                }
                else if (currentGem.getCellColumn() == leftColumn)
                {
                    candidateGems.put(currentGem, PositionType.LeftEdge);
                }
                else if (currentGem.getCellColumn() == rightColumn)
                {
                    candidateGems.put(currentGem, PositionType.RightEdge);
                }
                
            }           
        }
        
    }
4 posizione le ho gratis.
poi per le restanti settabili guardo che spigoli sono.

qua gli altri metodi che facevano arrivare la complessita a 12

Codice:
    private boolean isSettablePositionType(Gem currentGem)
    {
        return gemIsInRect(currentGem) && !gemIsACorner(currentGem);
    }

    private boolean isInnerGem(Gem currentGem)
    {
        return currentGem.getCellRow() > topRow 
            && currentGem.getCellColumn() > leftColumn 
            && currentGem.getCellRow() < bottomRow 
            && currentGem.getCellColumn() < rightColumn;
    }
currentGem è diventata una hashMap<Gem. typePosition>, ho modificato un paio di metodi che ciclavano sull'arrayList.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 20:09   #20
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Posto io il test che ha fatto thebol

L'ho completato ed ora è così

Codice:
    public void testCorrectTileDraw()
    {
        MockEngine engine = MockEngine.createForTesting(800, 600);
        
        Gem gem9 = Gem.create(gem3.getType(), 3500);
        Gem gem10 = Gem.create(gem3.getType(), 3500);
        Gem gem11 = Gem.create(gem3.getType(), 3500);
        
        insertAndUpdate(gem3, 13, 1);
        insertAndUpdate(gem4, 13, 2);
        insertAndUpdate(gem5, 13, 3);
        insertAndUpdate(gem6, 12, 1);
        insertAndUpdate(gem7, 12, 2);
        insertAndUpdate(gem8, 12, 3);
        insertAndUpdate(gem9, 11, 1);
        insertAndUpdate(gem10, 11, 2);
        insertAndUpdate(gem11, 11, 3);
        
        GemGroup gemGroup = gem3.getGroup();
        
        gemGroup.draw(PositionType.BottomLeftCorner, engine);
        assertEquals("bad texture drawn", 0, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.BottomEdge, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.BottomRightCorner, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.LeftEdge, engine);
        assertEquals("bad texture drawn", 0, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.Inner, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.RightEdge, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.TopLeftCorner, engine);
        assertEquals("bad texture drawn", 0, engine.getTextureRect().left());
        assertEquals("bad texture drawn", 0, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.TopEdge, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().left());
        assertEquals("bad texture drawn", 0, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.TopRightCorner, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().left());
        assertEquals("bad texture drawn", 0, engine.getTextureRect().top());
    }
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA Gigabyte Aero X16 Copilot+ PC: tanta potenza non...
vivo X200 FE: il top di gamma si è fatto tascabile? vivo X200 FE: il top di gamma si è fatto ...
Threadripper PRO 9000 WX-Series e Radeon...
Il decimo lancio del razzo spaziale Spac...
Nuova immagine per la cometa interstella...
Usi la 'melanzana' su Tinder? Ecco perch...
AWS annuncia molte novità legate ...
Il lato oscuro della speculazione immobi...
Glyph Matrix e design asimmetrico: ...
Il sasso più costoso di sempre: p...
Ericsson punta sull'IA: arrivano nuove s...
Iliad: GIGA 200 e GIGA 150 tra le offert...
Questo power bank wireless ricarica alla...
iPhone 17 Pro e Pro Max: il nu...
Riunioni su Teams direttamente dall'auto...
È record: il nuovo orologio atomi...
Giochi per adulti cancellati da Steam: i...
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: 05:20.


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