象棋系统设计_第1页
象棋系统设计_第2页
象棋系统设计_第3页
象棋系统设计_第4页
象棋系统设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、滨江学院软件工程课程设计题 目 中国象棋打谱软件 院 系 计算机系 专 业 网络工程 组 员1 组 员2组 员3指导教师 吴婷婷二一六 年 十二 月 二十日- 46 -目录:一、课程设计概述- 1 -1.1课程设计的内容- 1 -1.2课程设计的目的- 1 -1.3课程设计的背景- 1 -二、可行性研究与需求分析- 2 -2.1要求- 2 -2.2用户需求分析- 2 -2.3可行性分析- 3 -三项目的技术和方法- 3 -3.1 Java GUI功能- 3 -3.2 多线程功能- 4 -四总体设计- 4 -4.1功能图- 5 -4.2流程图- 5 -五详细设计:- 5 -5.1详细设计思路-

2、5 -六测试:- 8 -七总结:- 12 -八心得体会:- 12 -参考文献:- 12 -一、课程设计概述1.1课程设计的内容中国象棋打谱软件提供给用户的一个能将对弈过程保存成文件 并可以重对弈过程 即复盘。主要功能有: 1. 制作棋谱, 2. 保存棋谱, 3. 演示棋谱。要求 中国象棋是双方在有着9 条竖线和10 条横线的棋盘上对弈的,竖线与横线的交叉点称做棋点,每个棋子都是在棋点上行走,而不是在方格中行走,河界将棋盘分成两个等份,每一边都有一块由9个点组成的"九宫", 棋子"将"、"帅"、"士" 只能在&quo

3、t;九宫"内移动。并且 "将"、"帅" 每一步只可以水平或垂直移动一个棋点。 "士" 它只能在"九宫"内移动,并且它每一步只可以沿对角线方向移动一个棋点。 "象" 它必须一步沿对角线方向走两个棋点,但它既不能过河,也不能跳过或穿越障碍,即象在走的过程中不能被"别眼"。 "马" 每一步只可以水平或垂直移动一个棋点,但必须按对角线方向,向左或右移动,中国象棋的马不能跳过障碍,即在走的过程中不能被"别腿"。 "车"

4、; 可以水平或垂直方向移动任意个无阻碍的点。 "炮" 移动起来和车很类似,但它必须跳过一个棋子来吃掉对方的一个棋子,被跳过的那个棋子称为桥或者屏风。 "兵' 每步只能向前移动一个棋点,过河以后,它便增加了向左右移动的能力,兵不允许向后移动。1.2课程设计的目的该软件在计算机、软件、网络普及的今天作为一个小游戏供人们消遣。为类似AlphaGo(阿尔法)的人工智能软件打下前期基础铺垫。同时象棋打谱软件也为想研究象棋的棋手提供便利,方便棋手详细的研究每个变化,每一步棋,钻研棋术。通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养

5、工程设计能力和综合分析、解决问题的能力。1.3课程设计的背景 随着计算机技术的飞速发展,各行各业都在追求信息化,以防在信息时代落伍。计算机和软件在帮助人们提高工作效率的同时也能够帮助人们放松一下,缓解工作及平时紧张生活。供两人下棋的棋类打谱软件应用广泛,可以供没有棋子棋盘的两人当时下棋,也可以用于下棋比赛结束后的棋手钻研。适用人群也较广泛,没有象棋经验的初学者,有一定象棋经验的棋手,老少皆宜。二、可行性研究与需求分析2.1要求实现一个中国象棋对弈的软件,实现中国象棋的规则:棋子共有三十二个,分为红、黑两组,每组十六个,各分七种,其名称和数目如下所述。 (1) 红棋子:帅一人

6、,车、马、炮、相、士各两个,兵五个。 (2)黑棋子:将一个,车、马、炮、象、士各两个,卒五个。 (3)在对局时,由执红棋的一方先走,双方轮流各走一着,直至分出胜负或走成和棋为止。轮到走棋的一方,将某个棋子从一个交叉点到另一个空着的交叉点,或者吃掉对方的棋子而占领叉点,都算走了一着。双方各走了一着,称为一个回合。 (4)帅(将)每一着只许走一步,前进、后退、横走都可以,但不能走出“九宫”。帅和将不准在同一直线上直接对面,如一方已先占据,另一方必须回避。 (5)士每一着只许沿“九宫”斜线走一步,可进可退。 相(象)不能越过“河界”,每一着斜走两步,

7、可进可退,即俗称相(象)走田字。当田字中心有别的棋子时,俗称塞相(象)眼,则不行走过去。  (6)马每着走一直(或一横)一斜,可进可退,即俗称“马走日字”。如果在要去方向紧靠一直(或一横)的地方,有别的棋子挡住,俗称“蹩马腿”,就不能走过去。 (7)车每一着可以直进、直退、横走,不限步数。  (8)炮在不吃子的时候,走法同车一样。  (9)兵(卒)在没有过“河界”前,每着只许向前直走一步;过“河界”后,每着可以向前走一步,也可以横走一步,但不能后退。走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就可把对棋子吃掉而占领

8、那个位置。只有炮吃了必须隔一个棋子(无论是哪一方的)跳吃,即俗称“炮打隔子”。除   帅(将)外,其它棋子都可以听任对方吃,或主动送吃。一方的棋子攻击对方的帅(将),并在下一着要把它吃掉,称为“将军”,或简称“将”。被“将军”的一方必须立即“应将”,即用自卫的着法去化解被“将”的状态。如果被“将军”而无法“应将”,就算被“将死”。轮到走棋的一方,帅(将)虽没被对方“将军”,却被禁在一个位置上无路可走,同时己方其它棋子也都不能走动,就算被“困毙”。2.2用户需求分析(1)系统运行环境硬件环境:本系统适用于那种Inter386以上计算机,内存容量为128M,应配备,键

9、盘,鼠标,显示器等外部设备。 软件环境:本系统的设计采用eclipse编写。在Win8环境下测试通过 本游戏软件在Windows平台下都可以运行。(2)用户需求该软件对用户没有限制,只需要用户具备最基本的计算机常识,会使用鼠标,了解象棋规则即可。该软件提供棋盘,具有保存棋谱,演示棋谱的功能,可供棋手二人下棋,也可以提供比赛结束后的棋术钻研。2.3可行性分析随着当前计算机的发展越来越深入各行各业,各行业对信息化智能化的依赖越高,计算机软件也可以为棋类竞技比赛提供便利,供人们下棋消遣。该软件具有棋盘棋子实体象棋所不具备的有特点,可以保存棋谱,演示棋谱。没有实体棋子整理的麻烦,也

10、没有实体棋子棋局易毁的特点。经济可行性:此软件是一个较小型的软件,从人力,财力与物力来讲,投入是非常小的,只需要计算机即可,然而计算机在现在家家户户已成为标配。操作可行性:本系统设计清晰,操作简介,符合象棋设定,并达到操作过程中的直观、方便、使用、安全等要求。技术可行性:本系统采用JAVA进行编写。使用的灵活性、良好的扩展性、以及现在编程语言的发展和其他软件的广泛应用,充分说明了本软件在技术方面的可行性。使用环境可行性:现在信息社会发展迅速,家家户户都有电脑以及网络,人们都具有一定的计算机基础,包括老人。同时,在计算机普及的今天,绝大多数软件对计算机硬件的要求很低,基本的硬件条件就能够满足软件

11、的使用,并且价格也能够被人们所接受。简单的象棋打谱软件所需要具备的计算机知识很少,使用方法也较简单易学易会。三项目的技术和方法3.1 Java GUI功能利用Java实现的俄罗斯方块游戏几乎能用到Java GUI(Graphical User Interface)的所有方面,其中包括Sun公司为Java提供的两个图形界面类库。1、AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,AWT是Sun公司最早推出的GUI类库,其中提供了建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用

12、户界面(GUI)的类,这些类被称为构件(Components)。2、Swing包是Java Foundation Classes(JFC)的一部分,与AWT的重量级构件不同,Swing中大部分是轻量级构件。正是这个原因,Swing几乎无所不能,不但有各式各样先进的构件,而且更为美观易用。所以一开始使用AWT的程序员很快就转向使用Swing了。本设计中俄罗斯方块的实现的界面,主要是采用了Swing类库。(1本游戏的基本窗口类包括JFrame、JWindow、JPanel和JDialog等。(2)在这里原子构件会用到标签类JLabel、按钮类JButton、JColorChooser类文本域JTe

13、xtField。(3)对一个大的GUI程序而言通常包含各种菜单,俄罗斯方块游戏中也包含许多种菜单,如JMenu、JMenuItem、JMenuBar等.(4)俄罗斯方块中的处理事件一般会用到ActionEvent类、ActionListener类、KeyEvent类、KeyEvent类、KeyListener接口、KeyAdapter类。(5)俄罗斯方块的主界面采用的是BorderLayout布局。BorderLayout由5个区域来放置构件,分别标记为North、South、East、West和Center。用add方法加入构件时要用一个标记来指定构件放到5个区域中的哪一个。(6)使用Gra

14、phics类提供的绘图方法“public void paint(Graphics g)”可以画出线条、矩形、圆形等图形。3.2 多线程功能俄罗斯方块游戏的实现充分利用了Java的线程功能。由于游戏中方块的动态性,每个方块有一定的生命周期,所以选用线程来实现方块。一个方块用一个线程类对象实现,该类继承于Thread类,当一个方块出现时也就表示一个线程对象产生并开始运行。通过对键盘消息的响应,实现移动、下落、变形等操作。在Java中可通过run()方法为线程指明要完成的任务,用继承Thread类,并覆盖run方法和通过实现Runnable接口的类调用run()方法这两种技术为线程提供run()方法

15、。四总体设计 本系统实现了三个功能,即新游戏:开始一局新的对弈;悔棋:将棋子返回刚才所处位置;退出:退出本程序;信息提示:提示当前信息状态。4.1功能图4.1 功能图4.2流程图4.2 总体设计流程图五详细设计:5.1详细设计思路  由上述类图进行分析。中国象棋对弈系统的程序由文件Chess.java实现。Chess.java主要包括两个类:一个是被定义为public类型的类,名为Chess,主要负责中国象棋对弈程序的执行;另一个类名为ChessMainFrame,是程序的主框架类。程序中Chess类通过生成ChessMainFrame类的对象来执行程序。 Che

16、ssMainFrame类主要包含四个模块:生成图形用户界面模块,完成按钮的操作模块,棋子操作模块和棋子的移动规则模块。其中其中棋子的移动规则被定义为内部类,名为ChessRule。ChessRule类中的方法用于定义各个棋子的移动规则和吃子规则。(1)图形用户界面模块       图形用户界面是ChessMainFrame类中的基本模块,它的主要作用是定义 该类中所使用的变量和实例对象,通过构造函数初始化图形用户界面,添加组件和棋子,注册事件组件。(2)按钮的操作模块      

17、60;程序中有三个按钮,分别为“新游戏”按钮,“悔棋”按钮和“退出”按钮。单击“新游戏”按钮时,程序重新布置棋子,并将保存当前操作Vector(向量)清空;单击“悔棋” 按钮时,调用Vector中的数据进行悔棋操作;单击“退出”向量按钮时,程序会询问是否退出,选“是”则退出对弈。5.1 按钮功能模块图(3)棋子的操作模块 棋子的操作模块定义了线程,单击棋子的时候,可以使棋子闪烁以实现棋子已经被选取的效果,单击棋子或移动时,根据棋子的编号来判断使用规则进行移动或吃子。需要注意的是,移动和吃子是调用规则类模块完成的。5.2棋子操作模块功能图(4)棋子的移动规则类模块 

18、移动规则类ChessRule分别定义中国象棋32个棋子的移动规则。32个棋子可分为6类棋子。每一类棋子各有两个方法,定义这类棋子的移动规则和吃子规则。 棋子的移动规则如下所述。 (1) 帅(将)每次只许走一步,前进、后退、横走都可以,但不能走出“宫”。将和帅不准在同一直线上面对面,如一方已占据,另一方就必须回避。 (2) 士每次只许沿“九宫”斜线走一步,可进可退。 (3)相(相)不能越过“河界”,每一次斜走两步,可进可退,即俗称“相(象)走田”。当田字中心有别的棋子时,俗称“塞相(象)眼”,则不许走过 去。 (4)马每次走一

19、直(或一横)一斜,可进可退,即俗称“马走日”。如果在要去的方向有别的棋子挡住。俗称“蹩马腿”,则不许走过去。 (5)车每次可以直进、直退、横走,不限步数。 (6)炮在不吃子的时候,走法同车一样。 (7)兵(卒)在没有过“河界”前,每次只许向前直走一步;过“ 河界”后,每次可向前直走或横走一步,但不能后退。 吃子规则: (8)在走棋时,如果棋子能够走到的位置有对方棋子存在,就可以把对方棋子吃掉而占领那个位置。只有炮在吃子时必须隔一个棋子跳吃,即俗称“炮打隔子”。      (9)帅(将)

20、外其他棋子都可以听任对方吃。吃子的一方必须立即把被吃掉的子从棋盘上拿掉。六测试:悔棋制作棋盘:保存棋盘:复盘(可重新演示):胜利:七总结: 通过此次设计,使我们对自己所学专业有了更深一层次的了解,并且有了一些切身的体会。在设计过程中,我认识到光有计算机理论知识是不行的,还得有更丰富的实践经验,也就是多动手、多动脑。此次收获最大的要属开发软件、编写代码。开发出一个好的系统,要细心,要有激情的态度,且持之有恒。 这个基于java中国象棋的编程,可以说还存在很多问题,有很多功能还有待扩充。限于我们的编程技术水平,有很多更深层的技术未使用,但可以这样说,这次课程设计只是一个开始,只

21、有以后通过不断的努力、不断的研究和学习、不断的实践,才能掌握更多的软件设计的技术和方法,才能设计出更好更完善的软件作品, 尽量吸收转变为自己的知识,才能做的更好,这些经验是相当宝贵的,为我们以后能够编出更好的程序是一个良好的启发。八心得体会:通过此次设计,使我们对自己所学专业有了更深一层次的了解,并且有了一些切身的体会。在设计过程中,我认识到光有计算机理论知识是不行的,还得有更丰富的实践经验,也就是多动手、多动脑 。通过这次毕业设计,我受到了一次用专业知识、专业技能分析和解决问题的全面系统的锻炼。同时我在综合知识的选用方面,在应用软件开发的基本思想、方法方面,以及在常用编程

22、设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。这次在指导老师的严格要求和耐心指导下,以及在同学的帮助下,基本上完成了设计任务,限于我们的编程技术水平,有很多更深层的技术未使用,但可以这样说,这次课程设计只是一个开始,只有以后通过不断的努力、不断的研究和学习、不断的实践,才能掌握更多的软件设计的技术和方法,才能设计出更好更完善的软件作品, 尽量吸收转变为自己的知识,才能做的更好,这些经验是相当宝贵的,为我们以后能够编出更好的程序是一个良好的启发。参考文献:1   JAVA2实用教程 清华大学出版社 

23、 耿祥义、张跃平编 2008  2   徐慧慧,叶达峰,JFrame,JBuilder编程技术与实例,人民邮电出版社,2006  3   杨文龙,软件工程,电子工业出版社,1997附录:1. 象棋主类 文件ChineseChess.javapackage com.xmy;import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.Lin

24、kedList; public class ChineseChess 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 Chines

25、eChess() bar = new JMenuBar(); fileMenu = new JMenu("中国象棋"); 制作棋谱 = new JMenuItem("制作棋谱"); 保存棋谱 = new JMenuItem("保存棋谱"); 保存棋谱.setEnabled(false); 演示棋谱 = new JMenuItem("演示棋谱"); fileMenu.add(制作棋谱); fileMenu.add(保存棋谱); fileMenu.add(演示棋谱); bar.add(fileMenu); setJMe

26、nuBar(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); sp

27、lit.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, 690, 540); fileChooser = new JFileChooser(); con.validate(); validate(); pu

28、blic 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.setDivider

29、Size(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 ou

30、tOne = 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);

31、 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) inTw

32、o.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 =

33、 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 JLa

34、bel("没有打开棋谱文件呢"); 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(Stri

35、ng args) new ChineseChess(); 2. 象棋棋盘类文件ChessBoard.javapackage com.xmy;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.Rectangle;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;

36、import javax.swing.JPanel;import javax.swing.SwingUtilities;public class ChessBoard extends JPanel implements MouseListener, MouseMotionListenerpublic ChessPoint point; public int unitWidth, unitHeight; private int x轴长, y轴长; private int x, y; private Image img; protected Image pieceImg; private bool

37、ean 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; pub

38、lic 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

39、 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); img = Toolkit.getDefaultToolkit().getImage("board.jpg"); pieceImg =

40、Toolkit.getDefaultToolkit().getImage("piece.gif"); 红车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,

41、 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棋子类别(

42、红方颜色); 红相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

43、("仕", 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

44、, 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.

45、set棋子类别(红方颜色); 黑将 = new ChessPiece("将", Color.black, bc, w - 4, h - 4, this); 黑将.set棋子类别(黑方颜色); 黑士1 = new ChessPiece("士", Color.black, bc, w - 4, h - 4, this); 黑士1.set棋子类别(黑方颜色); 黑士2 = new ChessPiece("士", Color.black, bc, w - 4, h - 4, this); 黑士2.set棋子类别(黑方颜色); 黑车1 = ne

46、w ChessPiece("车", Color.black, bc, w - 4, h - 4, this); 黑车1.set棋子类别(黑方颜色); 黑车2 = new ChessPiece("车", Color.black, bc, w - 4, h - 4, this); 黑车2.set棋子类别(黑方颜色); 黑炮1 = new ChessPiece("炮", Color.black, bc, w - 4, h - 4, this); 黑炮1.set棋子类别(黑方颜色); 黑炮2 = new ChessPiece("炮&

47、quot;, Color.black, bc, w - 4, h - 4, this); 黑炮2.set棋子类别(黑方颜色); 黑象1 = new ChessPiece("象", Color.black, bc, w - 4, h - 4, this); 黑象1.set棋子类别(黑方颜色); 黑象2 = new ChessPiece("象", Color.black, bc, w - 4, h - 4, this); 黑象2.set棋子类别(黑方颜色); 黑马1 = new ChessPiece("马", Color.black, b

48、c, w - 4, h - 4, this); 黑马1.set棋子类别(黑方颜色); 黑马2 = new ChessPiece("马", Color.black, bc, w - 4, h - 4, this); 黑马2.set棋子类别(黑方颜色); 黑卒1 = new ChessPiece("卒", Color.black, bc, w - 4, h - 4, this); 黑卒1.set棋子类别(黑方颜色); 黑卒2 = new ChessPiece("卒", Color.black, bc, w - 4, h - 4, this

49、); 黑卒2.set棋子类别(黑方颜色); 黑卒3 = new ChessPiece("卒", Color.black, bc, w - 4, h - 4, this); 黑卒3.set棋子类别(黑方颜色); 黑卒4 = new ChessPiece("卒", Color.black, bc, w - 4, h - 4, this); 黑卒4.set棋子类别(黑方颜色); 黑卒5 = new ChessPiece("卒", Color.black, bc, w - 4, h - 4, this); 黑卒5.set棋子类别(黑方颜色); point110.setPiece(红车1, this); point210.setPiece(红马1, this); point310.setPiece(红相1, this); point410.setPiece(红士1, thi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论