Java可视化象棋!

import java.awt.*;
import java.awt.event.*;
import javax.imageio.*;
import java.io.*;
import javax.swing.*;
import java.awt.image.*;

public class XiangQi
{
JFrame frame = new JFrame("树峰象棋");
//红方所有棋子
BufferedImage rj;
BufferedImage rm;
BufferedImage rx;
BufferedImage rs;
BufferedImage rk;
BufferedImage rp;
BufferedImage rz;
//黑方所有棋子
BufferedImage hj;
BufferedImage hm;
BufferedImage hx;
BufferedImage hs;
BufferedImage hk;
BufferedImage hp;
BufferedImage hz;
//定义棋盘
BufferedImage table;
//定义棋盘大小
private int BOARD_SIZEX = 9;
private int BOARD_SIZEY = 10;
//定义棋盘宽高多少个像素
private final int TABLE_WIDTH = 396;
private final int TABLE_HETGHT = 398;
//定义棋盘座标的像素值和棋盘座标之间的比率
private final int RATE = TABLE_WIDTH/BOARD_SIZEY;
//定义一个二维数组来充当棋盘
private char[][] board = new char[BOARD_SIZEX][BOARD_SIZEY];
ChessBoard chessBoard = new ChessBoard();
//定义棋盘座标的像素值和棋盘数组之间的偏移距
private final int X_OFFSET = 20;
private final int Y_OFFSET = 8;
//保存鼠标拖动前和后的座标
int xPos1 = -1;
int yPos1 = -1;
int xPos2 = -1;
int yPos2 = -1;
//两方每次只能走一步限定标识符
boolean n = true;

public void init()throws Exception
{
table = ImageIO.read(new File("image/ChessBoard.bmp"));
rj = ImageIO.read(new File("image/RED_J.bmp"));
rm = ImageIO.read(new File("image/RED_M.bmp"));
rx = ImageIO.read(new File("image/RED_X.bmp"));
rs = ImageIO.read(new File("image/RED_S.bmp"));
rk = ImageIO.read(new File("image/RED_K.bmp"));
rp = ImageIO.read(new File("image/RED_P.bmp"));
rz = ImageIO.read(new File("image/RED_B.bmp"));
hj = ImageIO.read(new File("image/BLACK_J.bmp"));
hm = ImageIO.read(new File("image/BLACK_M.bmp"));
hx = ImageIO.read(new File("image/BLACK_X.bmp"));
hs = ImageIO.read(new File("image/BLACK_S.bmp"));
hk = ImageIO.read(new File("image/BLACK_K.bmp"));
hp = ImageIO.read(new File("image/BLACK_P.bmp"));
hz = ImageIO.read(new File("image/BLACK_B.bmp"));

for (int i = 0; i < BOARD_SIZEX; i++)
{
for(int j = 0; j < BOARD_SIZEY; j++)
{
board[i][j] = '*';
}
}

board[0][0] = board[8][0] = 'J';
board[1][0]=board[7][0]='M';
board[2][0]=board[6][0]='X';
board[3][0]=board[5][0]='S';
board[4][0]='K';
board[1][2]=board[7][2]='P';
board[0][3]=board[2][3]=board[4][3]=
board[6][3]=board[8][3]='B';
board[0][6]=board[2][6]=board[4][6]=
board[6][6]=board[8][6]='b';
board[1][7]=board[7][7]='p';
board[0][9]=board[8][9]='j';
board[1][9]=board[7][9]='m';
board[2][9]=board[6][9]='x';
board[3][9]=board[5][9]='s';
board[4][9]='k';

chessBoard.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{

if((board[xPos2][yPos2] < 'a' && board[xPos1][yPos1] >= 'a')
|| (board[xPos2][yPos2] >= 'a' && board[xPos1][yPos1] < 'a'))
{
xPos1 = (int)(e.getX() - X_OFFSET) / RATE;
yPos1 = (int)(e.getY() - Y_OFFSET) / RATE;
n = true;
}
else
{
n = false;
xPos2 = xPos1;
yPos2 = yPos1;
}
}
});

chessBoard.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseMoved(MouseEvent e)
{
xPos1 = (int) ((e.getX() - X_OFFSET) / RATE);
yPos1 = (int) ((e.getY() - Y_OFFSET) / RATE);
chessBoard.repaint();
}
});

chessBoard.addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
if(n)
{
xPos2 = (int)(e.getX() - X_OFFSET) / RATE;
yPos2 = (int)(e.getY() - Y_OFFSET) / RATE;
}
else
{
xPos2 = xPos1;
yPos2 = yPos1;
}

//如果该棋子在两个将军之间
if( board[xPos1][yPos1] != 'k'
&& board[xPos1][yPos1] != 'K' && true == n)
{
if((xPos1 == 3) || (xPos1 == 4) || (xPos1 == 5))
{
if((board[xPos1][yPos1] == 'm') ||
(board[xPos1][xPos1] == 'M') ||
(board[xPos1][yPos1] == 'x') ||
(board[xPos1][yPos1] == 'X') ||
(board[xPos1][yPos1] == 's') ||
(board[xPos1][yPos1] == 'S'))
{
//如果两将之间只有一个子且是马,象,士,则不能动
if(isBetween(board[xPos1][yPos1]))
walk(board[xPos1][yPos1], xPos1, yPos1);
}
else if(board[xPos1][yPos1] != 'k' &&
(board[xPos1][yPos1] != 'K'))
{

int i =0;
int j = 0;
int y1 = 0;
int y2 = 0;

//找出红方将的纵座标
for(i = 3; i < 6; i++)
{
for(j=0;j<3;j++)
{
if(board[i][j]=='K')
{
y1 = j;
break;
}
}
}
//找出黑方将的纵座标
for(i = 3; i < 6; i++)
{
for(j=7;j<10;j++)
{
if(board[i][j]=='k')
{
y2 = j;
break;
}
}
}
//炮不能直接吃将所以小于目的座标y2,大于y1
if(isBetween(board[xPos1][yPos1]))
walk(board[xPos1][yPos1], xPos1, yPos1);
else if((board[xPos1][yPos1] == 'p') ||
(board[xPos1][yPos1] == 'P') &&
(yPos2 < y2) && (yPos2 > y1))
{

if(xPos1 == xPos2)
{
board[xPos2][yPos2] = board[xPos1][yPos1];
board[xPos1][yPos1] = '*';
}
}
else if((board[xPos1][yPos1] == 'j') ||
(board[xPos1][yPos1] == 'J') )
{
if(xPos1 == xPos2)
{
board[xPos2][yPos2] = board[xPos1][yPos1];
board[xPos1][yPos1] = '*';
chessBoard.repaint();
}
}

//即兵在两将之间点的规则
else
{
if(board[xPos1][yPos1] == 'B')
{
if((xPos1 == xPos2) && (yPos2 == yPos1 +1))
{
board[xPos2][yPos2] = board[xPos1][yPos1];
board[xPos1][yPos1] = '*';
chessBoard.repaint();
}
}
else if(board[xPos1][yPos1] == 'b')
{
if((xPos1 == xPos2) && (yPos2 == yPos1 -1))
{
board[xPos2][yPos2] = board[xPos1][yPos1];
board[xPos1][yPos1] = '*';
chessBoard.repaint();
}
}
}
}
}
else
{
walk(board[xPos1][yPos1], xPos1, yPos1);
}

}
else
{
if(board[xPos1][yPos1] != 'k'
&& board[xPos1][yPos1] != 'K')
{
xPos2 = xPos1;
yPos2 = yPos1;
}
walk(board[xPos1][yPos1], xPos1, yPos1);
}
over();
chessBoard.repaint();
}

});

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
chessBoard.setPreferredSize(new Dimension(TABLE_WIDTH, TABLE_HETGHT));
frame.add(chessBoard);
frame.pack();
frame.setVisible(true);
}

//具体走的每一细节的规则和步骤
public void walk(char chessman,int m,int n)
{
int a,b,cx=0,i;
// 要走的棋子的最终座标,就是走到哪
a = xPos2;
b = yPos2;
boolean go;
//自己不能吃自己棋子的规则限定
go=(((chessman>='A'&&chessman<='X')&&(board[a][b]>='a'
&&board[a][b]<='x'))||((chessman>='A'
&&chessman<='X')&&(board[a][b]=='*'))
||((chessman>='a'&&board[a][b]<='x')&&(board[a][b]>='A'
&&board[a][b]<='X')||(chessman>='a'&&chessman<='x')
&&(board[a][b]=='*')));

if(go)
{
//车的具体走法规则限定
if(chessman=='J'||chessman=='j')
{

//如果车的横轴方向从此地到目的地全是*,也就是从目前位置到要走到的位置之间没有任何棋子。
//往右走
for(i = m + 1; i < a && b == n; i++)
{
if(board[i][b]=='*')
continue;
else
break;
}
//符合规则,走!
if((i == a) && (b == n))
{
board[a][b]=chessman;
board[m][n]='*';
}
//车往左或往右一个位置走
else if(b==n&&(a==m+1||a==m-1))
{
board[a][b]=chessman;
board[m][n]='*';
}
//车往前或往后一个位置走
else if((b==n+1||b==n-1)&&a==m)
{
board[a][b]=chessman;
board[m][n]='*';
}
//车往左走(目前位置的左方)
else for(i=m-1;i>a;i--)
{
if(board[i][b]=='*')
continue;
else
break;
}
//满足条件,走!
if(i == a && b == n)
{
board[a][b]=chessman;
board[m][n]='*';
}
//车往下走
else for(i=n+1;i<b;i++)
{
if(board[m][i]=='*')
continue;
else
break;
}
//满足条件 ,走
if(i == b && a == m)
{
board[a][b]=chessman;
board[m][n]='*';
}
//车往上走
else for(i=n-1;i>b;i--)
{
if(board[m][i]=='*')
continue;
else
break;
}
//满足条件,走!
if(i == b && a == m)
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//炮的具体走法规则
if(chessman=='P' || chessman=='p')
{
//到目的地炮的右方没有棋子往右走
for(i=m+1;i<a&&b==n;i++)
{
if(board[i][b]=='*')
continue;
else
break;
}
//满足条件,走!
if((i == a) && (b == n))
{
board[a][b]=chessman;
board[m][n]='*';
}
//往左或右走一步
else if(b==n&&(a==m+1||a==m-1))
{
board[a][b]=chessman;
board[m][n]='*';
}
//往上或往下走一步
else if((b==n+1||b==n-1)&& (a==m))
{
board[a][b]=chessman;
board[m][n]='*';
}
//往左判断走不走
else for(i = m - 1; i > a && (b == n); i--)
{
if(board[i][b] == '*')
continue;
else
break;

}
//满足条件,走!
if((i == a) && (b == n))
{
board[a][b]=chessman;
board[m][n]='*';
}

//往下判断走不走
else for(i = n + 1;i < b && a == m; i++)
{
if(board[m][i]=='*')
continue;
else
break;
}
//满足条件,往下走!
if(i == b && m == a)
{
board[a][b]=chessman;
board[m][n]='*';
}

//往上判断走不走
else for(i = n - 1; i > b && a == m; i--)
{
if(board[m][i]=='*')
continue;
else
break;
}
//满足条件,往上走!
if(i == b && a == m)
{
board[a][b]=chessman;
board[m][n]='*';
}

//往右走!包括自己还有目标棋子如果他们中间只有一个棋子的话就往下走,
//否则保持原状。自己+目标棋子+中间棋子=3
else for(i = m, cx = 0; i <= a && b == n; i++)
{
if(board[i][b] != '*')
cx += 1;

}
//满足条件,往右走
if(cx == 3 && b == n)
{
board[a][b]=chessman;
board[m][n]='*';
}
//往左走!包括自己还有目标棋子如果他们中间只有一个棋子的话就往下走,
//否则保持原状。自己+目标棋子+中间棋子=3
else for(i = m, cx = 0;i >= a && b == n; i--)
{
if(board[i][b]!='*')
cx+=1;
}
//满足条件往左走
if(cx == 3 && b == n)
{
board[a][b]=chessman;
board[m][n]='*';
}
//往下走!包括自己还有目标棋子如果他们中间只有一个棋子的话就往下走,
//否则保持原状。自己+目标棋子+中间棋子=3
else for(i = n, cx = 0; i <= b; i++)
{
if(board[m][i] != '*')
cx += 1;
}
//满足条件往下走
if(cx == 3 && a == m)
{
board[a][b]=chessman;
board[m][n]='*';
}
//往上走!包括自己还有目标棋子如果他们中间只有一个棋子的话就往下走,
//否则保持原状。自己+目标棋子+中间棋子=3
else for(i = n, cx = 0; i >= b; i--)
{
if(board[m][i]!='*')
cx+=1;
}
//满足条件往上走
if(cx == 3 && a == m)
{
board[a][b]=chessman;
board[m][n]='*';
}
}

//一方的士兵走法和规则(横座标为0~4一方的)
if(chessman=='S')
{
//在有效区域才往下执行
if(b<=2&&a>=3&&a<=5)
{
//右斜向下
if(b==n+1&&a==m+1)
{
board[a][b]=chessman;
board[m][n]='*';
}
//左斜向向下
else if(b==n+1&&a==m-1)
{
board[a][b]=chessman;
board[m][n]='*';
}
//左向上
else if(b==n-1&&a==m-1)
{
board[a][b]=chessman;
board[m][n]='*';
}
//右向上
else if(b==n-1&&a==m+1)
{
board[a][b]=chessman;
board[m][n]='*';
}
}
}
//规则走法同上
if(chessman=='s')
{
if((b>=7&&b<=9)&&(a>=3&&a<=5))
{
//右向下
if(b==n+1&&a==m+1)
{
board[a][b]=chessman;
board[m][n]='*';
}
//左向下
else if(b==n+1&&a==m-1)
{
board[a][b]=chessman;
board[m][n]='*';
}
//左向上
else if(b==n-1&&a==m-1)
{
board[a][b]=chessman;
board[m][n]='*';
}
//右向上
else if(b==n-1&&a==m+1)
{
board[a][b]=chessman;
board[m][n]='*';
}
}
}

//兵(0~4座标的)
if(chessman=='B')
{
if(b==4)
{
//没过河,只能往前走
if(b == n + 1 && a == m)
{
board[a][b]=chessman; //满足条件走
board[m][n]='*';
}
}
//过河了
else if(b>=5)
{
if(b==n&&a==m+1) //往右移
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(b==n+1&&a==m) //往下走
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(b==n&&a==m-1) //往左走
{
board[a][b]=chessman;
board[m][n]='*';
}

}
}
//马的走法(日字规则)
if(chessman=='M'||chessman=='m')
{
//往右下角跳(竖着走)
if(b==n+2&&a==m+1)
{
//看有没有拌着马腿
if(board[m][n+1]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//往左下角跳(竖着走)
else if(b==n+2&&a==m-1)
{
//是否拌马腿
if(board[m][n+1]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//往右上角跳(竖着走)
else if(b==n-2&&a==m+1)
{
//是否拌着马腿
if(board[m][n-1]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//往左上角跳(竖着走)
else if(b==n-2&&a==m-1)
{
//看是否拌着马腿
if(board[m][n-1]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//横着(曰字规则)往右侧跳
else if(b==n+1&&a==m+2)
{
//有没有拌着马腿
if(board[m+1][n]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//横着往左下角跳
else if(b==n+1&&a==m-2)
{
//是否拌着马腿
if(board[m-1][n]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//横着往右上角跳
else if(b==n-1&&a==m+2)
{
if(board[m+1][n]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//横着往左上角跳
else if(b==n-1&&a==m-2)
{
if(board[m-1][n]=='*') //满足条件走
{
board[a][b]=chessman;
board[m][n]='*';
}
}
}
//兵的走法与规则同上(5~9座标的)
if(chessman=='b')
{
if(b==5)
{
if(b==n-1&&a==m)
{
board[a][b]=chessman;
board[m][n]='*';
}
}
else if(b<=4)
{
if(b==n&&a==m+1)
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(b==n-1&&a==m)
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(b==n&&a==m-1)
{
board[a][b]=chessman;
board[m][n]='*';
}
}
}
//象的走法(田字规则)
if(chessman=='X')
{
if(b<=4&&a<=8) //符合条件才往下执行
{
if(b==n+2&&a==m+2&&board[m+1][n+1]=='*') //往右下角跳
{
board[a][b]=chessman; //满足条件走
board[m][n]='*';
}
else if(b==n-2&&a==m-2&&board[m-1][n-1]=='*') //往左上角跳
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(b==n-2&&a==m+2&&board[m+1][n-1]=='*') //往右上角跳
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(a==m-2&&b==n+2&&board[m-1][n+1]=='*') //往左下角跳
{
board[a][b]=chessman;
board[m][n]='*';
}
}
}
//另一方象的规则同上
if(chessman=='x')
{
if(b>=5&&a<=8)
{
if(a==m+2&&b==n+2&&board[m+1][n+1]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(a==m-2&&b==n-2&&board[m-1][n-1]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(a==m+2&&b==n-2&&board[m+1][n-1]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(b==n+2&&a==m-2&&board[m-1][n+1]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
}
//将军的走法与规则
if(chessman=='K')
{
//存取对方将军的座标
int tempy = 0;
if(b>=0&&b<=2&&a>=3&&a<=5)
{
if((b==n+1||b==n-1)&&a==m)
{
board[a][b]=chessman;
board[m][n]='*';
}
else if((a == m + 1 || a == m - 1) && (b == n))
{
//找到对方将军的座标
for(int x = 3; x < 6; x++)
{
for(int y = 7; y < 10; y++)
{
if(board[x][y] == 'k')
{
tempy = y;
break;
}
}
}

for(i = b + 1, cx = 0; i < tempy; i++)
{
if(board[a][i] != '*')
cx++;
}

if((cx >0 || board[a][tempy] != 'k') && b == n)
{
board[a][b]=chessman;
board[m][n]='*';
}
/*else if(board[7][b]!='k'&&board[7][b]!='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(board[7][b]=='*')
{
if(board[8][b]!=a&&board[8][b]!='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(board[8][b]=='*')
{
if(board[9][b]!=a)
{
board[a][b]=chessman;
board[m][n]='*';
}
}
}*/

}
}
}

}
if(chessman=='k')
{
int tempy = 0;
if(b>=7&&b<=9&&a>=3&&a<=5)
{
if((b==n+1||b==n-1)&&a==m)
{
board[a][b]=chessman;
board[m][n]='*';
}
else if((a==m+1)||(a==m-1)&&(b==n))
{
for(int x = 3; x < 6; x++)
{
for(int y = 0; y < 3; y++)
{
if(board[x][y] == 'K')
{
tempy = y;
break;
}
}
}

for(i=b-1,cx=0;i>tempy;i--)
{
if(board[a][i]!='*')
cx++;
}
if((cx > 0 || board[a][tempy]!='K') && b == n)
{
board[a][b]=chessman;
board[m][n]='*';
}
/*
else if(board[2][b]=='*')
{
if(board[1][b]!='K'&&board[1][b]!='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
else if(board[1][b]=='*')
{
if(board[0][b]!='K')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
}*/
}
}
}

}
//判断是否要结束
public void over()
{
int end=0;
int i,j;
for(end = 0 , i = 3; i < 6; i++)
{
for(j=0;j<3;j++)
{
if(board[i][j]=='K')
end+=1;
}
}
for(i = 3; i < 6; i++)
{
for(j=7;j<10;j++)
{
if(board[i][j]=='k')
end+=1;
}
}
//一个将已被吃掉,返回0,结束}
if(end < 2)
{
chessBoard.repaint();
JOptionPane.showMessageDialog(frame, "哈哈!恭喜你赢了!");
System.exit(0);
}
}
//看看是不是只有一个子并且和两K一列(x座标值相等),所有中间的那子不能动

public boolean isBetween(char c)
{
int i = 0, j = 0;
int x1 = 0, x2 = 0;
int y1 = 0, y2 = 0;
int count = 0;
int temp = 0;
//找出传入棋子的横座标
for(i = 3; i < 6; i++)
{
for(j = 0; j < 10; j++)
{
if(board[i][j] == c)
{
temp = i;
break;
}
}
}
//找出红方将的横,纵座标
for(i = 3; i < 6; i++)
{
for(j=0;j<3;j++)
{
if(board[i][j]=='K')
{
x1 = i;
y1 = j;
break;
}
}
}
//找出黑方将得横、纵座标
for(i = 3; i < 6; i++)
{
for(j=7;j<10;j++)
{
if(board[i][j]=='k')
{
x2 = i;
y2 = j;
break;
}
}
}

//如果该棋子没有在两个将之间
if(x1 != x2)
return true;
else if(x1 != temp)
return true;

else if(x1 == x2)
{
for(i = y1 + 1; i < y2; i++)
{
if((board[x1][i] != '*') )
{
count += 1;
}
}
}
//两个将之间大于等于两个子
if(count > 1)
return true;
//两个将之间只有一个子
else
return false;

}


public static void main(String[] args) throws Exception
{
XiangQi xq = new XiangQi();
xq.init();
}

//定义绘制棋盘及各个棋子用的画板类
class ChessBoard extends JPanel
{
//重写paint方法,在调用repaint方法时调用它
public void paint(Graphics g)
{
//绘制棋盘
g.drawImage(table, 0, 0, null);

for(int i = 0; i < BOARD_SIZEX; i++)
{
for(int j = 0; j < BOARD_SIZEY; j++)
{
//绘制红方车
if(board[i][j] == ('J'))
{
g.drawImage(rj, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制红方马
if(board[i][j] == ('M'))
{
g.drawImage(rm, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制红方象
if(board[i][j] == ('X'))
{
g.drawImage(rx, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制红方士
if(board[i][j] == ('S'))
{
g.drawImage(rs, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制红方将
if(board[i][j] == ('K'))
{
g.drawImage(rk, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制红方炮
if(board[i][j] == ('P'))
{
g.drawImage(rp, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制红方兵
if(board[i][j] == ('B'))
{
g.drawImage(rz, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制黑方车
if(board[i][j] == ('j'))
{
g.drawImage(hj, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制黑方马
if(board[i][j] == ('m'))
{
g.drawImage(hm, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制黑方象
if(board[i][j] == ('x'))
{
g.drawImage(hx, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制黑方士
if(board[i][j] == ('s'))
{
g.drawImage(hs, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制黑方将
if(board[i][j] == ('k'))
{
g.drawImage(hk, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制黑方炮
if(board[i][j] == ('p'))
{
g.drawImage(hp, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
//绘制黑方兵
if(board[i][j] == ('b'))
{
g.drawImage(hz, i * RATE + X_OFFSET, j * RATE + Y_OFFSET, null);
}
}
}
}
}
}

由于网络原因,棋盘与棋子只能自己添加了。该程序完全是作者自己一个人开发,已经在JDK1.6下测试通过!
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章