/* @author AnShuFeng
* @version 1.0
* 人人对战象棋
* XiangQi.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] <= 'Z' && board[xPos1][yPos1] >= 'a')
|| (board[xPos2][yPos2] >= 'a' && board[xPos1][yPos1] <= 'Z'))
{
xPos1 = (int)(e.getX() - X_OFFSET) / RATE;
yPos1 = (int)(e.getY() - Y_OFFSET) / RATE;
n = true;
}
//如果一方连续走两步,则第二次不能走坐标还原
else
{
n = false;
xPos2 = xPos1;
yPos2 = yPos1;
}
chessBoard.repaint();
}
});
//鼠标移动时事件处理
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 x1 = 0;
int x2 = 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;
x1 = i;
break;
}
}
}
//找出黑方将的纵坐标
for(i = 3; i < 6; i++)
{
for(j=7;j<10;j++)
{
if(board[i][j]=='k')
{
y2 = j;
x2 = i;
break;
}
}
}
//判断棋子是否在两将之间是返回false否则返回true
if(isBetween(board[xPos1][yPos1]))
walk(board[xPos1][yPos1], xPos1, yPos1);
//炮不能直接吃将所以目的坐标小于y2,大于y1
else if((board[xPos1][yPos1] == 'p') ||
(board[xPos1][yPos1] == 'P') &&
(yPos2 < y2) && (yPos2 > y1))
{
if(xPos1 == xPos2 && board[xPos2][yPos2] == '*')
{
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[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();
}
});
//设置窗口内光标形状
Cursor cr = new Cursor(Cursor.HAND_CURSOR);
frame.setCursor(cr);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
chessBoard.setPreferredSize(new Dimension(TABLE_WIDTH, TABLE_HETGHT));
frame.add(chessBoard);
Image bfi = null;
try
{
bfi = ImageIO.read(new File("D://homework//image//myself.jpg"));
}
catch(IOException e)
{
e.printStackTrace();
}
//设置窗口图片为bfi
frame.setIconImage(bfi);
//禁止用户调整窗口大小
frame.setResizable(false);
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))
{
if(board[a][b] == '*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//往左或右走一步且左或有目前没子
if(b==n&&(a==m+1||a==m-1))
{
if(board[a][b]=='*')
{
board[a][b]=chessman;
board[m][n]='*';
}
}
//往上或往下走一步
if((b==n+1||b==n-1)&& (a==m))
{
if(board[a][b]=='*')
{
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))
{
if(board[a][b]=='*')
{
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)
{
if(board[a][b] == '*')
{
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)
{
//炮要到达的目的地无子
if(board[a][b] == '*')
{
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]='*';
}
}
}
}
}
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]='*';
}
}
}
}
}
//判断是否要结束
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);
}
}
}
}
}
}