?? makechessmanual.java
字號(hào):
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.LinkedList;
public class MakeChessManual extends JPanel implements ActionListener
{
JTextArea text=null;
JScrollPane scroll=null;
ChessBoard board=null;
ChessPoint[][] point;
LinkedList 棋譜=null;
LinkedList 吃掉的棋子=null;
JButton buttonUndo;
int i=0;
public MakeChessManual(ChessBoard board,ChessPoint[][] point)
{
this.board=board;
this.point=point;
text=new JTextArea();
scroll=new JScrollPane(text);
棋譜=new LinkedList();
吃掉的棋子=new LinkedList();
buttonUndo=new JButton("悔棋");
buttonUndo.setFont(new Font("隸書",Font.PLAIN,18));
setLayout(new BorderLayout());
add(scroll,BorderLayout.CENTER);
add(buttonUndo,BorderLayout.SOUTH);
buttonUndo.addActionListener(this);
}
public char numberToLetter(int n)
{
char c='\0';
switch(n)
{
case 1 : c='A'; break;
case 2 : c='B'; break;
case 3 : c='C'; break;
case 4 : c='D'; break;
case 5 : c='E'; break;
case 6 : c='F'; break;
case 7 : c='G'; break;
case 8 : c='H'; break;
case 9 : c='I'; break;
case 10 : c='J'; break;
}
return c;
}
public void 記錄棋譜(ChessPiece piece,int startI,int startJ,int endI,int endJ)
{
Point pStart=new Point(startI,startJ);
Point pEnd=new Point(endI,endJ);
MoveStep step=new MoveStep(pStart, pEnd);
棋譜.add(step);
String 棋子類別=piece.棋子類別();
String name=piece.getName();
String m="#"+棋子類別+name+": "+
startI+numberToLetter(startJ)+" 到 "+endI+numberToLetter(endJ);
text.append(m);
if(piece.棋子類別().equals(board.黑方顏色))
text.append("\n");
}
public void 記錄吃掉的棋子(Object object)
{
吃掉的棋子.add(object);
}
public LinkedList 獲取棋譜()
{
return 棋譜;
}
public void actionPerformed(ActionEvent e)
{
int position=text.getText().lastIndexOf("#");
if(position!=-1)
text.replaceRange("",position,text.getText().length());
if(棋譜.size()>0)
{
MoveStep lastStep=(MoveStep)棋譜.getLast();
棋譜.removeLast();
Object qizi=吃掉的棋子.getLast();
吃掉的棋子.removeLast();
String temp=qizi.toString();
if(temp.equals("沒(méi)吃棋子"))
{
int startI=lastStep.pStart.x;
int startJ=lastStep.pStart.y;
int endI=lastStep.pEnd.x;
int endJ=lastStep.pEnd.y;
ChessPiece piece=point[endI][endJ].getPiece();
point[startI][startJ].setPiece(piece,board);
(point[endI][endJ]).set有棋子(false);
if(piece.棋子類別().equals(board.紅方顏色))
{
board.紅方走棋=true;
board. 黑方走棋=false;
}
if(piece.棋子類別().equals(board.黑方顏色))
{
board.黑方走棋=true;
board.紅方走棋=false;
}
}
else
{
ChessPiece removedPiece=(ChessPiece)qizi;
int startI=lastStep.pStart.x;
int startJ=lastStep.pStart.y;
int endI=lastStep.pEnd.x;
int endJ=lastStep.pEnd.y;
ChessPiece piece=point[endI][endJ].getPiece();
point[startI][startJ].setPiece(piece,board);
point[endI][endJ].setPiece(removedPiece,board);
(point[endI][endJ]).set有棋子(true);
if(piece.棋子類別().equals(board.紅方顏色))
{
board.紅方走棋=true;
board. 黑方走棋=false;
}
if(piece.棋子類別().equals(board.黑方顏色))
{
board.黑方走棋=true;
board.紅方走棋=false;
}
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -