中国象棋打谱的解释.docx

上传人:b****8 文档编号:8853504 上传时间:2023-02-02 格式:DOCX 页数:10 大小:21.15KB
下载 相关 举报
中国象棋打谱的解释.docx_第1页
第1页 / 共10页
中国象棋打谱的解释.docx_第2页
第2页 / 共10页
中国象棋打谱的解释.docx_第3页
第3页 / 共10页
中国象棋打谱的解释.docx_第4页
第4页 / 共10页
中国象棋打谱的解释.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

中国象棋打谱的解释.docx

《中国象棋打谱的解释.docx》由会员分享,可在线阅读,更多相关《中国象棋打谱的解释.docx(10页珍藏版)》请在冰豆网上搜索。

中国象棋打谱的解释.docx

中国象棋打谱的解释

Chess.Java

该Java文件生成的类负责创建程序的主窗口。

该类含有main方法,程序从该类开始执行。

ChessBoard.java

该文件生成的类负责创建“对弈棋盘”,用户可以用鼠标拖动棋盘上的棋子,当松开鼠标是则将棋子放在棋点。

该棋盘不允许用户将棋子拖放到非棋点上。

棋盘上的rule对象负责判断走棋是否遵守了中国象棋的规则,例如“马”走日,“象”走田,“小卒”一去不回头等等。

如果用户的走法不符合规则,棋子将被放回原处,重新走着。

棋盘的MakeChessManual对象负责记录棋谱,当用户选择“保存棋谱”菜单项时,可以将当前棋谱保存成文件。

另外,该棋盘还能进行悔棋,悔棋将不被记录到棋谱。

Chesspoint.Java

该文件生成的类负责创建棋点对象。

棋点对象可以判断该棋点上是否有棋子,指定当前棋点上的棋子,获取当前棋点上的棋子,移动当前棋点上的棋子。

ChessPiece.java

该文件生成的类负责创建棋子对象。

并绘制棋子的外观。

棋子对象可以获取本身的颜色,大小,名字,也可以设置和获取本身的类别,即红棋和黑棋。

MakeChessManual,java

该文件生成的类负责创建记录棋谱的对象,该对象可以将棋谱记录到一个链接表中,并在一个文本区显示棋谱。

当对弈者悔棋时,该对象将修改棋谱,并更新文本区域的信息。

Ruler.java

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

Demon.java

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

MoveStep.java

该类创建的对象记录一个棋步。

线程的设计

在Java中,创建线程的方法有两种:

一种是通过创建Thread类的子类来实现;另一种是通过实现Runnable接口的类来实现。

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

4.1.1通过Thread类实现

定义一个线程类,他继承类Thread并重写其中的run()方法。

这时在初始化这个类的实例时,目标对象target可以为null,表示这个实例本身具有线程体。

由于Java只支持单继承,用这种方法定义的类不能再继承其他类。

Thread类定义的用来帮助管理线程的方法主要包括以下内容。

●voidrun()方法:

线程的入口点,运行线程中的代码。

●voidstart()方法:

通过调用运行方法来启动线程,使之由出生状态转入就绪状态。

●voidsleep(longmilis):

在一段时间内挂起线程,令线程睡眠,在此期间,线程不消耗CPU资源;以毫秒为单位。

●voidinterrupt():

中断线程。

●booleanisAlive():

判定线程是否仍在在运行,出于活动状态。

●voidstName(StringthreadName):

改变线程的名字。

●StringgetName():

获取由setName()方法实质的线程名字的字符串。

●Yield():

将CPU控制权主动移交到下一个可运行的线程。

●setPriority(intp):

设置线程优先级。

●getPriority():

获得线程优先级。

●Join():

等待一个线程终止。

4.1.2实现Runnable接口

创建线程的最简单的方法就是创建一个实现Runnable接口的类。

然后根据工作需要重新设计线程的run方法;再建立该类的对象。

Runnable抽象了一个执行代码单元。

你可以通过实现Runnable接口的方法创建每一个对象的线程。

为实现Runnable接口,一个类仅需实现一个run()的简单方法。

线程的生命周期

每个线程的生命周期一共包括5种状态:

出生,就绪,运行,阻塞和死亡。

线程从出生到死亡的过程称为线程的生命周期。

通过特定的操作可以进行状态间的转换。

4.2.1出生

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

Thread线程名=newThread();

处于新建状态的线程只是一个空闲的线程对象,系统并没有为他分配资源。

在调用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.2.1主类Chess

1.成员变量(见表11.1)

表1主要成员变量(属性)

成员变量描述

变量类型

名称

菜单条

JMenuBar

bar

菜单

JMenuItem

fileMenu

菜单项

JMenuBar

制作棋谱,保存棋谱,演示棋谱

对弈的棋盘

ChessBoard

board

演示棋谱的棋盘

Demon

demon

棋谱记录者

MakeChessManual

record

保存棋谱的链表

LinkedList

棋谱

2.方法(见表11.2)

表2主要方法

名称

功能

备注

Chess

创建程序主窗口

构造方法

actionPerformed

处理ActionEvent事件

接口方法

main

程序开始运行

5.2.2对弈棋盘ChessBoard

1.成员变量(见表11.3)

表3主要成员变量(属性)

描述

变量类型

名称

棋点数组

ChessPoint[][]

point

棋点的水平和垂直距离

int

UnitWidth,unitHeight

棋盘的行数和列数

int

X轴长,y轴长

棋子颜色

String

红方颜色、黑方颜色

棋子对象

ChessPiece

红车1……黑炮2

走棋规则对象

Rule

rule

负责记录棋谱的对象

MakeChessManual

record

 

2.方法(见表11.4)

表4主要方法

名称

功能

备注

ChessBoard

创建对弈棋盘

构造方法

paintComponent

绘制棋盘

mousePressed

返回棋子

接口方法

mouseMoved

接口方法

mouseDragged

拖动棋子移动

接口方法

mouseReleased

将棋子放到棋点

接口方法

mouseEntered

接口方法

mouseExited

接口方法

mouseClicked

接口方法

5.2.3棋子ChesePiece

1.成员变量(见表11.5)

表5主要成员变量(属性)

描述

变量类型

名称

棋子的名字

String

name

棋子的背景色(和棋盘颜色一致)

Color

backColor

棋子的前景色(作为棋子的颜色)

Color

foreColor

颜色的类别(黑方、红方)

String

颜色类别

2.方法(见表11.6)

表6主要方法

名称

功能

备注

ChesePiece

创建棋子对象

构造方法

paint

绘制棋子的外观

getWidth

获取棋子的宽度

getHeigt

获取棋子的高度

getName

获取棋子的名字

获取棋子颜色

获取棋子的颜色

Set棋子类别

设置棋子的类别

棋子类别

获取棋子的类别

 

5.2.4棋点ChessPoint

1.成员变量(见表11.7)

表7主要成员变量(属性)

描述

变量类型

名称

棋点的位置坐标

Int

X,y

棋点上是否有棋子

Booean

有棋子

2.方法(见表11.8)

表8主要方法

名称

功能

备注

Chesspoint

创建棋点对象

构造方法

ispiece

判断棋点是否有棋子

set有棋子

设置棋点上是否有棋子

setpiece

在棋点上放置棋子

getpiece

获取棋点上的棋子

removepiece

移掉棋点上的棋子

5.2.5走棋规则Rule

1.成员变量(见表11.9)

表9主要成员变量(属性)

描述

变量类型

名称

走着棋子的起始棋点

int

startI,startJ

走着棋子的终止棋点

int

endI,endJ

2.方法(见表11.10)

表10主要方法

名称

功能

备注

Rule

创建走棋规则对象

构造方法

movepieceRule

判断走棋规则

5.2.6记录棋谱MakeChessManual

1.成员变量(见表11.11)

表11主要成员变量(属性)

描述

变量类型

名称

显示棋盘的文本区

JTextArea

text

激励棋谱列表

LinkedList

棋谱

记录吃掉的棋子的列表,备悔棋用

LinkedList

吃掉的棋子

2.方法(见表11.12)

表12主要方法

名称

功能

备注

MakeChessManual

创建“记录棋谱”对象

构造方法

记录棋谱

记录棋谱

actionperformed

处理Actionevent事件,悔棋

接口方法

5.2.7棋谱演示Demon

1.成员变量(11.13)

表13主要成员变量(属性)

描述

变量类型

名称

保存棋谱的链表

LinkedList

棋谱

自动演示棋谱的线程

Thread

自动演示

用户输入的时间间隔

JTextField

时间间隔

按顺序手动演示

JButton

next

重新演示

JButton

replay

开始自动演示

JButton

auto

暂停或继续自动演示

JButton

stop

2.方法(见表11.14)

表14主要方法

名称

功能

备注

Demon

创建棋谱演示对象

构造方法

Set棋谱

设置棋谱

actionperformed

处理Actionevent事件

接口方法

实验总结

本次课程设计充分利用自己学的java知识,熟练掌握有关java语言的语法基础,面向对象,Applet的运用,还有图形的设计,有关线程的知识。

对于中国象棋对弈系统,把java知识灵活的结合了起来,让人们对java有了一个崭新的认识。

该程序的开发过程当中遇到了许多困难,自己翻阅了许多参考资料看了一些相关的设计实例收获很多,通过了这次设计不仅学到了很多JAVA游戏设计的相关知识也看到了自己的不足,但我相信,随着时间的推移,个人水平的增长,我一定会掌握更多的技术去设计开发JAVA应用程序。

(注:

可编辑下载,若有不当之处,请指正,谢谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1