Java課程設計—象棋

1. 團隊名稱、團隊成員介紹

團隊名稱:WY

團隊成員:

  • 吳慧婷[組長] 201521123094 網絡1514
  • 姚佳希 201521123042 網絡1512

2 項目git地址

Java課程設計html

3 項目git提交記錄截圖,老師將點擊進去重點考覈。


4 項目功能架構圖與主要功能流程圖

5 項目運行截圖

開始
java

悔棋功能

git

從新開始
網絡

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類
相關文章
相關標籤/搜索