中国象棋打谱系统Java语言内附详细的Java程序毕业设计(2)

2019-03-04 13:42

3.程序设计需求分析 3.1任务概述

用java实现具有一定功能的中国象棋对弈软件,主要功能如下: a.象棋对弈:红方先走,然后黑方再走,红黑交替,直到一方获胜。 b.新游戏:任何时候可以重新开始一盘新的对弈。 c.悔棋:当走错棋的时候可以悔棋。 d.信息提示:提示当前信息状态。

e.简单的帮助文档:象棋规则介绍、软件的简单介绍和编制说明。

3.2综合要求

1. 硬件配置

CPU:≥Pentium 4 1.6G 内存:≥512MB 硬盘剩余空间:≥2GB 2. 软件环境

操作系统:Microsoft Windows XP

安装Sun公司的Java运行环境JRE 1.5,安装Java开发工具包(JDK 1.5)及ECLIPSE

3.3 设计基本要求

1. 中国象棋是双方在由9条和10条横线分割而成的棋盘对弈。竖线与横线的交叉点称做棋点,每个棋子都放置在棋点上 ,而不是方格中。河界将棋盘分为两个等分=份,没一边都有一个由9个点组成的区域“将”,“帅”,“士”只能在“九宫”内移动,并且“将”,“帅”,的每一步只可以水平或垂直移动一个棋点。

士:“士”只能在“九宫”内移动,并且每一步只可以沿对角线方向移动一个棋点。

象;一步必须沿对角线方向走两个棋点。但它既不能过河,也不能跳过或穿越障碍,即象征走的过程不能被“别眼”。

马:每一步只可以水平或垂直移动一个棋点。但它必须沿对角线方向,向左或向右移动,中国象棋的马不能跳过障碍,即在走的过程不能被“别腿”。

车:可以沿水平或垂直方向移动任意个无障碍的点。

炮:行走规则和车很类似,但它必须跳过一个棋子来吃掉对方的一个棋子。被跳过的棋子被称为桥或者屏风。

兵:过河前每步只能向前移动一个棋点。过河后,它便增加了向左右移动的能力。并不允许向后移动。

2.单击“中国象棋”菜单可以选择“制作棋谱”,“保存棋谱 ”和“演示棋谱”菜单项。

3.选择“制作棋谱”,将出现相应的棋盘,该棋盘可进行实战对弈,可以随时选择“保存棋谱”,将对弈过程保存成一个棋谱文件。选择“演示棋谱”将显示打开文件对话框供用户选择以保存的棋谱文件。选择棋谱文件后,将显示用来演示棋谱的棋盘,用户可以选择自动或者手动来演示对弈过程。

4.程序的总体设计 4.1线程的设计

在Java中,创建线程的方法有两种:一种是通过创建Thread类的子类来实现;另一种是通过实现Runnable接口的类来实现。

这两种创建线程方法并没有本质上的区别,但是由于Java不允许多重继承,所以当一个类要继承另一个非Thread类而实现多线程的话,只能通过实现Runnable接口的方式来实现。

4.1.1 通过Thread类实现

定义一个线程类,他继承类Thread并重写其中的run()方法。这时在初始化这个类的实例时,目标对象target可以为null,表示这个实例本身具有线程体。由于Java只支持单继承,用这种方法定义的类不能再继承其他类。1

Thread类定义的用来帮助管理线程的方法主要包括以下内容。 ● void run()方法:线程的入口点,运行线程中的代码。

● void start()方法:通过调用运行方法来启动线程,使之由出生状态转入就绪

状态。

● void sleep(long milis):在一段时间内挂起线程,令线程睡眠,在此期间,线程不消耗CPU资源;以毫秒为单位。 ● void interrupt():中断线程。

● boolean isAlive():判定线程是否仍在在运行,出于活动状态。 ● void stName(String threadName):改变线程的名字。

● String getName():获取由setName()方法实质的线程名字的字符串。 ● Yield():将CPU控制权主动移交到下一个可运行的线程。 ● setPriority(int p):设置线程优先级。 ● getPriority():获得线程优先级。 ● Join():等待一个线程终止。 4.1.2 实现Runnable接口

创建线程的最简单的方法就是创建一个实现Runnable接口的类。然后根据工作需要重新设计线程的run方法;再建立该类的对象。Runnable抽象了一个执行代码单元。你可以通过实现Runnable接口的方法创建每一个对象的线程。为实现Runnable接口,一个类仅需实现一个run()的简单方法。

4.2线程的生命周期

每个线程的生命周期一共包括5种状态:出生,就绪,运行,阻塞和死亡。线程从出生到死亡的过程称为线程的生命周期。通过特定的操作可以进行状态间的转换。

4.2.1 出生

当用关键字new和thread类或其子类建立了一个线程对象后,该线程就处于出生状态。

Thread线程名=new Thread();

处于新建状态的线程只是一个空闲的线程对象,系统并没有为他分配资源。在调用start方法之前,线程就一直处于出生状态。

4.2.2 就绪

在调用了start方法之后,线程就进入就绪状态,即被加入到处于就绪状态的线程序列中,在等待CPU时间片。

线程名。Start(); 4.2.3 运行

当处于线程序列中的线程获得CPU时间片的时候,该线程就会自动调用其run方法,进入运行状态。

4.2.4 阻塞

线程能够运行,但有某个条件能阻止它的运行。当线程处于阻塞状态时,调度机制将忽略线程,不会分配给线程任何处理器时间。直到线程重新进入了就绪状态,它才有可能执行操作。导致线程进入阻塞状态原因主要包括以下几种。

① 通过调用wait()方法使线程挂起。直到线程得到了notify()或notifyAll()消息,线程才会进入就绪状态。当与某对象相关的一个线程调用了notify()方法时,那么等待该特定对象的一个线程便进入就绪状态;当与某对象相关的线程调用了notifyAll()方法后,等待该对象的所有线程都会回到就绪状态。

② 通过调用sleep()方法使线程进入休眠状态。在这种情况下,线程在指定的时间内不会运行。只能等待其结束期后,线程才可以自动进入就绪状态。

③ 线程在等待某个输入输出完成。只能等待该输入输出操作完成后,线程才可以自动进入就绪状态。

④ 调用suspend()方法挂起程序。可以通过调用resume()方法使其进入就绪状态。

⑤ 线程试图在某个对象上调用其同步控制方法,但是对象锁不可用。 4.2.5 死亡

死亡状态是线程生命周期中的最后一个阶段。一共有两种方式可以导致一个线程的死亡。

● 自然死亡:线程的run()方法正常结束。

● 强制死亡:通过执行stop()或destroy()方法使线程终止。

5.程序的详细设计 5.1程序流程图

中国象棋对弈系统共有8个Java源文件。重要之间的关系如下图;

图1 类之间的关系

Chess.Java

该Java文件生成的类负责创建程序的主窗口。该类含有main方法,程序从该类开始执行。 ChessBoard.java

该文件生成的类负责创建“对弈棋盘”,用户可以用鼠标拖动棋盘上的棋子,当松开鼠标是则将棋子放在棋点。该棋盘不允许用户将棋子拖放到非棋点上。棋盘上的rule对象负责判断走棋是否遵守了中国象棋的规则,例如“马”走日,“象”走田,“小卒”一去不回头等等。如果用户的走法不符合规则,棋子将被放回原处,重新走着。棋盘的MakeChessManual对象负责记录棋谱,当用户选择“保存棋谱 ”菜单项时,可以将当前棋谱保存成文件。另外,该棋盘还能进行悔棋,悔棋将不被记录到棋谱。 Chesspoint.Java

该文件生成的类负责创建棋点对象。棋点对象可以判断该棋点上是否有棋子, 指定当前棋点上的棋子 ,获取当前棋点上的棋子,移动当前棋点上的棋子。 ChessPiece.java

该文件生成的类负责创建棋子对象。并绘制棋子的外观。棋子对象可以获取本身的颜色,大小,名字,也可以设置和获取本身的类别,即红棋和黑棋。 MakeChessManual,java

该文件生成的类负责创建记录棋谱的对象,该对象可以将棋谱记录到一个链接表中,并在一个文本区显示棋谱。当对弈者悔棋时,该对象将修改棋谱,并更新文本区域的信息。 Ruler.java

该文件生成的类负责创建“走棋规则”对象,该对象负责用户用户的走法是否符合规则。 Demon.java

该文件生成的类负责创建“棋谱演示”对象,该对象可以演示以保存的棋谱。 MoveStep.java


中国象棋打谱系统Java语言内附详细的Java程序毕业设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015年秋季湖北省中小学教师信息技术能力提升工程测试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: