Ismael
Legacy Member
Hallo,
Onderstaande foto is hetgeen wat ik heb gemaakt, en heel eronder een stuk code van het spel.
Het roze is een mannetje en het gele is gewoon een oppervlak.
De vraag is hoe kan ik het gele laten staan als het mannetje erover heen gaat?
(Telkens als ik erover heen ga wordt het vakje terug zwart.)
Met de code heb ik gebruik gemaakt van dubbel buffering.
Alvast bedankt!!
Onderstaande foto is hetgeen wat ik heb gemaakt, en heel eronder een stuk code van het spel.
Het roze is een mannetje en het gele is gewoon een oppervlak.
De vraag is hoe kan ik het gele laten staan als het mannetje erover heen gaat?
(Telkens als ik erover heen ga wordt het vakje terug zwart.)
Met de code heb ik gebruik gemaakt van dubbel buffering.
Code:
import java.awt.*;
public class View extends Canvas
{
private Doolhof doolhof;
private int b, h;
private int marge;
private Image buffer;
/**
* Constructor for objects of class View
*/
public View(Doolhof doolhof)
{
this.doolhof = doolhof;
b = 20;
h = 20;
marge = 18;
}
public void paint(Graphics g) {
if (buffer == null ||
buffer.getWidth(this) < getWidth() ||
buffer.getHeight(this) < getHeight()
) {
buffer = createImage(getWidth(), getHeight());
}
// teken op de buffer ipv op de canvas
teken(buffer.getGraphics());
// teken de buffer op de canvas
g.drawImage(buffer, 0, 0, this);
}
public void update(Graphics g) {
paint(g);
}
public void teken(Graphics g) {
g.clearRect(0,0, getWidth(), getHeight());
b = getWidth()/doolhof.getBreedte();
h = (getHeight()-marge)/doolhof.getHoogte();
g.drawString(doolhof.getPunten() + "/" + doolhof.getTeBehalenPunten(),
10, 15);
for (int i=0; i < doolhof.getBreedte(); i++) {
for (int j=0; j < doolhof.getHoogte(); j++) {
Voorwerp vw = doolhof.getVoorwerpOp(i, j);
if (vw == null) {
g.setColor(Color.BLACK);
g.fillRect(i*b,j*h+marge, b,h);
}
else if (vw instanceof Aarde) {
tekenAarde(g, i*b,j*h+marge);
}
else if (vw instanceof Speler) {
tekenSpeler(g, i*b,j*h+marge);
}
g.setColor(Color.WHITE);
g.drawRect(i*b,j*h+marge, b,h);
}
}
}
private void tekenAarde(Graphics g, int x, int y) {
g.setColor(Color.YELLOW);
g.fillRect(x,y, b, h);
}
private void tekenSpeler(Graphics g, int x, int y) {
g.setColor(Color.PINK);
g.fillRect(x,y, b, h);
}
}
Alvast bedankt!!