这个小游戏是UNO的变种,是面向对象编程课(java)的一个作业。
这个游戏是一款单机游戏,一个人类用户和多个可选策略的电脑用户,共有三套可选规则,一套游戏有54张扑克牌,在不同游戏规则下每张牌有不同的功能。基本规则和UNO游戏一样,只能出和上家出相同数字或者相同花色的牌,否则自摸一张,直到可以继续出牌。有变换花色等特殊牌和惩罚牌,用于增加可玩性。
此次项目分为三个阶段完成:
- 设计功能,完成三种UML图的绘制;
- 完成核心代码,可以在控制台进行游戏;
- 完成图形界面设计。
为更好了解用户使用情况和项目框架,在项目前期绘制三类UML图进行分析:
A. 使用情况图(用例图):此类图可具体定义是谁用软件以及软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,系统为执行者完成哪些功能。
我的项目中用户可分为人类用户和电脑用户,人类用户拥有更多功能,除摸牌、出牌基础功能外,还可进行游戏配置:对电脑玩家的策略选择和人数配置,以及中止游戏功能。
B. 项目类图:根据使用情况抽象出游戏相关的类,此游戏设计的类有玩家、卡牌和游戏。
- 游戏玩家:有两类游戏玩家,人类玩家和电脑玩家,均继承自玩家父类,对于人类玩家赋予更多功能。电脑玩家采用了策略模式,创建策略接口,根据不同策略的选择,调用相对应的方法。
- 卡牌:有不同的游戏规则可进行选择,所以创建一个卡牌父类,对所有卡牌共有的特点进行定义,例如花色,数字,控制台打印牌的格式等。然后分为一个普通卡牌和三种特殊卡牌,完成三种规则的设定,其主要规定在于牌的功能的不同。
- 游戏:该类用了单例模式,用于确保游戏的唯一一个实例。设定了游戏实现的基本功能,发牌、洗牌、算分、结束游戏等。
C. 项目序列图:便于构思游戏进行步骤,提前预设游戏方法之间的调用情况,有一个宏观的游戏流程记录。例如开始游戏后先进行游戏配置,再进行洗牌、发牌,游戏过程中可能牵扯到再次洗牌,游戏方向的改变等,以及最后的结束游戏。
此阶段完成了游戏的主体构建,保证了游戏的正确运行,在控制台可进行游戏。