在java编程中会经常遇到多个对象及多个方法杂糅在一起的问题,这里以自制游戏Demo举例:

           一.   需求分析:

                    1.设计一个勇者斗恶龙游戏,具有游戏注册、登录、查询、退出游戏功能;

                    2.游戏中主要有勇者,武器,怪物三种实体类;

                    3.勇者有AD,坦克,法师,辅助四种职业类型,各种职业有各自固定武器;

                    4.武器有弓,剑,魔法,十字架四种,同样武器也有各自的属性;

                    5.恶龙主要有:水龙,火龙,土龙三种,也有各自的属性;

                    6.玩家自选3个勇者,三种龙随机出现;勇者先攻击龙,龙后攻击勇者;轮番作战,直到一方阵亡为止;输出获胜者。

          二. 设计流程:

                     类图分析(如下图所示):------------数据线:抽象类和实体类的分析和创建------Role--Dragon+Fighter------Weapon--Bow+Sword+Magic+Cross

                    1.根据恶龙和勇者的共同属性设定抽象类Role,共同属性有:name,Health,alive行为有:getHurt和attack;

                    2.龙类勇者类均继承于(泛化Generalization了)角色类(角色类的泛型是),且为实体类;

                    3.根据弓,魔法,剑的共同属性设定抽象类Weapon,共同属性有:wear,damage,name,行为有:攻击和维修

                    4.bow,magic,sord均继承于武器类,且为实体类;

                    5.接口IFix实现Realization了武器类的fix行为;

依赖Dependency于武器类的实现;


java写DNF倍功 java地下城与勇士_java写DNF倍功


           流程图分析(如下图所示):--------操作线-----------游戏登录注册+游戏介绍+自选3个角色+对战模式(勇者闯关模式,先对战水龙,后对战土龙,最后对战火龙)+退出游戏


java写DNF倍功 java地下城与勇士_抽象类_02


       三.具体功能实现:

            数据线:抽象类和实体类的封装

             1.   抽象类角色的封装:-------Role----角色类(姓名,生命值,存活状态)


java写DNF倍功 java地下城与勇士_抽象类_03

java写DNF倍功 java地下城与勇士_实体类_04


           2.勇者类实体类的封装与继承:-------Fighter-----剑士,弓手,法师(调用武器的攻击方法)

java写DNF倍功 java地下城与勇士_java写DNF倍功_05


java写DNF倍功 java地下城与勇士_实体类_06

java写DNF倍功 java地下城与勇士_封装_07

            3.恶龙类实体类封装与继承---------Dragon(多了格挡技能)

java写DNF倍功 java地下城与勇士_java写DNF倍功_08

         4.抽象类武器封装-----Weapon-----弓,剑,魔法的持久度和伤害都是固有属性;

java写DNF倍功 java地下城与勇士_java写DNF倍功_09

java写DNF倍功 java地下城与勇士_封装_10



        5.实体类武器-------武器类的继承,多态,接口-----均继承于武器类,但攻击方式各有不同;均继承于接口,但维修方式各有不同

         创建维修接口:

java写DNF倍功 java地下城与勇士_抽象类_11

       弓--------攻击方式:箭矢攻击-----维修方式:补充箭矢

java写DNF倍功 java地下城与勇士_封装_12

      剑-------攻击方式:刺击--------维修方式:重铸

java写DNF倍功 java地下城与勇士_实体类_13

      魔法-------攻击方式:法力攻击------维修方式:补魔

java写DNF倍功 java地下城与勇士_封装_14

操作线:

具体玩法的封装--------游戏登录注册+游戏介绍+对战模式

登录注册+玩法介绍:

java写DNF倍功 java地下城与勇士_封装_15

java写DNF倍功 java地下城与勇士_封装_16

角色创建:自由选择3个勇士,龙固定

java写DNF倍功 java地下城与勇士_java写DNF倍功_17


对战模式:勇者一起攻击龙,龙随机攻击勇者,直到一方全部阵亡,判断输赢,结束游戏。

java写DNF倍功 java地下城与勇士_抽象类_18


java写DNF倍功 java地下城与勇士_封装_19

这里设定getAlive默认是1存活,0是阵亡;end=0游戏继续;end=1,勇者获胜;end=-1,龙获胜。


游戏主界面:


java写DNF倍功 java地下城与勇士_java写DNF倍功_20