Заливка разным цветом по спирали

Рейтинг: 1Ответов: 1Опубликовано: 26.02.2015

У меня есть шахматная доска, надо пройтись по ней по спирали и закрасить квадраты разным цветом (сори за украинские комменты).

Дайте хотя бы какой-нибудь алгоритм или кусок кода, чтобы можно было понять, как реализовать эту задачу.

Вот код:

   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;
        }
    }
}

Ответы

Ответов пока нет.