Vierkant in een 2dArray!

Status
Niet open voor verdere reacties.

beginnerJava

Nieuwe gebruiker
Lid geworden
29 mrt 2016
Berichten
4
Goedemorgen,

Ik heb een vierkant getekend met Java. Nu wil ik dit vierkant in een veld plaatsen van 10x10. Ik heb verschillende tutorials gelezen maar ik kom er niet uit. Zou iemand mij kunnen helpen?

Ik heb een klasse Veld en een klasse Vierkant
Code:
public class Veld extends javax.swing.JFrame {
    public Veld() 
    {
        initComponents();
    }

    public void paint(Graphics g)
    {
        super.paint(g);
      //  g.setColor(Color.white);
      // g.fillRect(20,60, 60, 60);
        g.setColor(Color.black);
        g.drawRect(20, 45, 60, 60);
    }
}

Code:
public class Vierkant {
    
    private int x = 0;
    private int y = 0;
    private int width = 60;
    private int height = 60;
    
    
    public Vierkant( int x, int y)
    {
        this.x = x;
        this.y = y;
        
       // g.setColor(Color.black);
       // g.drawRect(20, 45, 60, 60);             
    }
    
}

Het zou fijn zijn als er een eventuele uitleg zou kunnen worden gegeven met de mogelijke oplossing hiervan.

Alvast bedankt!
 
Er zijn verschillende manieren om dit op te lossen. Je kunt het vierkant zichzelf laten tekenen en het veld tekent de verdere lege vakken. Je kunt ook zeggen dat het veld alles tekent en gebruik maakt van karakteristieken van de vierkanten. Ik zou een multi-dimensionale array in de veld-klasse maken en deze vullen (waar nodig) met vierkant objecten. Daarna zou ik een teken methode in de veldklasse aanroepen die door de array loopt en een leeg iets tekent als er geen element op de bekeken positie is, als er wel een vierkant object op die positie is, teken een vierkant met de kleur oid uit de vierkant klasse.

Code:
public class Veld extends javax.swing.JFrame {
    private int rows, cols;
    private Vierkant[][] veld;

    public Veld() 
    { 
        veld = new Vierkant[10][10];
        initComponents();
    }
    
    public void initComponents() {
        veld[0][1] = new Vierkant(Color.BLUE);
        ..........
    }
    
     public void paint(Graphics g) {
        super.paint(g);
        for(int row=0; row < 10; row++) {
               for(int col=0; col < 10; col++) {
                     if(veld[row][col] != null) {
                          Vierkant v = veld[row][col];
                          g.fillRect(row*20,col*20, 20, 20);
                     } else {
              
                          g.drawRect(row*20,col*20, 20, 20); 
                     }
               }
        }
    }
}

Hopelijk ben je hier een beetje mee geholpen.
 
Bedankt voor de reactie en de zeer duidelijke uitleg. Ik mag geen gebruik maken van een 2dArray ben ik achter gekomen.

Ik heb nu aardig wat voor elkaar gekregen maar nu kom ik bij een ander stukje. Ik heb het nu werkend dat de Systemoutput laat zien dat de vierkant door het veld beweegt, echter blijft de vierkant nog staan en wordt deze niet opnieuw getekend. Zelf wil ik dit vierkantje nu veranderen in een afbeelding die uit een map opgehaald kan worden. Zou je hier naar willen kijken en mij eventueel kunnen helpen?
 
Wil nu een bewegend getekende vierkant verandere in een afbeelding :p maar dat lukt nog niet echt
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan