簡體   English   中英

java Checker board問題

[英]java Checker board issues

所以我有這個程序,要求用戶提供多個行和列,然后使其成為一個棋盤但我的問題是,它只適用於奇數,如果用戶要再次放入9和9它會顯示方格板,但如果輸入偶數,則只顯示白色和黑色的列

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

public class Checkers {

    public static void main(String[] args) {
        JFrame theGUI = new JFrame();
        theGUI.setTitle("Checkers");
        String inputStr = JOptionPane.showInputDialog("Number of rows");
        if (inputStr == null) return;
        int rows = Integer.parseInt(inputStr);
        inputStr = JOptionPane.showInputDialog("Number of Columns");
        if (inputStr == null) return;
        int cols = Integer.parseInt(inputStr);
        theGUI.setSize(cols * 50 , rows * 50);
        theGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container pane = theGUI.getContentPane();
        pane.setLayout(new GridLayout(rows, cols));
        for (int i = 1; i <= rows * cols ;i ++) {
            if(i % 2 == 0){
              ColorPanel panel = new ColorPanel(Color.white);
              pane.add(panel);
            }else{
                ColorPanel panel = new ColorPanel(Color.black);
                pane.add(panel);
            }
        }
        theGUI.setVisible(true);
    } 
}

您的示例在單個循環中標識偶數。 而是使用嵌套循環來識別交替的磁貼:

g.setColor(Color.lightGray);
…
for (int row = 0; row < h; row++) {
    for (int col = 0; col < w; col++) {
        if ((row + col) % 2 == 0) {
            g.fillRect(col * TILE, row * TILE, TILE, TILE);
        }
    }
}

這里有一個完整的例子。

圖片

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM