Algorithm 四赢条件 我有一个连接4程序,它使用一个很大的IF语句来检查是否有一个优胜者,但它似乎只与中间代码中的瓦片(JButtons)一起工作。边缘,没有那么多。。。若你们能看到我做错了什么,那个么若这个国家能够运作,那个就太好了

Algorithm 四赢条件 我有一个连接4程序,它使用一个很大的IF语句来检查是否有一个优胜者,但它似乎只与中间代码中的瓦片(JButtons)一起工作。边缘,没有那么多。。。若你们能看到我做错了什么,那个么若这个国家能够运作,那个就太好了,algorithm,jframe,Algorithm,Jframe,源代码: import javax.swing.JPanel; import javax.swing.JButton; import java.awt.GridLayout; import java.awt.Color; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class ConnectFour extends JPanel { private int tur

源代码:

import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.GridLayout;
import java.awt.Color;    
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class ConnectFour extends JPanel
{
    private int turn;
    private final JButton BOARD[][];
    private final Color DEFAULT_COLOR;

    public ConnectFour()
    {
        super(new GridLayout(6, 7));
        turn = 0;

        BOARD = new JButton[6][7];
        HandlerClass handler = new HandlerClass();
        for(int i = 0; i < BOARD.length; i++)
        {
            for(int j = 0; j < BOARD[i].length; j++)
            {
                BOARD[i][j] = new JButton("");
                BOARD[i][j].addActionListener(handler);
                if(!(i == BOARD.length - 1))
                {
                    BOARD[i][j].setEnabled(false);
                }
                add(BOARD[i][j]);
            }
        }
        DEFAULT_COLOR = BOARD[0][0].getBackground();
    }

public static void main(String[] args)
{
    javax.swing.JFrame frame = new javax.swing.JFrame("test");
    frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 300);
    frame.setLocationRelativeTo(null);
    frame.add(new ConnectFour());
    frame.setVisible(true);
}

private class HandlerClass implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        JButton source = ((JButton) event.getSource());
        if(turn % 2 == 0)
        {
            source.setBackground(Color.RED);
            source.setEnabled(false);
        }
        else
        {
            source.setBackground(Color.BLACK);
            source.setEnabled(false);
        }

        boolean winner = checkWinner();

        if(winner)
        {
            System.out.println("Player " + (turn % 2 + 1) + " wins!");
        }
        //---------------------------------
        for(int i = 0; i < BOARD.length; i++)
        {
            for(int j = 0; j < BOARD[i].length; j++)
            {
                if(BOARD[i][j].equals(source))
                {
                    try
                    {
                        BOARD[i - 1][j].setEnabled(true);
                        break;
                    }
                    catch(ArrayIndexOutOfBoundsException e)
                    {
                        //System.out.println("Hello, World!");
                    }
                }
            }
        }
        turn++;
    }

    private boolean checkWinner()
    {
        for(int i = 0; i < BOARD.length; i++)
        {
            for(int j = 0; j < BOARD[i].length; j++)
            {
                try
                {
                    if(((BOARD[i][j].getBackground().equals(BOARD[i + 1][j].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i + 2][j].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i + 3][j].getBackground()))
                     && !(BOARD[i][j].getBackground().equals(DEFAULT_COLOR)))
                    || ((BOARD[i][j].getBackground().equals(BOARD[i - 1][j].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i - 2][j].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i - 3][j].getBackground()))
                     && !(BOARD[i][j].getBackground().equals(DEFAULT_COLOR)))
                    || ((BOARD[i][j].getBackground().equals(BOARD[i][j + 1].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i][j + 2].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i][j + 3].getBackground()))
                     && !(BOARD[i][j].getBackground().equals(DEFAULT_COLOR)))
                    || ((BOARD[i][j].getBackground().equals(BOARD[i][j - 1].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i][j - 2].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i][j - 3].getBackground()))
                     && !(BOARD[i][j].getBackground().equals(DEFAULT_COLOR)))
                    || ((BOARD[i][j].getBackground().equals(BOARD[i + 1][j + 1].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i + 2][j + 2].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i + 3][j + 3].getBackground()))
                     && !(BOARD[i][j].getBackground().equals(DEFAULT_COLOR)))
                    || ((BOARD[i][j].getBackground().equals(BOARD[i + 1][j - 1].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i + 2][j - 2].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i + 3][j - 3].getBackground()))
                     && !(BOARD[i][j].getBackground().equals(DEFAULT_COLOR)))
                    || ((BOARD[i][j].getBackground().equals(BOARD[i - 1][j + 1].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i - 2][j + 2].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i - 3][j + 3].getBackground()))
                     && !(BOARD[i][j].getBackground().equals(DEFAULT_COLOR)))
                    || ((BOARD[i][j].getBackground().equals(BOARD[i - 1][j - 1].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i - 2][j - 2].getBackground()))
                     && (BOARD[i][j].getBackground().equals(BOARD[i - 3][j - 3].getBackground()))
                     && !(BOARD[i][j].getBackground().equals(DEFAULT_COLOR))))
                        return true;
                }
                catch(ArrayIndexOutOfBoundsException e)
                {

                }
            }
        }
        return false;
    }
}
import javax.swing.JPanel;
导入javax.swing.JButton;
导入java.awt.GridLayout;
导入java.awt.Color;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
公共类ConnectFour扩展了JPanel
{
私人内翻;
专用最终接线板[];
私有最终颜色默认颜色;
公共交通(四)
{
超级(新网格布局(6,7));
匝数=0;
BOARD=新的JButton[6][7];
HandlerClass handler=新的HandlerClass();
对于(int i=0;i            if(((BOARD[i][j].getBackground().equals(BOARD[i + 1][j].getBackground()))
             && (BOARD[i][j].getBackground().equals(BOARD[i + 2][j].getBackground()))
             && (BOARD[i][j].getBackground().equals(BOARD[i + 3][j].getBackground()))