java游戏管理器设置_java – 在这个游戏中使用哪个布局管理器?

恕我直言,使用布局和组件不是一个很好的解决方案,个人而言,我倾向于自定义绘画解决方案.

从一件作品的基本概念开始,它需要知道它的位置,它的大小,它的颜色,能够自己画画并且可能是可重新定位的,类似……

public interface Piece {

public Rectangle getBounds();

public Color getColor();

public void setLocation(Point point);

public void paint(Graphics2D g2d);

}

从这里,你可以定义你需要的形状,例如……

public abstract class AbstractPiece implements Piece {

private Rectangle bounds;

private Color color;

@Override

public void setLocation(Point point) {

bounds.setLocation(point);

}

@Override

public Rectangle getBounds() {

return bounds;

}

@Override

public Color getColor() {

return color;

}

public void setBounds(Rectangle bounds) {

this.bounds = bounds;

}

public void setColor(Color color) {

this.color = color;

}

}

public class Square extends AbstractPiece {

public Square(Point location, int size, Color color) {

Rectangle bounds = new Rectangle();

bounds.setLocation(location);

bounds.setSize(size, size);

setBounds(bounds);

setColor(color);

}

@Override

public void paint(Graphics2D g2d) {

g2d.setColor(getColor());

g2d.fill(getBounds());

g2d.setColor(Color.GRAY);

Rectangle bounds = getBounds();

g2d.drawLine(bounds.x + (bounds.width / 2), bounds.y, bounds.x + (bounds.width / 2), bounds.y + bounds.height);

g2d.drawLine(bounds.x, bounds.y + (bounds.height / 2), bounds.x + bounds.width, bounds.y + (bounds.height / 2));

}

}

这只是一个基本的方块,没什么特别的,但是,它是自包含的,易于创建和管理.您可以使用这个简单的模式创建您喜欢的任何形状组合,在一天结束时,您的电路板类将无关紧要,它只需要它占据的空间以及如何绘制它,说到哪个,你需要一些管理所有这些形状的容器类型……

public class PuzzelPane extends JPanel {

private List pieces;

public PuzzelPane() {

Dimension size = getPreferredSize();

pieces = new ArrayList<>(25);

Point location = new Point((size.width - 50) / 2, (size.width - 50) / 2);

pieces.add(new Square(location, 50, Color.BLUE));

}

@Override

public Dimension getPreferredSize() {

return new Dimension(200, 200);

}

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

for (Piece piece : pieces) {

Graphics2D g2d = (Graphics2D) g.create();

piece.paint(g2d);

g2d.dispose();

}

}

}

这是一个非常简单的概念,它有一个List来维护所有可用的形状,并简单地循环它以在paintComponent方法中绘制它们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值