第11页 共41页
网络联机用例图:
图3-4 网络联机游戏用例图
游戏用例图:
图3-5 游戏用例图
第12页 共41页
2. 系统的主要UML图见下页:
图3-2 Risk类的依赖关系图
图3-3 SwingGUIPanel类的依赖关系图
第13页 共41页
图3-4 RikGame类的依赖关系图
第14页 共41页
4 详细设计
详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。详细设计的结果基本上决定了最终程序代码的质量。详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。
4.1 核心包的设计
游戏中需要经常用到的常有名词有卡片、国家、任务、玩家、版块、统计资料等等,所以我们由此可以确定这些基本的核心类:Card、Continent、Country、Mission、Player、Statistic;
4.1.1 Card类的设计与实现:
在游戏过程中某一些国家中会有卡片,当你没占领了这样的国家的时候,你就能获得卡片,当你获得了几张放在一起可以交易的卡片的时候你就可以用卡片换军队了,所以在该类中有卡片的名字,所属国家等属性,该类的类图如下所示:
图4-1 Card类的类图
Card类的主要代码如下:
public class Card implements Serializable {
??
public Card(String n, Country t) { name = n; Country = t; }
public String getName() { return name; }
public Country getCountry() { return Country; } }
第15页 共41页
4.1.2 Continent类的设计与实现:
游戏中的图片都是世界地图,其中包括几个洲,这些洲再分成一个一个国家,洲有自己的名字和颜色,并且每个洲都有它的对应的价值的军队数,当你占领了一个洲的时候,当下一轮到你进攻的时候,你可以获得相应数目的军队,在其他对象访问该对象时,可以获得它的名字,颜色,价值军队数和所属的玩家,其类图见图4-2所示:
图4-2 Continent类的类图
Continent类的主要代码如下:
public class Continent implements Serializable {
??
public boolean isOwned(Player p) { int ownedByPlayer=0;
for (int c=0; c< territoriesContained.size() ; c++) {
if ( ((Country)territoriesContained.elementAt(c)).getOwner() == p ) { ownedByPlayer++; } }
if ( ownedByPlayer==territoriesContained.size() ) { return true; }else {
return false; } } } if ( ownedByPlayer==territoriesContained.size() ) { return true; }else { return false; } }
?? }