Aufgabe 4.2 - drawStones
This commit is contained in:
parent
669c37029a
commit
0fdd579b41
@ -235,7 +235,10 @@ public class Level extends Thread implements ILevel {
|
|||||||
* @return stones The stones of the level
|
* @return stones The stones of the level
|
||||||
*/
|
*/
|
||||||
public ArrayList<Stone> getStones() {
|
public ArrayList<Stone> getStones() {
|
||||||
return stones;
|
// hacky workaround for ConcurrentModificationExceptions
|
||||||
|
ArrayList<Stone> copy = new ArrayList<>();
|
||||||
|
copy.addAll(stones);
|
||||||
|
return copy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,10 +5,13 @@ import java.awt.Dimension;
|
|||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.RenderingHints;
|
import java.awt.RenderingHints;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
import break_out.Constants;
|
import break_out.Constants;
|
||||||
|
import break_out.model.Position;
|
||||||
|
import break_out.model.Stone;
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -99,6 +102,9 @@ public class Field extends JPanel {
|
|||||||
// Calls the method for drawing the grid
|
// Calls the method for drawing the grid
|
||||||
drawGrid(g2);
|
drawGrid(g2);
|
||||||
|
|
||||||
|
// Calls the method for drawing the stones
|
||||||
|
drawStones(g2);
|
||||||
|
|
||||||
// Calls the method for drawing the ball
|
// Calls the method for drawing the ball
|
||||||
drawBall(g2);
|
drawBall(g2);
|
||||||
|
|
||||||
@ -205,4 +211,42 @@ public class Field extends JPanel {
|
|||||||
g2.setColor(temp);
|
g2.setColor(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draws the stones
|
||||||
|
*
|
||||||
|
* @param g2 The graphics object
|
||||||
|
*/
|
||||||
|
private void drawStones(Graphics2D g2) {
|
||||||
|
// query stones
|
||||||
|
ArrayList<Stone> stones = view.getGame().getLevel().getStones();
|
||||||
|
|
||||||
|
// foreach stone
|
||||||
|
for(Stone stone : stones) {
|
||||||
|
Position pos = stone.getPosition();
|
||||||
|
|
||||||
|
// size of grid blocks
|
||||||
|
int blockWidth = Constants.SCREEN_WIDTH / Constants.SQUARES_X;
|
||||||
|
int blockHeight = Constants.SCREEN_HEIGHT / Constants.SQUARES_Y;
|
||||||
|
|
||||||
|
// if stone has a color, draw it
|
||||||
|
if(stone.getColor() != null) {
|
||||||
|
|
||||||
|
// temporarily save default component color to draw stone in specific color
|
||||||
|
Color temp = g2.getColor();
|
||||||
|
g2.setColor(stone.getColor());
|
||||||
|
|
||||||
|
// fillRoundRect(x, y, width, height, arcWidth, arcHeight)
|
||||||
|
g2.fillRoundRect((int) pos.getX()+1,
|
||||||
|
(int) pos.getY()+1,
|
||||||
|
(int) blockWidth-1,
|
||||||
|
(int) blockHeight-1,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
|
||||||
|
// reset color to default
|
||||||
|
g2.setColor(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user