renmin  
常常被别人以为是高手

刚刚讲完WebCast,把代码传上来大家来玩一下.
第一节,已在8月25日完成:Deflexion 游戏开发(一)

第二节,在9月7日下午.Deflexion 游戏开发(二)

原码下载DeflexionV1





设计文档:(不是很长,直接贴在这里吧).

1           目标:

1.1          单机版,两人轮流进行,没有AI

1.2          100%按照规则实现棋子的移动,旋转,死亡,和判断胜负。

2           实现:

2.1          棋子,激光,棋子反射激光等效果全部使用2D图片实现。

2.2          无动画效果。

3           操纵:

3.1          鼠标:选择棋子,选择操作,激光自动发射,点击OK,轮到下一选手。

4           数据结构:

4.1          格:Square
棋盘上的一格,可以是空格,GoldenSilver格,或是有棋子的格。

4.1.1     属性:

4.1.1.1    当前图像(CurrentView

4.1.1.2    照射状态 ShineStatus

4.1.1.3    颜色 ColorGolden or Silver or Black

4.1.1.4    棋子 Piece

4.1.1.5    位置 Position

4.1.2     方法:

4.1.2.1    照射进来 ShineIn

4.2          G/S格:ColumnSquare : Square

4.2.1     属性:

4.3          棋子:abstract class Piece :

4.3.1     属性:

4.3.1.1    Rotatable

4.3.1.2    Movable

4.3.1.3    Angle

4.3.1.4    Mirrors

4.3.1.5    Square

4.3.1.6    Color

4.3.1.7    CurrentView

4.3.2     方法:

4.3.2.1    Move:移动一格

4.3.2.2    Rotate:顺时针或逆时针转动90

4.3.2.3    GetMovableSquares:获得下一步可以移动到的格

4.3.2.4    照射进来 ShineIn

4.4          法老王:Pharaoh : Piece

4.5          祭祀门:Djed : Piece

4.6          金字塔:Pyramid : Piece

4.7          方尖石:Obelisk : Piece

4.8          墙:Wall : Piece

4.9          发射器:LaserGun : Piece

4.10       镜子:Mirror

4.10.1 属性

4.10.1.1Angle

4.10.2 方法

4.10.2.1照射进来 ShineIn

4.11       激光:Beam

4.11.1 属性:

4.11.1.1方向:Direction

4.11.1.2路径:Path
Point的列表

4.12       棋盘 ChessBoard 8 x 10 (10 x 12) (0~9 x 0 ~11)

5           方法说明:

5.1          ShineIn

5.1.1     返回值:Point

5.1.2     输入:方向角度

5.1.3     说明:
当激光以某一角度照射到棋盘上一个时,本方法计算出激光下一步所到的的位置。可能方向不变(空格),也可能方向改变90度(DjedPyramid),也可能激光就此中止(Wall or Piece Dead)。

5.1.4     算法:

5.1.4.1    如果格上没有棋子:则返回同激光入射方向的下一个格。

5.1.4.2    如果格上有棋子:

5.1.4.2.1   无反射面:激光停止,棋子死亡。

5.1.4.2.2   有一个或多个反射面:判断每个反射面与光束所成的角度。<180则发生反射。反射面是入射光线和反射光线所成角的角平分线。>180度不发生反射。如果每个反射面都不发生反射,则激光停止,棋子死亡。

6           UI绘制

6.1          绘制方法有外部对象完成。绘图方法与棋子对象分开。

 

 

 

 

posted on 2006-08-25 14:01    阅读(1753)  评论(11编辑  收藏  举报