Chinese Chess
目录:
1.团队成员及任务
2.项目简介与要求
3.git提交地址
4.git提交截图
5. 项目功能架构图、主要功能流程图
6.主要函数
7.项目运行截图
8.核心代码截图
1.团队成员及任务
团队名称:RX-104ff
组长:王晨旭 计科20-2 202003010060
负责任务:讲解、所有工作的审核,游戏演示、架构
棋子管理以及车、马、炮棋子运行规则代码书写
组员:赵永浩 计科20-2 202003010051
负责任务:架构、报告(结构和代码和总结)、github运作以及提交代码工作汇总、音乐播放器代码编译、游戏主方法的制作、兵与士棋子代码的书写。
唐瑞锴 计科20-2 202003010055
负责任务:将、象代码的书写、棋盘图形化界面制作、棋子图形化界面图片搜集、
绘制结构图。
2.项目简介与要求
中国象棋使用方形格状棋盘,棋盘为10行9列,圆形棋子共有32个,红黑二色各有16个棋子,摆放和活动在交叉点上,棋盘上共有90个交叉点。双方交替行棋,先把对方的将(帅)“将死”的一方获胜。
实现过程,将所有棋子抽象为一个对象,不同的棋子实现方法不同,建立多个棋子类。另外图形化界面用paint进行重绘,并给棋子添加监听器,鼠标点击触发监听器。创建一个音乐播放类,负责播放音乐。棋子和棋盘图片是从网络上收集的。
主要工作:
- 红黑双方交替下棋,直到一方的将被吃掉。
- 所有棋子的移动方法。
- 图形化界面。
- 开启新游戏。
- 播放音乐。
- 退出游戏。
3.项目git提交地址
https://gitee.com/rx-104ff/chinese-chess.git
4.git提交截图
5 项目功能架构图、主要功能流程图
6.主要函数
(1)ChessGame:建立JFrame窗口,添加按钮,为按钮添加触发器。
(2)Canvas:继承JPanel,负责棋盘初始化,将棋子paint到棋盘上,下棋的判断。
(3)ChessManager:使用HashMap对应棋子和编号,声明所有棋子,并且区分红黑棋。
(4)ArmsChess:卒与兵的移动规则。
(5)CannonChess:炮的移动规则。
(6)CarChess:车的移动规则。
(7)ChapChess:士和仕的移动规则。
(8)GeneralChess:将和帅的移动规则。
(9)HourseChess:马的移动规则。
(10)Chess:棋子父类,所有棋子继承该类。
(11)ImageTool:获取图片的类。
(12)musicStuff:音乐播放器。
(13)RangeChecker:判断所走棋子是否合法。
(14)test文件夹:所有棋子的测试。
7.项目运行截图
8.核心代码截图
唐瑞楷负责模块
1)棋盘设计制作(by 唐瑞楷)
package com;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.chess.Chess;
import org.chess.ImageTool;
import org.chess.RangeChecker;
public class Canvas extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int row=10;//棋盘行数
public static final int line=9;//棋盘列数
int[][] map = new int[row][line];
JLabel Icon;
Image chessimage = null;
Font font;
public static final int BLACK = 1000;
public static final int WHITE = 0;
boolean isBlack = false; //当前是谁下子
int select_c = -1;
int select_r = -1;
public Canvas(){//棋盘为10行9列,默认就好,不用改
font = new Font("宋体",Font.BOLD,30);
initMap();
addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
//super.mouseClicked(e);
//System.out.println(e.getButton());
if(e.getButton()==MouseEvent.BUTTON1){
int x = e.getX();
int y = e.getY();
//System.out.println(e.getX()+","+e.getY()+"["+x+","+y+"]")