




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
皖西学院计算机科学与技术系实 验 报 告课程名称中国象棋打谱软件实验项目应用系统的面向对象设计与分析实验类型综合性实验完成人所在班级计科1003班指导教师苏守宝 教授完成日期2011年12月21日31实验报告正文一实验报告简表实验课题名称中国象棋打谱软件综合性实验项目应用系统的面向对象设计与分析服务课程面向对象设计与分析实验小组组长指导教师苏守宝 教授参与实验人员及其在实验课题中承担的主要任务(包括组长)学 号小组成员姓名班 级在实验课题中的主要作用计科1003组长计科1003组员计科1003组员二设计内容与要求三总体设计,包括需求分析、功能描述、设计工具与运行环境、类及类间关系描述等四详细设计,包括类图及代码等五实例运行及应用效果,包括测试数据、界面、输出结果与分析等六体会与总结,包括对所用知识点和关键方法的综合认识(注意:要求交纸质实验报告,同时将实验报告.doc、小组答辩.ppt及程序代码压缩email提交)Chess.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.LinkedList;public class Chess extends JFrame implements ActionListener ChessBoard board=null; Demon demon=null; MakeChessManual record=null; Container con=null; JMenuBar bar; JMenu fileMenu; JMenuItem 制作棋谱,保存棋谱,演示棋谱; JFileChooser fileChooser=null; LinkedList 棋谱=null; public Chess() bar=new JMenuBar(); fileMenu=new JMenu(中国象棋); 制作棋谱=new JMenuItem(制作棋谱); 保存棋谱=new JMenuItem(保存棋谱); 演示棋谱=new JMenuItem(演示棋谱); fileMenu.add(制作棋谱); fileMenu.add(保存棋谱); fileMenu.add(演示棋谱); bar.add(fileMenu); setJMenuBar(bar); setTitle(制作棋谱.getText(); 制作棋谱.addActionListener(this); 保存棋谱.addActionListener(this); 演示棋谱.addActionListener(this); board=new ChessBoard(45,45,9,10); record=board.record; 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); fileChooser=new JFileChooser(); con.validate(); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=制作棋谱) con.removeAll(); 保存棋谱.setEnabled(true); this.setTitle(制作棋谱.getText(); board=new ChessBoard(45,45,9,10); record=board.record; JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,board,record); split.setDividerSize(5); split.setDividerLocation(460); con.add(split,BorderLayout.CENTER); validate(); if(e.getSource()=保存棋谱) int state=fileChooser.showSaveDialog(null); File saveFile =fileChooser.getSelectedFile(); if(saveFile!=null&state=JFileChooser.APPROVE_OPTION) try FileOutputStream outOne=new FileOutputStream(saveFile); ObjectOutputStream outTwo=new ObjectOutputStream(outOne); outTwo.writeObject(record.获取棋谱() ; outOne.close(); outTwo.close(); catch(IOException event) if(e.getSource()=演示棋谱) con.removeAll(); con.repaint(); con.validate(); validate(); 保存棋谱.setEnabled(false); int state=fileChooser.showOpenDialog(null); File openFile =fileChooser.getSelectedFile(); if(openFile!=null&state=JFileChooser.APPROVE_OPTION) try FileInputStream inOne=new FileInputStream(openFile); ObjectInputStream inTwo=new ObjectInputStream(inOne); 棋谱=(LinkedList)inTwo.readObject() ; inOne.close(); inTwo.close(); ChessBoard board=new ChessBoard(45,45,9,10); demon=new Demon(board); demon.set棋谱(棋谱); con.add(demon,BorderLayout.CENTER); con.validate(); validate(); this.setTitle(演示棋谱.getText()+:+openFile); catch(Exception event) JLabel label=new JLabel(不是棋谱文件); label.setFont(new Font(隶书,Font.BOLD,60); label.setForeground(Color.red); label.setHorizontalAlignment(SwingConstants.CENTER); con.add(label,BorderLayout.CENTER); con.validate(); this.setTitle(没有打开棋谱); validate(); else JLabel label=new JLabel(没有打开棋谱文件呢); label.setFont(new Font(隶书,Font.BOLD,50); label.setForeground(Color.pink); label.setHorizontalAlignment(SwingConstants.CENTER); con.add(label,BorderLayout.CENTER); con.validate(); this.setTitle(没有打开棋谱文件呢); validate(); public static void main(String args) new Chess(); ChessBoard.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class ChessBoard extends JPanel implements MouseListener,MouseMotionListener public ChessPoint point; public int unitWidth,unitHeight; int x轴长,y轴长; int x,y; boolean move=false; public String 红方颜色=红色,黑方颜色=黑色; ChessPiece 红车1,红车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,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+) pointij=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棋子类别(红方颜色); 红车2=new ChessPiece(车,Color.red,bc,w-4,h-4,this); 红车2.set棋子类别(红方颜色); 红马1=new ChessPiece(马,Color.red,bc,w-4,h-4,this); 红马1.set棋子类别(红方颜色); 红马2=new ChessPiece(马,Color.red,bc,w-4,h-4,this); 红马2.set棋子类别(红方颜色); 红炮1=new ChessPiece(炮,Color.red,bc,w-4,h-4,this); 红炮1.set棋子类别(红方颜色); 红炮2=new ChessPiece(炮,Color.red,bc,w-4,h-4,this); 红炮2.set棋子类别(红方颜色); 红相1=new ChessPiece(相,Color.red,bc,w-4,h-4,this); 红相1.set棋子类别(红方颜色); 红相2=new ChessPiece(相,Color.red,bc,w-4,h-4,this); 红相2.set棋子类别(红方颜色); 红士1=new ChessPiece(士,Color.red,bc,w-4,h-4,this); 红士1.set棋子类别(红方颜色); 红士2=new ChessPiece(士,Color.red,bc,w-4,h-4,this); 红士2.set棋子类别(红方颜色); 红帅=new ChessPiece(帅,Color.red,bc,w-4,h-4,this); 红帅.set棋子类别(红方颜色); 红兵1=new ChessPiece(兵,Color.red,bc,w-4,h-4,this); 红兵1.set棋子类别(红方颜色); 红兵2=new ChessPiece(兵,Color.red,bc,w-4,h-4,this); 红兵2.set棋子类别(红方颜色); 红兵3=new ChessPiece(兵,Color.red,bc,w-4,h-4,this); 红兵3.set棋子类别(红方颜色); 红兵4=new ChessPiece(兵,Color.red,bc,w-4,h-4,this); 红兵4.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棋子类别(黑方颜色); 黑士1=new ChessPiece(士,Color.blue,bc,w-4,h-4,this); 黑士1.set棋子类别(黑方颜色); 黑士2=new ChessPiece(士,Color.blue,bc,w-4,h-4,this); 黑士2.set棋子类别(黑方颜色); 黑车1=new ChessPiece(车,Color.blue,bc,w-4,h-4,this); 黑车1.set棋子类别(黑方颜色); 黑车2=new ChessPiece(车,Color.blue,bc,w-4,h-4,this); 黑车2.set棋子类别(黑方颜色); 黑炮1=new ChessPiece(炮,Color.blue,bc,w-4,h-4,this); 黑炮1.set棋子类别(黑方颜色); 黑炮2=new ChessPiece(炮,Color.blue,bc,w-4,h-4,this); 黑炮2.set棋子类别(黑方颜色); 黑象1=new ChessPiece(象,Color.blue,bc,w-4,h-4,this); 黑象1.set棋子类别(黑方颜色); 黑象2=new ChessPiece(象,Color.blue,bc,w-4,h-4,this); 黑象2.set棋子类别(黑方颜色); 黑马1=new ChessPiece(马,Color.blue,bc,w-4,h-4,this); 黑马1.set棋子类别(黑方颜色); 黑马2=new ChessPiece(马,Color.blue,bc,w-4,h-4,this); 黑马2.set棋子类别(黑方颜色); 黑卒1=new ChessPiece(卒,Color.blue,bc,w-4,h-4,this); 黑卒1.set棋子类别(黑方颜色); 黑卒2=new ChessPiece(卒,Color.blue,bc,w-4,h-4,this); 黑卒2.set棋子类别(黑方颜色); 黑卒3=new ChessPiece(卒,Color.blue,bc,w-4,h-4,this); 黑卒3.set棋子类别(黑方颜色); 黑卒4=new ChessPiece(卒,Color.blue,bc,w-4,h-4,this); 黑卒4.set棋子类别(黑方颜色); 黑卒5=new ChessPiece(卒,Color.blue,bc,w-4,h-4,this); 黑卒5.set棋子类别(黑方颜色); point110.setPiece(红车1,this); point210.setPiece(红马1,this); point310.setPiece(红相1,this); point410.setPiece(红士1,this); point510.setPiece(红帅,this); point610.setPiece(红士2,this); point710.setPiece(红相2,this); point810.setPiece(红马2,this); point910.setPiece(红车2,this); point28.setPiece(红炮1,this); point88.setPiece(红炮2,this); point17.setPiece(红兵1,this); point37.setPiece(红兵2,this); point57.setPiece(红兵3,this); point77.setPiece(红兵4,this); point97.setPiece(红兵5,this); point11.setPiece(黑车1,this); point21.setPiece(黑马1,this); point31.setPiece(黑象1,this); point41.setPiece(黑士1,this); point51.setPiece(黑将,this); point61.setPiece(黑士2,this); point71.setPiece(黑象2,this); point81.setPiece(黑马2,this); point91.setPiece(黑车2,this); point23.setPiece(黑炮1,this); point83.setPiece(黑炮2,this); point14.setPiece(黑卒1,this); point34.setPiece(黑卒2,this); point54.setPiece(黑卒3,this); point74.setPiece(黑卒4,this); point94.setPiece(黑卒5,this); 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!=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,point63.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,unitWidth/4,j*unitHeight); j+; public void mousePressed(MouseEvent e) ChessPiece piece=null; Rectangle rect=null; if(e.getSource()=this) move=false; if(move=false) if(e.getSource() instanceof ChessPiece) piece=(ChessPiece)e.getSource(); startX=piece.getBounds().x; startY=piece.getBounds().y; rect=piece.getBounds(); for(int i=1;i=x轴长;i+) for(int j=1;j=y轴长;j+) int x=pointij.getX(); int y=pointij.getY(); if(rect.contains(x,y) startI=i; startJ=j; break; public void mouseMoved(MouseEvent e) public void mouseDragged(MouseEvent e) ChessPiece piece=null; if(e.getSource() instanceof ChessPiece) piece=(ChessPiece)e.getSource(); move=true; e=SwingUtilities.convertMouseEvent(piece,e,this); if(e.getSource()=this) if(move&piece!=null) x=e.getX(); y=e.getY(); if(红方走棋&(piece.棋子类别().equals(红方颜色) piece.setLocation(x-piece.getWidth()/2,y-piece.getHeight()/2); if(黑方走棋&(piece.棋子类别().equals(黑方颜色) piece.setLocation(x-piece.getWidth()/2,y-piece.getHeight()/2); public void mouseReleased(MouseEvent e) ChessPiece piece=null; move=false; Rectangle rect=null; if(e.getSource() instanceof ChessPiece) piece=(ChessPiece)e.getSource(); rect=piece.getBounds(); e=SwingUtilities.convertMouseEvent(piece,e,this); if(e.getSource()=this) boolean containChessPoint=false; int x=0,y=0; int m=0,n=0; if(piece!=null) for(int i=1;i=x轴长;i+) for(int j=1;j=y轴长;j+) x=pointij.getX(); y=pointij.getY(); if(rect.contains(x,y) containChessPoint=true; m=i; n=j; break; if(piece!=null&containChessPoint) Color pieceColor=piece.获取棋子颜色(); if(pointmn.isPiece() Color c=(pointmn.getPiece().获取棋子颜色(); if(pieceColor.getRGB()=c.getRGB() piece.setLocation(startX,startY); (pointstartIstartJ).set有棋子(true); else boolean ok=rule.movePieceRule(piece,startI,startJ, m,n); if(ok) ChessPiece pieceRemoved=pointmn.getPiece(); pointmn.reMovePiece(pieceRemoved,this); pointmn.setPiece(piece,this); (pointstartIstartJ).set有棋子(false); record.记录棋谱(piece,startI,startJ,m,n) ; record.记录吃掉的棋子(pieceRemoved) ; if(piece.棋子类别().equals(红方颜色) 红方走棋=false; 黑方走棋=true; if(piece.棋子类别().equals(黑方颜色) 黑方走棋=false; 红方走棋=true; validate(); repaint(); else piece.setLocation(startX,startY); (pointstartIstartJ).set有棋子(true); else boolean ok=rule.movePieceRule(piece,startI,startJ, m,n); if(ok) pointmn.setPiece(piece,this); (pointstartIstartJ).set有棋子(false); record.记录棋谱(piece,startI,startJ,m,n) ; record.记录吃掉的棋子(没吃棋子); if(piece.棋子类别().equals(红方颜色) 红方走棋=false; 黑方走棋=true; if(piece.棋子类别().equals(黑方颜色) 黑方走棋=false; 红方走棋=true; else piece.setLocation(startX,startY); (pointstartIstartJ).set有棋子(true); if(piece!=null&!containChessPoint) piece.setLocation(startX,startY); (points
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 下城区营销方案设计公司
- 电池及电池系统维修保养师适应性考核试卷及答案
- 聚甲基丙烯酸甲酯(PMMA)装置操作工岗位操作技能考核试卷及答案
- 刨花板工技术考核试卷及答案
- 果蔬汁无菌包装市场需求预测分析报告
- 鸿基岸芷汀兰营销方案
- 村级事务管理汇报
- 企业培训咨询加盟方案
- 施工方案是哪个单位出具
- 活动现场咨询答疑方案
- 2024广西公需课高质量共建“一带一路”谱写人类命运共同体新篇章答案
- 《中级财务会计》课件-11收入、费用和利润
- DG-TJ08-2461-2024 旧住房更新改造查勘标准
- 耳鸣的健康教育
- 小学食堂从业培训
- 2025届云南中考道德与法治真题试卷【含答案】
- 尿毒症并发心衰的护理
- 财务给研发培训课件
- 2025年中国底部填充胶粘剂市场调查研究报告
- 个人防护与手卫生规范
- 平面设计专业介绍
评论
0/150
提交评论