中国象棋DWord格式文档下载.docx

上传人:b****5 文档编号:16008386 上传时间:2022-11-17 格式:DOCX 页数:25 大小:1.52MB
下载 相关 举报
中国象棋DWord格式文档下载.docx_第1页
第1页 / 共25页
中国象棋DWord格式文档下载.docx_第2页
第2页 / 共25页
中国象棋DWord格式文档下载.docx_第3页
第3页 / 共25页
中国象棋DWord格式文档下载.docx_第4页
第4页 / 共25页
中国象棋DWord格式文档下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

中国象棋DWord格式文档下载.docx

《中国象棋DWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《中国象棋DWord格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。

中国象棋DWord格式文档下载.docx

 

(2)代码编写

在编写代码部分,我们组遇到了许多问题,因为是从未接触过的知识,所以在编程过程中经常报错,为了在规定时间内完成任务,我们组就现学现用,在网上下载相关的代码,结合Java_API手册一遍又一遍的反复读,手册上没有的类就上网查,遇到英文就用翻译软件翻译了来看,最后再一步又一步的解决编程过程中的一个个error

首先介绍一点必备的Java3D相关知识

Java3D的场景图结构:

Java3D实际上是Java语言在三维图形领域的扩展,与Java一样,Java3D有纯粹的面向对象结构。

Java3D的数据结构采用的是Scene 

Graphs 

Structure(场景图),就是一些具有方向性的不对称图形组成的树状结构(图1)。

我们在一个Java3D应用程序看到的逼真三维场景从程序的角度看来,实际就是由Java3D定义的一系列的对象,这些对象不是杂乱无序,对象之间也不是毫无关系。

如果想让三维图像正常显示,必须在这两点上遵循Java3D场景图的规定。

观察图1,Java3D场景图的树结构由各种各样的对象组成:

在图中出现的这些对象都实现了Java3D中有重要的意义的类,从逻辑上我们将它们分为三类:

•根节点(Root):

Virtual 

Universe 

Object 

•节点(Node):

Local 

Object、Branch 

Group 

Nodes、Behavior 

Node、Shape3D 

Node… 

•叶子节点(Leaf):

Appearance、Geomery.. 

图1:

在应用中的Java3D场景图

场景图中线和线的交汇点称为节点(Node),这些节点都是Java3D类的实例(Instance 

of 

Class),节点之间的线表示各个实例之间的关系。

•Virtual 

Universe是根节点,每一个场景图的Virtual 

Universe是唯一的。

•在Virtual 

Universe下面是Locale节点,每个程序可以有一个或多个Locale,但同时只能有一个Locale处于显示状态,就好象一个三维世界非常大,有很多个景点,但我们同时只能在一个景点进行观察。

Java3D允许从一个Locale跳到另一个Locale,不过绝大多数程序只有一个Locale。

•每一个Locale可以拥有多个BranchGroup节点。

所有三维形体的其位置信息(Transform 

Group 

Nodes)都建立在BranchGroup节点之上。

•TransformGroup 

Node用来设定Shape3D在Virtual 

Universe中的位置。

•Spape3D 

Node是三维图形节点,这个节点的实体放映在最后的显示画面中,就是三维世界中的每个形体。

包括正方体、球体以及任何形状和外观的三维形体。

•位于场景图最下层的是两个叶子节点:

三维体的外观(Appearance)和几何信息(Geometry),这两个节点定义了一个三维体的显示效果。

•View 

Platform位于图1的另一个分枝上,与前面所有描述三维体的性质的概念不同,View 

Platform和View都是用来定义观察者的信息。

上面所列的概念很多,但是对于建立一个简单的Java3D程序,我们至少需要了解三个概念:

虚拟宇宙(Virtual 

Universe)、场景(Locale)、坐标系统。

下面是一些相关代码的具体实现:

1.制作象棋程序的窗体

privateChessFram(){

setpanel=newSetPanel();

ﻩﻩcanvasfactroy= newCanvasFactroy(SimpleUniverse.getPreferredConfiguration());

ﻩthis.setSize(660,600);

ﻩthis.setResizable(false);

ﻩthis.setLocationRelativeTo(null);

this.setTitle("

中国象棋3D"

);

ﻩﻩthis.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.add(canvasfactroy.getCanvas3D(),BorderLayout.CENTER);

ﻩthis.add(setpanel,BorderLayout.EAST);

}

比较简单,就不介绍了

2.构建棋板

publicCanvasFactroy(GraphicsConfiguration config){

ﻩcanvas3d =newCanvas3D(config);

ﻩbounding = newBoundingSphere(new Point3d(0,0,0), 1000);

ﻩﻩstartabs= newAbsChess('

炮'

 newPoint(2,3),Color.red);

//开始节点信息

ﻩendabs =newAbsChess('

 '

newPoint(3,3),Color.red);

//结束节点信息

ﻩﻩSimpleUniverse universe =new SimpleUniverse(canvas3d);

//创造一个虚拟场景

ﻩBranchGroupbranchgroup =newBranchGroup();

//创建一个组群

ﻩtransgroup=newTransformGroup();

//定义摆放位置

transgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

ﻩﻩtransgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);

ﻩtransgroup.addChild(createBgAndLight());

//添加背景色和光线

ﻩtransgroup.addChild(createChessboard());

//添加棋板

transgroup.addChild(createStartInfo());

//添加开始信息

ﻩtransgroup.addChild(createEndInfo());

//添加结束信息

ﻩﻩArrayList<

ChessPiece>

arr=newArrayList<

ChessPiece>

();

//添加棋子

ﻩfor(AbsChessa :

ChessConfig.ChessPieces) {

ChessPiececp=newChessPiece(a.getChessName(), a.getChessPoint(),

a.getChessColor());

ﻩarr.add(cp);

ﻩtransgroup.addChild(cp.getPieceGroup());

ﻩﻩ}

ﻩﻩpieceaction=new PieceAction(arr,startabs,endabs);

ﻩbranchgroup.addChild(transgroup);

//将对象添加到组群里

ﻩOrbitBehaviororbit= newOrbitBehavior(canvas3d,//定义对象能否通过鼠标选择

ﻩﻩOrbitBehavior.REVERSE_ALL|OrbitBehavior.STOP_ZOOM);

ﻩﻩorbit.setSchedulingBounds(bounding);

ﻩﻩViewingPlatformviewingPlatform =universe.getViewingPlatform();

//添加人物视角

ﻩviewingPlatform.setNominalViewingTransform();

ﻩviewingPlatform.setViewPlatformBehavior(orbit);

ﻩﻩuniverse.addBranchGraph(branchgroup);

ﻩﻩcanvas3d.addMouseListener(this);

ﻩcanvas3d.addMouseMotionListener(this);

ﻩ}

3.构造棋子

publicclass AbsChess{//定义一个棋子的数据结构,包括棋子名字,坐标,颜色

ﻩpublicAbsChess(charchessName,PointchessPoint,ColorchessColor){

super();

ﻩﻩChessName=chessName;

ﻩChessPoint=chessPoint;

ﻩﻩChessColor=chessColor;

ﻩ}

ﻩpublicchargetChessName(){

ﻩreturnChessName;

public voidsetChessName(charchessName){

ChessName =chessName;

ﻩpublicPoint getChessPoint() {

ﻩﻩreturn ChessPoint;

ﻩpublicvoid setChessPoint(PointchessPoint){

ﻩChessPoint=chessPoint;

publicColor getChessColor(){

ﻩreturnChessColor;

publicvoidsetChessColor(ColorchessColor) {

ChessColor =chessColor;

ﻩprivatecharChessName;

ﻩprivatePointChessPoint;

privateColorChessColor;

4.构造3D棋子

publicclassChessPiece extends AbsChess{//类的继承

publicChessPiece(charchessName,Point chessPoint,ColorchessColor) {

ﻩﻩsuper(chessName,chessPoint,chessColor);

ﻩpiecegroup= new TransformGroup();

ﻩﻩpiece

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

当前位置:首页 > 法律文书 > 判决书

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

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