2015-01-08 1 views
0

Я хочу создать случайное число, а затем создать 9 прямоугольников, но один из них будет другого цвета, один с другим цветом будет соответствовать случайному числу, так что я сделали это, но код слишком длинный, как я могу сделать его короче?Случайный и графический слишком длинный код

public void paint(Graphics g) { 
    rand = new Random(); 
    n = rand.nextInt(9) + 1; 
    if (n == 1) { 
     g.setColor(Color.LIGHT_GRAY); 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     g.setColor(Color.DARK_GRAY); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } else if (n == 2) { 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     g.setColor(Color.LIGHT_GRAY); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     g.setColor(Color.DARK_GRAY); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } else if (n == 3) { 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     g.setColor(Color.LIGHT_GRAY); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     g.setColor(Color.DARK_GRAY); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } else if (n == 4) { 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     g.setColor(Color.LIGHT_GRAY); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     g.setColor(Color.DARK_GRAY); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } else if (n == 5) { 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     g.setColor(Color.LIGHT_GRAY); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     g.setColor(Color.DARK_GRAY); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } else if (n == 6) { 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     g.setColor(Color.LIGHT_GRAY); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     g.setColor(Color.DARK_GRAY); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } else if (n == 7) { 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     g.setColor(Color.LIGHT_GRAY); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     g.setColor(Color.DARK_GRAY); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } else if (n == 8) { 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     g.setColor(Color.LIGHT_GRAY); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     g.setColor(Color.DARK_GRAY); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } else { 
     rec1 = new Rectangle(10, 130, 50, 50); 
     g.fillRect((int) rec1.getX(), (int) rec1.getY(), 
       (int) rec1.getWidth(), (int) rec1.getHeight()); 
     rec2 = new Rectangle(70, 130, 50, 50); 
     g.fillRect((int) rec2.getX(), (int) rec2.getY(), 
       (int) rec2.getWidth(), (int) rec2.getHeight()); 
     rec3 = new Rectangle(130, 130, 50, 50); 
     g.fillRect((int) rec3.getX(), (int) rec3.getY(), 
       (int) rec3.getWidth(), (int) rec3.getHeight()); 
     rec4 = new Rectangle(10, 70, 50, 50); 
     g.fillRect((int) rec4.getX(), (int) rec4.getY(), 
       (int) rec4.getWidth(), (int) rec4.getHeight()); 
     rec5 = new Rectangle(70, 70, 50, 50); 
     g.fillRect((int) rec5.getX(), (int) rec5.getY(), 
       (int) rec5.getWidth(), (int) rec5.getHeight()); 
     rec6 = new Rectangle(130, 70, 50, 50); 
     g.fillRect((int) rec6.getX(), (int) rec6.getY(), 
       (int) rec6.getWidth(), (int) rec6.getHeight()); 
     rec7 = new Rectangle(10, 10, 50, 50); 
     g.fillRect((int) rec7.getX(), (int) rec7.getY(), 
       (int) rec7.getWidth(), (int) rec7.getHeight()); 
     rec8 = new Rectangle(70, 10, 50, 50); 
     g.fillRect((int) rec8.getX(), (int) rec8.getY(), 
       (int) rec8.getWidth(), (int) rec8.getHeight()); 
     g.setColor(Color.LIGHT_GRAY); 
     rec9 = new Rectangle(130, 10, 50, 50); 
     g.fillRect((int) rec9.getX(), (int) rec9.getY(), 
       (int) rec9.getWidth(), (int) rec9.getHeight()); 
    } 

} 

Новый код ::

private static void drawRectangle(Graphics g, int column, int row, 
     Color color) { 
    g.setColor(color); 
    g.fillRect(column * 60 + 10, row * 60 + 10, 50, 50); 
    n = rand.nextInt(9); 
    for (row = 0; row < 3; row++) { 
     for (column = 0; column < 3; column++) { 
      drawRectangle(g, column, row, 
        n == row * 3 + column ? Color.LIGHT_GRAY 
          : Color.DARK_GRAY); 
     } 
    } 
} 
+0

Знаете ли вы о петлях и массивах? –

+1

Создайте 8 прямоугольников. Затем проверьте случайное число. Таким образом, вы создаете только один прямоугольник для любого возможного случая. Или вы можете создать 9 и просто установить цвет заливки для случая. –

+0

Вам действительно нужны объекты «Прямоугольник»? –

ответ

4

Я бы начать с написания вспомогательный метод:

private static void drawRectangle(Graphics g, int column, int row, Color color) { 
    // TODO: Remember the previous color of g and reset it afterwards? 
    g.setColor(color); 
    g.fillRect(column * 60 + 10, row * 60 + 10, 50, 50); 
} 

Затем в коде, который должен рисовать прямоугольники (например, когда код в вашем вопросе) используйте вложенный цикл, чтобы нарисовать все 9 прямоугольников, разработав цвет каждого прямоугольника на основе значения n:

// It's simpler to use n being 0 to 8, if that's okay with the rest of your code. 
n = rand.nextInt(9); 
for (int row = 0; row < 3; row++) { 
    for (int column = 0; column < 3; column++) { 
     drawRectangle(g, column, row, 
      n == row * 3 + column ? Color.LIGHT_GRAY : Color.DARK_GRAY); 
    } 
} 

Это означает, что на самом деле вам не нужны объекты Rectangle. Если вы это сделаете, вы измените метод drawRectangle для создания и возврата Rectangle, а затем либо получите Rectangle[], либо List<Rectangle>, либо, возможно, Rectangle[][] в зависимости от того, что вы хотите с ними делать. Я бы настоятельно рекомендовал вам не просто иметь 9 отдельных переменных.

+0

Очень чистый код +1 – Hayden

+0

Я не понял его: \ what is int row и int column, какой цвет :(можете ли вы сделать Объяснение ..? – user3731180

+0

Можете ли вы увидеть новый код в редактировании .. Я в основном скопировал ваш, но он дает пустой JFrame .. – user3731180