Заливка разным цветом по спирали
У меня есть шахматная доска, надо пройтись по ней по спирали и закрасить квадраты разным цветом (сори за украинские комменты).
Дайте хотя бы какой-нибудь алгоритм или кусок кода, чтобы можно было понять, как реализовать эту задачу.
Вот код:
package com.company;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
/**
*
* @author Administrator
*/
public class Main {
public static void main(String[] args)
{
BFrame frame = new BFrame(); // створюю новий фрейм
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
/**
A frame that contains a panel with drawings
*/
class BFrame extends JFrame{//ініціалізація вікна
public BFrame()
{
setSize(440, 460); //розмір вікна
setTitle("Lab1"); //тайтл
DrawBoard panel = new DrawBoard();
Container contentPane = getContentPane();
contentPane.add(panel);
}
}
/**
тут
*/
class DrawBoard extends JPanel //тут буде те що буде відображатись у вікні
{
public void paintComponent(Graphics g)//виклик компоненту для створення шахматної дошки
{
BFrame frame = new BFrame();
int XX=10;//початок по х
int YY=10;//по у
int a_x=XX; //координата х
int b_y=YY; //координата у
int n=8; // пропуск між квадратами
int size=50; //розмір кожного квадрата
boolean rect=true; //змінна квадрата
setBackground(new Color(0x50390E));//колір бекграунду
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g; //малюю квадрати
for(int j=0;j<n;j++)
{
if(j%2==0) //якщо парне то чорний, ні то білий
{rect=false;}
else if(j%2==1)
{rect=true;}
a_x=XX;
for(int i=0;i<n;i++)
{
if(rect==true) //якщо тру то білий колір, інакше - чорний
{
g2.setPaint(Color.WHITE);
g2.fill(new Rectangle2D.Double(a_x, b_y, size, size));
rect=false;
}
else
{
g2.setPaint(Color.BLACK);
g2.fill(new Rectangle2D.Double(a_x,b_y,size,size));
rect=true;
}
a_x+=size;
}
b_y+=size;
}
}
}
Источник: Stack Overflow на русском