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()))