для школьного проекта, я делаю шахматную доску в Яве.
были определенные ограничения: мы не можем использовать изображения ни для одной из пешек. Нам нужно было сделать пешку из нескольких фигур.
Например, у меня есть пешка, сделанная из круга и закругленного квадрата. Вот некоторые фрагменты кода. Эта доска определяется как набор символов, каждый из которых представляет собой чек на доске
private char[][] board = new char[][] { { 'T', 'H', 'B', 'Q', 'K', 'B', 'H', 'T' },
{ 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P' },
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
{ 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P' },
{ 'T', 'H', 'B', 'Q', 'K', 'B', 'H', 'T' } };
а вот содержание метода, который создает нормальную пешку
for(int i=0; i<8; i++) {
for(int j=0; j<8;j++) {
if(board[j][i] == 'P') {
Ellipse2D.Double ellipse = new Ellipse2D.Double(i * getWidth() / 8 + 20,
j * getHeight() / 8 + 20,
getWidth()/8 - 40,getHeight()/8 - 40);
g2d.setPaint(new GradientPaint(i * getWidth() / 8 , j * getHeight() / 8 + 20, Color.orange, i * getWidth() / 8, j * getHeight() / 8 + 60,
Color.pink, false) );
g2d.fill(ellipse);
RoundRectangle2D.Double roundRect = new RoundRectangle2D.Double(i*getWidth() / 8 + 20,
j*getHeight() / 8 + 10,
getWidth()/8 - 40, getHeight()/8-70,5,5);
g2d.setPaint(new GradientPaint(i * getWidth() / 8 , j * getHeight() / 8 + 20, new Color(20,20,150), i * getWidth() / 8, j * getHeight() / 8 + 60,
new Color(20, 20, 100), false) );
g2d.fill(roundRect);
}
}
}
вероятно, не самый чистый код для этого, если есть какие-либо предложения, чтобы сделать это лучше, пожалуйста, предложите!
Теперь настоящая проблема, и мой вопрос, однако, заключается в том, что мы должны иметь возможность перетаскивать эти множественные фигуры одновременно в другое место на доске, и я, честно говоря, понятия не имею, как это преодолеть.
Любая помощь, которую вы, ребята, можете оказать мне, будет очень признательна!
Заранее спасибо!