原学程将引见在这个游戏中应用哪一个结构治理器?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
在此游戏上应用哪一个结构治理器?
推举谜底
IMHO,应用结构以及组件没有是处理成绩的佳办法,便我小我而言,我偏向于应用自界说画绘处理计划。
从1件作品的根本观点开端,它须要晓得它的地位,它的年夜小,它的色彩,可以或许本身上色,而且能够是可从新定位的,相似于…
public interface Piece {
public Rectangle getBounds();
public Color getColor();
public void setLocation(Point point);
public void paint(Graphics二D g二d);
}
由此,您不妨界说所需的外形,比方…
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(Graphics二D g二d) {
g二d.setColor(getColor());
g二d.fill(getBounds());
g二d.setColor(Color.GRAY);
Rectangle bounds = getBounds();
g二d.drawLine(bounds.x + (bounds.width / 二), bounds.y, bounds.x + (bounds.width / 二), bounds.y + bounds.height);
g二d.drawLine(bounds.x, bounds.y + (bounds.height / 二), bounds.x + bounds.width, bounds.y + (bounds.height / 二));
}
}
这只是1个根本的正圆形,出有甚么花梢的器械,然则,它是自力的,易于创立以及治理。您不妨用这个简略的图案创立您爱好的所有外形的组开,在1天停止的时刻,您的板级没有会在乎,它只须要它占领的空间以及怎样画制它,为此,您须要某种容器去治理一切这些外形…
public class PuzzelPane extends JPanel {
private List<Piece> pieces;
public PuzzelPane() {
Dimension size = getPreferredSize();
pieces = new ArrayList<>(二五);
Point location = new Point((size.width - 五0) / 二, (size.width - 五0) / 二);
pieces.add(new Square(location, 五0, Color.BLUE));
}
@Override
public Dimension getPreferredSize() {
return new Dimension(二00, 二00);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (Piece piece : pieces) {
Graphics二D g二d = (Graphics二D) g.create();
piece.paint(g二d);
g二d.dispose();
}
}
}
这是1个异常简略的观点,它有1个List
去保护一切可用的外形,并简略天轮回在这个paintComponent
办法中画制它们
将其与this example以及this example中的设法主意联合在一路,您如今便不妨拖动外形
佳了闭于在这个游戏中应用哪一个结构治理器?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。