Java课程设计—象棋

1. 团队名称、团队成员介绍

团队名称:WY

团队成员:

  • 吴慧婷[组长] 201521123094 网络1514
  • 姚佳希 201521123042 网络1512

2 项目git地址

Java课程设计

3 项目git提交记录截图,老师将点击进去重点考核。


4 项目功能架构图与主要功能流程图

5 项目运行截图

开始

悔棋功能

重新开始

6 项目关键代码(不能太多)

  • Chess.java
public Chess() {
		board = new ChessBoard(45, 45, 9, 10);
		record = board.record;
		setTitle("中国象棋:默认红棋先行");
		con = getContentPane();
		JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, board, record);
		split.setDividerSize(5);
		split.setDividerLocation(460);
		con.add(split, BorderLayout.CENTER);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		setVisible(true);
		setBounds(60, 20, 670, 540);
		con.validate();
		validate();
	}
  • ChessBoard.java
public void paintComponent(Graphics g)// 画棋盘
	{
		super.paintComponent(g);
		for (int j = 1; j <= yaxislength; j++) {
			g.drawLine(point[1][j].x, point[1][j].y, point[xaxislength][j].x, point[xaxislength][j].y);// 直线的起点坐标,终点坐标
		}
		for (int i = 1; i <= xaxislength; i++) {
			if (i != 1 && i != xaxislength) {
				g.drawLine(point[i][1].x, point[i][1].y, point[i][yaxislength - 5].x, point[i][yaxislength - 5].y);
				g.drawLine(point[i][yaxislength - 4].x, point[i][yaxislength - 4].y, point[i][yaxislength].x,
						point[i][yaxislength].y);// 竖直画线,多减一个格子总体向上平移一行
			} else {
				g.drawLine(point[i][1].x, point[i][1].y, point[i][yaxislength].x, point[i][yaxislength].y);
			}
		}

		g.drawLine(point[4][1].x, point[4][1].y, point[6][3].x, point[6][3].y);
		g.drawLine(point[6][1].x, point[6][1].y, point[4][3].x, point[4][3].y);
		g.drawLine(point[4][8].x, point[4][8].y, point[6][yaxislength].x, point[6][yaxislength].y);
		g.drawLine(point[4][yaxislength].x, point[4][yaxislength].y, point[6][8].x, point[6][8].y);
		g.setFont(new Font("Serif", 6, 22));
		g.drawString("楚     河                     汉     界", point[2][5].x, point[2][6].y);
	}
  • ChessDo.java
public ChessDo(ChessBoard board, ChessPoint[][] point) {
		this.board = board;
		this.point = point;
		scroll = new JScrollPane();
		ChessManual = new LinkedList<MoveStep>();
		EatPiece = new LinkedList<Object>();
		buttonStart = new JButton("重新开始");
		buttonStart.setFont(new Font("平体", Font.PLAIN, 20));
		buttonUndo = new JButton("悔棋");
		buttonUndo.setFont(new Font("平体", Font.PLAIN, 20));
		buttonExit = new JButton("退出");
		buttonExit.setFont(new Font("平体", Font.PLAIN, 20));
		setLayout(new BorderLayout());
		add(buttonStart, BorderLayout.CENTER);
		add(buttonUndo, BorderLayout.NORTH);
		add(buttonExit, BorderLayout.SOUTH);
		buttonStart.addActionListener(this);
		buttonUndo.addActionListener(this);
		buttonExit.addActionListener(this);
	}
public void recordChessManual(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);
		ChessManual.add(step);
	}

	public void recordPieceEaten(Object object) {
		EatPiece.add(object);
	}

	public LinkedList<MoveStep> getChessManual() {
		return ChessManual;
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == buttonStart) {
                    ......
            }
        }

7 尚待改进或者新的想法

  • 尚待改进:
(1)让用户可以任意选择先手
(2)悔棋规定悔棋步数
(3)胜利时弹出胜利窗口
(4)界面的美化
(5)重新开始时不用弹出一个窗口而是消除原先的所有步骤。

8 团队成员任务分配,团队成员课程设计博客链接(以表格形式呈现),标明组长。

团队成员 个人博客链接 任务分配
吴慧婷[组长] 吴慧婷的博客 Chess类,ChessDo类,ChessRule类
姚佳希 姚佳希的博客 ChessBoard类,ChessPoint类,ChessPiece类
posted @ 2017-06-22 15:20  wuht  阅读(968)  评论(0编辑  收藏  举报