中国象棋棋谱设计Java课程设计实验报告分析(共22页).doc
《中国象棋棋谱设计Java课程设计实验报告分析(共22页).doc》由会员分享,可在线阅读,更多相关《中国象棋棋谱设计Java课程设计实验报告分析(共22页).doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上课程设计报告课程名称: Java程序设计 设计题目: 中国象棋棋谱设计 专 业 : 信息与计算科学 班 级 : 信111 姓 名 : 侯晓晓 学 号 : 指导教师: 邓全才 河北建筑工程学院数理系2014 年 5 月 5 日课程设计题目(问题)描述Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承,很好的融合了“面向对象”、“跨平台”和“编程简洁”等特性。随着Java语言的不断发展,它的应用前景将更为宽阔。本课程设计主要是使用Swing这个J
2、ava自带的图形开发工具实现中国象棋棋子及棋盘的绘制,并根据相应的象棋规则,可以设计棋谱,完成棋谱的保存和对已保存的棋谱的演示,方便现在爱棋人士对残局的收藏于研究,而且达到了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,熟练的应用面向对象的思想和设计方法解决实际问题的能力的目的。本 组 成 员 情 况姓 名学号承 担 的 任 务成 绩侯晓晓棋盘界面设计,对弈规则的实现,保存下棋的步骤从而实现悔棋的实现,设计棋谱,完成保存棋谱教 师 评 语 签名: 一、本 组 设 计 的 功 能 描 述一、 基本界面设计:1.棋子的设计;(1)声明一个ChessPiece类,完
3、成各个棋子的外观设计;public class ChessPiece extends JLabel String name; Color backColor=null,foreColor; String 颜色类别=null; ChessBoard board=null; int width,height; public ChessPiece(String name,Color fc,Color bc,int width,int height,ChessBoard board) this.name=name; this.board=board; this.width=width; this.he
4、ight=height; foreColor=fc; backColor=bc; setSize(width,height); setBackground(bc); addMouseMotionListener(board); addMouseListener(board); public void paint(Graphics g) g.setColor(foreColor); g.fillOval(2,2,width-2,height-2); g.setColor(Color.white); g.setFont(new Font(隶书,Font.BOLD,28); g.drawString
5、(name,7,height-8); g.setColor(Color.yellow); g.drawOval(2,2,width-2,height-2); public int getWidth()return width; public int getHeight()return height; public String getName()return name; public Color 获取棋子颜色() return foreColor; public void set棋子类别(String 类别)颜色类别=类别; public String 棋子类别()return 颜色类别;(2
6、)实现各个棋子外观;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class ChessBoard extends JPanel implements MouseListener,MouseMotionListenerpublic ChessPoint point; public int unitWidth,unitHeight; int x轴长,y轴长; int x,y; boolean move=false; public String 红方颜色=红色,黑方颜色=黑色;ChessPiece 红车1
7、,红车2,红马1,红马2,红相1,红相2,红帅,红士1,红士2,红兵1,红兵2,红兵3,红兵4,红兵5,红炮1,红炮2;ChessPiece 黑车1,黑车2,黑马1,黑马2,黑将,黑士1,黑士2,黑卒1,黑卒2,黑卒3,黑卒4,黑卒5,黑象1,黑象2,黑炮1,黑炮2; int startX,startY; int startI,startJ; public boolean 红方走棋=true,黑方走棋=false; Rule rule=null; public MakeChessManual record=null; public ChessBoard(int w,int h,int r,in
8、t c) setLayout(null); addMouseListener(this); addMouseMotionListener(this); Color bc=getBackground(); unitWidth=w; unitHeight=h; x轴长=r; y轴长=c; point=new ChessPointr+1c+1; for(int i=1;i=r;i+) for(int j=1;j=c;j+)pointij=new ChessPoint(i*unitWidth,j*unitHeight,false); rule=new Rule(this,point); record=
9、new MakeChessManual(this,point) ; 红车1=new ChessPiece(车,Color.red,bc,w-4,h-4,this); 红车1.set棋子类别(红方颜色); /分别是红方各个棋子的设计 红兵5=new ChessPiece(兵,Color.red,bc,w-4,h-4,this); 红兵5.set棋子类别(红方颜色); 黑将=new ChessPiece(将,Color.blue,bc,w-4,h-4,this); 黑将.set棋子类别(黑方颜色); /分别是黑方各个棋子的设计 黑卒5=new ChessPiece(卒,Color.blue,bc,
10、w-4,h-4,this); 黑卒5.set棋子类别(黑方颜色); point110.setPiece(红车1,this); /红方的每个棋子放到与生活中棋盘位置一样 point97.setPiece(红兵5,this); point11.setPiece(黑车1,this); /黑方的每个棋子放到与生活中棋盘位置一样 point94.setPiece(黑卒5,this); (3)棋盘的设计: public void paintComponent(Graphics g) super.paintComponent(g); for(int j=1;j=y轴长;j+) g.drawLine(poin
11、t1j.x,point1j.y,pointx轴长j.x,pointx轴长j.y); for(int i=1;i=x轴长;i+) if(i!=1&i!=x轴长) g.drawLine(pointi1.x,pointi1.y,pointiy轴长-5.x,pointiy轴长-5.y); g.drawLine(pointiy轴长-4.x,pointiy轴长-4.y,pointiy轴长.x,pointiy轴长.y); else g.drawLine(pointi1.x,pointi1.y,pointiy轴长.x,pointiy轴长.y); g.drawLine(point41.x,point41.y,p
12、oint63.x,point63.y);g.drawLine(point61.x,point61.y,point43.x,point43.y); g.drawLine(point48.x,point48.y,point6y轴长.x,point6y轴长.y);g.drawLine(point4y轴长.x,point4y轴长.y,point68.x,point68.y); for(int i=1;i=x轴长;i+) g.drawString(+i,i*unitWidth,unitHeight/2);int j=1; for(char c=A;c=J;c+) g.drawString(+c,unit
13、Width/4,j*unitHeight);j+; (4)实现棋子按照生活中的对弈规则走棋的程序如下:public boolean movePieceRule(ChessPiece piece,int startI,int startJ,int endI,int endJ) this.piece=piece;this.startI=startI;this.startJ=startJ; this.endI=endI; this.endJ=endJ; int minI=Math.min(startI,endI); int maxI=Math.max(startI,endI); int minJ=M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国象棋 棋谱 设计 Java 课程设计 实验 报告 分析 22
限制150内