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

团队名称:WY

团队成员:

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

2 项目git地址

Java课程设计

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



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

5 项目运行截图

开始

悔棋功能



重新开始

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

  • Chess.java
  1. public Chess() {
  2. board = new ChessBoard(45, 45, 9, 10);
  3. record = board.record;
  4. setTitle("中国象棋:默认红棋先行");
  5. con = getContentPane();
  6. JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, board, record);
  7. split.setDividerSize(5);
  8. split.setDividerLocation(460);
  9. con.add(split, BorderLayout.CENTER);
  10. addWindowListener(new WindowAdapter() {
  11. public void windowClosing(WindowEvent e) {
  12. System.exit(0);
  13. }
  14. });
  15. setVisible(true);
  16. setBounds(60, 20, 670, 540);
  17. con.validate();
  18. validate();
  19. }
  • ChessBoard.java
  1. public void paintComponent(Graphics g)// 画棋盘
  2. {
  3. super.paintComponent(g);
  4. for (int j = 1; j <= yaxislength; j++) {
  5. g.drawLine(point[1][j].x, point[1][j].y, point[xaxislength][j].x, point[xaxislength][j].y);// 直线的起点坐标,终点坐标
  6. }
  7. for (int i = 1; i <= xaxislength; i++) {
  8. if (i != 1 && i != xaxislength) {
  9. g.drawLine(point[i][1].x, point[i][1].y, point[i][yaxislength - 5].x, point[i][yaxislength - 5].y);
  10. g.drawLine(point[i][yaxislength - 4].x, point[i][yaxislength - 4].y, point[i][yaxislength].x,
  11. point[i][yaxislength].y);// 竖直画线,多减一个格子总体向上平移一行
  12. } else {
  13. g.drawLine(point[i][1].x, point[i][1].y, point[i][yaxislength].x, point[i][yaxislength].y);
  14. }
  15. }
  16. g.drawLine(point[4][1].x, point[4][1].y, point[6][3].x, point[6][3].y);
  17. g.drawLine(point[6][1].x, point[6][1].y, point[4][3].x, point[4][3].y);
  18. g.drawLine(point[4][8].x, point[4][8].y, point[6][yaxislength].x, point[6][yaxislength].y);
  19. g.drawLine(point[4][yaxislength].x, point[4][yaxislength].y, point[6][8].x, point[6][8].y);
  20. g.setFont(new Font("Serif", 6, 22));
  21. g.drawString("楚 河 汉 界", point[2][5].x, point[2][6].y);
  22. }
  • ChessDo.java
  1. public ChessDo(ChessBoard board, ChessPoint[][] point) {
  2. this.board = board;
  3. this.point = point;
  4. scroll = new JScrollPane();
  5. ChessManual = new LinkedList<MoveStep>();
  6. EatPiece = new LinkedList<Object>();
  7. buttonStart = new JButton("重新开始");
  8. buttonStart.setFont(new Font("平体", Font.PLAIN, 20));
  9. buttonUndo = new JButton("悔棋");
  10. buttonUndo.setFont(new Font("平体", Font.PLAIN, 20));
  11. buttonExit = new JButton("退出");
  12. buttonExit.setFont(new Font("平体", Font.PLAIN, 20));
  13. setLayout(new BorderLayout());
  14. add(buttonStart, BorderLayout.CENTER);
  15. add(buttonUndo, BorderLayout.NORTH);
  16. add(buttonExit, BorderLayout.SOUTH);
  17. buttonStart.addActionListener(this);
  18. buttonUndo.addActionListener(this);
  19. buttonExit.addActionListener(this);
  20. }
  21. public void recordChessManual(ChessPiece piece, int startI, int startJ, int endI, int endJ) {
  22. //记录走棋内容
  23. Point pStart = new Point(startI, startJ);
  24. Point pEnd = new Point(endI, endJ);
  25. MoveStep step = new MoveStep(pStart, pEnd);
  26. ChessManual.add(step);
  27. }
  28. public void recordPieceEaten(Object object) {
  29. EatPiece.add(object);
  30. }
  31. public LinkedList<MoveStep> getChessManual() {
  32. return ChessManual;
  33. }
  34. public void actionPerformed(ActionEvent e) {
  35. if (e.getSource() == buttonStart) {
  36. ......
  37. }
  38. }

7 尚待改进或者新的想法

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

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

团队成员 个人博客链接 任务分配
吴慧婷[组长] 吴慧婷的博客 Chess类,ChessDo类,ChessRule类
姚佳希 姚佳希的博客 ChessBoard类,ChessPoint类,ChessPiece类

Java课程设计—象棋的更多相关文章

  1. Java课程设计——象棋(201521123042 姚佳希)

    1. 团队课程设计博客链接 Java课程设计(团队版) 2 个人负责模块或任务说明 ChessBoard类创建棋盘及界面. ChessPoint类创建棋盘格点及界面. ChessPiece类创建棋子及 ...

  2. java(课程设计之记事本界面部分代码公布)

    代码:涉及记事本的一些界面......!! /* *java课程设计之记事本(coder @Gxjun) * 编写一个记事本程序 * 要求: * 用图形用户界面实现. * 能实现编辑.保存.另存为.查 ...

  3. java课程设计(计算器)

    JAVA课程 设 计 报 告 1206401-18   瞿杰 一.设计时间 2013年6月 24日-----6月28日 二.设计地点 湖南城市学院实验楼计算机506机房 三.设计目的 1.巩固学习VB ...

  4. Java课程设计——博客作业教学数据分析系统(201521123084 林正晟)

    #课程设计--博客作业教学数据分析系统(201521123084 林正晟) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 学生登陆界面的前端实现和与数据库的连接 学生 ...

  5. Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)

    Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...

  6. java课程设计--We Talk(201521123061)

    java课程设计--We Talk(201521123061) 团队博客链接:http://www.cnblogs.com/slickghost/ 数据库 一.通过Dao模式建立与数据库的连接 1.数 ...

  7. Java 课程设计 "Give it up"小游戏(团队)

    JAVA课程设计 "永不言弃"小游戏(From :Niverse) 通过Swing技术创建游戏的登陆注册界面,使用mySQL数据库技术完成用户的各项信息保存和游戏完成后的成绩保存. ...

  8. Java课程设计----仿Windows标准型计算器

    JAVA课程设计 仿Windows标准型计算器(By Yanboooooooo) 一.团队介绍: 连燕波[组长]:网络1513学生. 张文博[组员]:网络1513学生. 二.项目git地址 码云项目地 ...

  9. Java课程设计——猜数游戏(201521123111 陈伟泽)

    Java课程设计--猜数游戏(201521123111 陈伟泽) 1.团队课程设计博客链接 博客作业--猜数游戏 2.个人负责模块或任务说明 Answer:一些基础界面的构造,排行榜的构造,用文件录入 ...

随机推荐

  1. .net core 2.0学习笔记(二):Hello World & 进阶

    官网已经有一个.net core的入手教程(https://www.microsoft.com/net/core#windowscmd),但这个教程完全没有顾及全宇宙第一IDE的感受.今天就跟大家体验 ...

  2. Python打包EXE神器 pyinstaller

    最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...

  3. 【转】DHCP协议详解

    协议分析 - DHCP协议解码详解 DHCP协议简介 DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作 ...

  4. 齐博cms 7.0 漏洞分析

    ** 0x01 原理分析 ** 还是很早之前爆出来的漏洞,现在拿出来学习一下,参考阿里巴巴: https://security.alibaba.com/... 漏洞发生在/inc/common.inc ...

  5. 从jsp页面到servlet传值的不同方式

    1.利用超链接<a></a>来传递参数 例如: <td><a href="/month811/Servlet?id=${student.id}&am ...

  6. easyui 时间段校验,开始时间小于结束时间,并且时间间隔不能超过30天

    //对easyui datetimebox的验证,开始时间要小于结束时间function validateDateTime(beginTimeId,endTimeId,whichTimeId){ co ...

  7. C# 实例练习——字符串处理(第三天)

    1.  编写程序将IP地址分解后输出(将IP地址中的点(.)去掉,替换成空格符),如:132.123.4替换后为132  123   4. Console.WriteLine("请输入您电脑 ...

  8. spring框架整合hibernate框架简单操作数据库

    1.配置文件: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:/ ...

  9. SQL优化工具

    SQL优化工具 什么是索引? 打个比方,我们在使用MySQL用作查询的时候就好比查字典,索引就好比字典的偏旁部首页.如果没有索引我们查询一个文字就需要一页页的翻,显然这种方式效率很低.如果我们对某一字 ...

  10. JS实现60s倒计时(亲测有效),及span标签如何使用和禁用onclick事件

    效果如下图:点击按钮出现60秒倒计时,60s内按钮不可用,倒计时到了时间方可再次点击获取. 另外还有一个知识点,只有input 及button这样的表单元素有disbale属性,如何设置是否可用属性的 ...