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下測試通過!
 

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