中国象棋棋谱设计Java课程设计.doc

上传人:龙*** 文档编号:888808 上传时间:2018-11-04 格式:DOC 页数:22 大小:598.50KB
下载 相关 举报
中国象棋棋谱设计Java课程设计.doc_第1页
第1页 / 共22页
中国象棋棋谱设计Java课程设计.doc_第2页
第2页 / 共22页
中国象棋棋谱设计Java课程设计.doc_第3页
第3页 / 共22页
中国象棋棋谱设计Java课程设计.doc_第4页
第4页 / 共22页
中国象棋棋谱设计Java课程设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、 1 / 22课 程 设 计 报 告课程名称: Java 程序设计 设计题目: 中国象棋棋谱设计 专 业 : 信息与计算科学 班 级 : 信 111 姓 名 : 侯晓晓 学 号 : 2011314101 指导教师: 邓全才 河北建筑工程学院数理系2014 年 5 月 5 日2 / 22课程设计题目(问题)描述Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承,很好的融合了“面向对象” 、 “跨平台”和“编程简洁”等特性。随着Java语言的不断发展,它的应用前景将更为宽

2、阔。本课程设计主要是使用 Swing 这个 Java 自带的图形开发工具实现中国象棋棋子及棋盘的绘制,并根据相应的象棋规则,可以设计棋谱,完成棋谱的保存和对已保存的棋谱的演示,方便现在爱棋人士对残局的收藏于研究,而且达到了进一步巩固课堂上所学到的知识,深刻把握 Java 语言的重要概念及其面向对象的特性,熟练的应用面向对象的思想和设计方法解决实际问题的能力的目的。本 组 成 员 情 况姓 名 学号 承 担 的 任 务 成 绩侯晓晓 2011314101棋盘界面设计,对弈规则的实现,保存下棋的步骤从而实现悔棋的实现,设计棋谱,完成保存棋谱3 / 22教 师 评 语签名: 一、本 组 设 计 的

3、功 能 描 述4 / 22一、 基本界面设计:1.棋子的设计;(1)声明一个 ChessPiece 类,完成各个棋子的外观设计;public class ChessPiece extends JLabel String name;Color backColor=null,foreColor;String 颜色类别=null;ChessBoard board=null;5 / 22int width,height;public ChessPiece(String name,Color fc,Color bc,int width,int height,ChessBoard board)this.n

4、ame=name;this.board=board;this.width=width;this.height=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.setFo

5、nt(new Font(“隶书“,Font.BOLD,28); g.drawString(name,7,height-8);g.setColor(Color.yellow);6 / 22g.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 类别

6、)颜色类别= 类别;public String 棋子类别 ()return 颜色类别 ;(2)实现各个棋子外观;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=fal

7、se; public String 红方颜色 =“红色“,黑方颜色=“黑色“;ChessPiece 红车 1,红车 2,红马 1,红马 2,红相 1,红相 2,红帅,红士 1,红7 / 22士 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; R

8、ule rule=null; public MakeChessManual record=null; public ChessBoard(int w,int h,int r,int 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+)8 / 22poi

9、ntij=new ChessPoint(i*unitWidth,j*unitHeight,false); rule=new Rule(this,point);record=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(“将“,C

10、olor.blue,bc,w-4,h-4,this);黑将.set 棋子类别( 黑方颜色);/分别是黑方各个棋子的设计黑卒 5=new ChessPiece(“卒“,Color.blue,bc,w-4,h-4,this);黑卒 5.set 棋子类别( 黑方颜色);point110.setPiece(红车 1,this);/红方的每个棋子放到与生活中棋盘位置一样point97.setPiece(红兵 5,this);point11.setPiece(黑车 1,this);9 / 22/黑方的每个棋子放到与生活中棋盘位置一样point94.setPiece(黑卒 5,this); (3)棋盘的设计

11、:public void paintComponent(Graphics g)super.paintComponent(g);for(int j=1;j=y 轴长;j+) g.drawLine(point1j.x,point1j.y,pointx 轴长j.x,pointx轴长j.y); for(int i=1;i=x 轴长;i+) if(i!=1g.drawLine(pointiy 轴长-4.x,pointiy 轴长-4.y,pointiy轴长.x,pointiy 轴长.y); elseg.drawLine(pointi1.x,pointi1.y,pointiy 轴长.x,pointiy 轴长

12、 .y); g.drawLine(point41.x,point41.y,point63.x,point63.y);g.drawLine(point61.x,point61.y,point43.x,point43.y);g.drawLine(point48.x,point48.y,point6y 轴长.x,point6y10 / 22轴长.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);in

13、t j=1;for(char c=A;c=J;c+) g.drawString(“+c,unitWidth/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=Math.min(startJ,endJ); int maxJ=Math.max(startJ,endJ);boolean 可否走棋=false;if(piece.getName().equals(“车“)if(startI=endI) int j=0;for(j=minJ+1;j=maxJ-1;j+)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。