import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
public class Wuziqi
{
BufferedImage table;
BufferedImage black;
BufferedImage white;
BufferedImage selected;
JButton OnceMore = new JButton("再来一盘");
private static int BOARD_SIZE = 15;
private final int TABLE_WIDTH = 535;
private final int TABLE_HEIGHT = 536;
private final int RATE =TABLE_WIDTH/BOARD_SIZE;
private final int X_OFFSET = 5;
private final int Y_OFFSET = 6;
private String[][] board = new String[BOARD_SIZE][BOARD_SIZE];
JFrame f = new JFrame("五子棋游戏");
ChessBoard chessBoard = new ChessBoard();
private int SelectedX = -1;
private int SelectedY = -1;
private int num = 0;
private int whoWin=0;//0谁都没赢,1为白方赢,2为黑方赢
public void init() throws Exception
{
table = ImageIO.read(new File("image/board.jpg"));
black = ImageIO.read(new File("image/black.gif"));
white = ImageIO.read(new File("image/white.gif"));
selected = ImageIO.read(new File("image/selected.gif"));
for(int i=0;i<BOARD_SIZE;i++)
{
for(int j=0;j<BOARD_SIZE;j++)
{
board[i][j]="+";
}
}
OnceMore.addActionListener(new OnceMoreEvent());
chessBoard.setPreferredSize(new Dimension(TABLE_WIDTH ,TABLE_HEIGHT));
chessBoard.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int xPos = (int)((e.getX()-X_OFFSET)/RATE);
int yPos = (int)((e.getY()-Y_OFFSET)/RATE);
int dangqian=0;
int youxiaowei = 0;
if(board[xPos][yPos]=="+" && num%2==1)
{
board[xPos][yPos]="●";
num++;
dangqian=0;
youxiaowei=0;
for(int i = 0; i<BOARD_SIZE; i++)
{
if(board[xPos][i]=="●" && youxiaowei==0)
{
youxiaowei = 1;
dangqian = i;
}
if(board[xPos][i]=="●" && youxiaowei>0 && i-dangqian == 1)
{
youxiaowei++;
dangqian = i;
if(youxiaowei==5)
{
whoWin=2;
youxiaowei=0;
dangqian=0;
}
}
else if(board[xPos][i]=="○" || board[xPos][i]=="+")
{
youxiaowei=0;
}
}
dangqian=0;
youxiaowei=0;
for(int i = 0; i<BOARD_SIZE; i++)
{
if(board[i][yPos]=="●" && youxiaowei==0)
{
youxiaowei = 1;
dangqian = i;
}
if(board[i][yPos]=="●" && youxiaowei>0 && i-dangqian == 1)
{
youxiaowei++;
dangqian = i;
if(youxiaowei==5)
{
whoWin=2;
youxiaowei=0;
dangqian=0;
}
}
else if(board[i][yPos]=="○" || board[i][yPos]=="+")
{
youxiaowei=0;
}
}
//01 黑棋写斜插扫描判断连珠数量 12 23 34 斜角类型
dangqian=0;
youxiaowei=0;
int chazhi=0;
if(xPos>=yPos)
{
chazhi=xPos-yPos;
for(int i = 0; i<BOARD_SIZE; i++)
{
if(chazhi+i<15)
{
if(board[chazhi+i][i]=="●" && youxiaowei==0)
{
youxiaowei = 1;
dangqian = i;
}
if(board[chazhi+i][i]=="●" && youxiaowei>0 && i-dangqian == 1)
{
youxiaowei++;
dangqian = i;
if(youxiaowei==5)
{
whoWin=2;
youxiaowei=0;
dangqian=0;
}
}
else if(board[chazhi+i][i]=="○" || board[chazhi+i][i]=="+")
{
youxiaowei=0;
}
}
}
}
//01黑棋写斜插扫描判断连珠数量 12 23 34 斜角类型
//02 黑棋写斜插扫描判断连珠数量 21 32 43 斜角类型
dangqian=0;
youxiaowei=0;
chazhi=0;
if(xPos < yPos)
{
chazhi=yPos-xPos;
for(int i = 0; i<BOARD_SIZE; i++)
{
if(chazhi+i<15)
{
if(board[i][chazhi+i]=="●" && youxiaowei==0)
{
youxiaowei = 1;
dangqian = i;
}
if(board[i][chazhi+i]=="●" && youxiaowei>0 && i-dangqian == 1)
{
youxiaowei++;
dangqian = i;
if(youxiaowei==5)
{
whoWin=2;
youxiaowei=0;
dangqian=0;
}
}
else if(board[i][chazhi+i]=="○" || board[i][chazhi+i]=="+")
{
youxiaowei=0;
}
}
}
}
//02黑棋写斜插扫描判断连珠数量 21 23 43 斜角类型
//03 黑棋写斜插扫描判断连珠数量 20 11 02 斜角类型
dangqian=0;
youxiaowei=0;
int hezhi=0;
hezhi=yPos+xPos;
if(hezhi < 15)
{
for(int i = 0; i<BOARD_SIZE; i++)
{
if(i<=hezhi)
{
if(board[hezhi-i][i]=="●" && youxiaowei==0)
{
youxiaowei = 1;
dangqian = i;
}
if(board[hezhi-i][i]=="●" && youxiaowei>0 && i-dangqian == 1)
{
youxiaowei++;
dangqian = i;
if(youxiaowei==5)
{
whoWin=2;
youxiaowei=0;
dangqian=0;
}
}
else if(board[hezhi-i][i]=="○" || board[hezhi-i][i]=="+")
{
youxiaowei=0;
}
}
}
}
//03黑棋写斜插扫描判断连珠数量 20 11 02 斜角类型
//04 黑棋写斜插扫描判断连珠数量 13,0 12,1 11,2 斜角类型
dangqian=0;
youxiaowei=0;
hezhi=0;
hezhi=yPos+xPos;
if(hezhi >= 14)
{
for(int i = 0; i<BOARD_SIZE; i++)
{
if(i <= 2*(BOARD_SIZE-1)-hezhi)
{
if(board[BOARD_SIZE-1-i][hezhi-BOARD_SIZE+1+i]=="●" && youxiaowei==0)
{
youxiaowei = 1;
dangqian = i;
}
if(board[BOARD_SIZE-1-i][hezhi-BOARD_SIZE+1+i]=="●" && youxiaowei>0 && i-dangqian == 1)
{
youxiaowei++;
dangqian = i;
if(youxiaowei==5)
{
whoWin=2;
youxiaowei=0;
dangqian=0;
}
}
else if(board[BOARD_SIZE-1-i][hezhi-BOARD_SIZE+1+i]=="○" || board[BOARD_SIZE-1-i][hezhi-BOARD_SIZE+1+i]=="+")
{
youxiaowei=0;
}
}
}
}
//04黑棋写斜插扫描判断连珠数量 13,0 12,1 11,2 斜角类型
System.out.println(youxiaowei);
System.out.println(dangqian);
}
else if(board[xPos][yPos]=="+" && num%2==0)
{
board[xPos][yPos]="○";
num++;
dangqian=0;
youxiaowei=0;
for(int i = 0; i<BOARD_SIZE; i++)
{
if(board[xPos][i]=="○" && youxiaowei==0)
{
youxiaowei = 1;
dangqian = i;
}
if(board[xPos][i]=="○" && youxiaowei>0 && i-dangqian == 1)
{
youxiaowei++;
dangqian = i;
if(youxiaowei==5)
{
whoWin=1;
youxiaowei=0;
dangqian=0;
}
}
else if(board[xPos][i]=="●" || board[xPos][i]=="+")
{
youxiaowei=0;
}
}
dangqian=0;
youxiaowei=0;
for(int i = 0; i<BOARD_SIZE; i++)
{
if(board[i][yPos]=="○" && youxiaowei==0)
{
youxiaowei = 1;
dangqian = i;
}
if(board[i][yPos]=="○" && youxiaowei>0 && i-dangqian == 1)
{
youxiaowei++;
dangqian = i;
if(youxiaowei==5)
{
whoWin=1;
youxiaowei=0;
dangqian=0;
}
}
else if(board[i][yPos]=="●" || board[i][yPos]=="+")
{
youxiaowei=0;
}
}
//05 白棋写斜插扫描判断连珠数量 12 23 34 斜角类型
dangqian=0;
youxiaowei=0;
int chazhi=0;
if(xPos>=yPos)
{
chazhi=xPos-yPos;
for(int i = 0; i<BOARD_SIZE; i++)
{
if(chazhi+i<15)
{
if(board[chazhi+i][i]=="○" && youxiaowei==0)
{
youxiaowei = 1;
da