2016-03-08 55 views
2

我已經成功地使用彩色面板將棋盤放在一起,但只有當用戶輸入行和列的奇數時。否則,當輸入偶數時,它只會顯示交替的彩色列。我正在努力想出如何編寫一個短片段來檢查是否奇怪,甚至通過使用顏色甚至改變顏色的結果。以下是我的代碼。謝謝,讓我輕鬆我對編程非常陌生! :-)Java棋盤,奇數/偶數%2面板

此外,我創建了一個單獨的ColorPanel類來構建彩色面板,然後拉入到我的主程序中。我沒有打擾下面的代碼。

import javax.swing.*; 
import java.awt.*; 

public class Checkerboard extends JPanel{ 

public static void main(String[] args) { 
    JFrame chBoard = new JFrame(); 
    chBoard.setTitle("Checkerboard"); 
    chBoard.setSize(800,800); 
    chBoard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    String inputStr = JOptionPane.showInputDialog("Number of rows", "5"); 
    if (inputStr == null) return; 
    int row = Integer.parseInt(inputStr); 

    inputStr = JOptionPane.showInputDialog("Number of columns", "5"); 
    if (inputStr == null) return; 
    int col = Integer.parseInt(inputStr); 

    Container pane = chBoard.getContentPane(); 
    pane.setLayout(new GridLayout(row, col)); 

    Color BoxColor = Color.red; 

    for (int counter = 1; counter <= row * col; counter++) 
     { 
     if (BoxColor == Color.red) 
      BoxColor = Color.black; 
     else 
      BoxColor = Color.red; 

     ColorPanel panel = new ColorPanel(BoxColor); 
     pane.add(panel); 
     } 

    chBoard.setVisible(true); 
} 
} 

回答

0

你的循環更改爲:

for (int x = 0; x < row; x++) { 
    for(int y = 0; y < col; y++) { 
     if((x + y)%2 == 0) { 
      BoxColor = Color.red; 
     } else { 
      BoxColor = Color.black; 
     } 

     ... 

    } 
} 
+0

非常感謝你這是有道理的 – izzyfanto

0

就像我說的,我是新來編程,但是我真的很喜歡學習經驗。我希望這可以幫助其他人學習經驗。

無論如何,我想我用獨立的ColorPanel類爲自己創造了更多的工作。因此,我不是創建一個單獨的ColorPanel類來構建彩色面板,而是將其更改爲使用預先存在的JPanel類在主程序內創建面板。因此,而不是:

ColorPanel panel = new ColorPanel(BoxColor); 

+的顏色面板類 ...

我把:

JPanel panel = new JPanel(); 
panel.setBackground(BoxColor); 

主程序中,並刪除了額外的顏色面板類。

對不起,我只是想解釋清楚。

此外,由於賈森,他真的幫我找出使用兩個

int x & y 

計數

row & col 

,然後把它們相加,這使我用

的想法
%2=0 

找出我是在奇數還是偶數小組。

希望這可以幫助別人! :-)

最終代碼看起來是這樣的:

import javax.swing.*; 
import java.awt.*; 

public class Checkerboard extends JPanel{ 

public static void main(String[] args) { 
    JFrame chBoard = new JFrame(); 
    chBoard.setTitle("Checkerboard"); 
    chBoard.setSize(800,800); 
    chBoard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    String inputStr = JOptionPane.showInputDialog("Number of rows", "5"); 
    if (inputStr == null) return; 
    int row = Integer.parseInt(inputStr); 

    inputStr = JOptionPane.showInputDialog("Number of columns", "5"); 
    if (inputStr == null) return; 
    int col = Integer.parseInt(inputStr); 

    Container pane = chBoard.getContentPane(); 
    pane.setLayout(new GridLayout(row, col)); 

    Color BoxColor = Color.red; 

    for (int x = 0; x < row; x++) { 
     for(int y = 0; y < col; y++) { 
      if((x + y)%2 == 0) { 
       BoxColor = Color.red;} 
      else{ 
      BoxColor = Color.black;} 

     JPanel panel = new JPanel(); 
     panel.setBackground(BoxColor); 

     pane.add(panel); 
     } 

    chBoard.setVisible(true); 
} 
} 
}