资源简介

作业04 行为型+其它(以step0_src中代码为基础) 1. 将玩家改为只有两个Player,一个HumanPlayer,一个AutoPlayer。初始时,各玩家都站在map中的第一个Block上,初始的移动方向任意。每轮次HumanPlayer玩家前进3格,AutoPlayer前进2格。前进方向任意,但若前方有格子(前进、左转、右转),必定前进,而不能往回走。HumanPlayer所在的格子用[X]表示,AutoPlayer的格子用(X)表示。请实现代码。 2. 在Players的代码中,通过getFirst和getLast取得两个玩家,但这两个成员函数与Player用deque表示紧密相关,且只能取得前后两个Player。考虑到玩家数量可多个,玩家集合的数据结构可多样,请用迭代器模式重新实现遍历所有玩家的功能,要求分别实现C++风格的外部迭代器和Java风格的外部迭代器。迭代器接口如下: class CppIterator { public: CppIterator( ) {} virtual ~CppIterator( ) {} virtual void first() = 0; virtual void next() = 0; virtual bool isLast() const = 0; virtual void * current() = 0; virtual int count() const=0; }; class JavaIterator { public: JavaIterator() {} virtual ~JavaIterator() {} virtual void* next() = 0; virtual bool hasNext() const = 0; virtual int count() const=0; }; 3. 若玩家前进时,各玩家的前进策略多种多样,如一种策略是各可能方向是等概率的(例如1中的代码),另一种策略是各方向有不同几率:inDir未确定时,向各方向前进的概率相等;inDir确定时,各方向的概率不一定相同。具体可见下表。而且以后可能会添加新的前进策略,如具有AI的策略等;玩家还可能需要动态改变前进策略。请使用策略模式实现。 inDir==NONE时 inDir!=NONE时 连通四个方向 各方向各25% 直行50%,左转25%,右转25% 连通往三方向 各方向各33% 可直行时,直行60%,左转(或右转)40%; 不可直行时,左转和右转各50% 连通两个方向 各方向各50% 与inDir不同的方向为100% 连通一个方向 各方向各100% 100%地转向往回走 4. 为提高趣味性,增加了卡片子系统和魔法子系统, Player可以使用卡片、魔法等,作用于各玩家或系统中的其它对象上。部分类图如下: 这里使用RobCard会抢走指定玩家的一半金钱;使用MeanCard会平均所有玩家的金钱;使用ReturnSpell会使指定玩家直接返回到开始的Block,inDir不定。 1) 修改PlayMenu为: PlayMenu 1. Go… 2. ApplyRobCard 3. ApplyMeanCard 4. ApplyReturnSpell 5. Load 6. Save 7. Back To MainMenu Your selected: 并给Player类添加行为ApplyRobCard(Player * target);、ApplyMeanCard();和ApplyReturnSpell(Player * target),然后实现。 2) 以后肯定要添加其它Card和Spell,还有可能增加道具子系统等。由于Player已有子类AutoPlayer和HumanPlayer,而且未来扩展Card、Spell和道具等时,作用目标target有多种可能,如Player、Block、Player集合,甚至Card类等,所以希望在未来扩展时,避免通过继承Player类或其子类进行扩展。请使用命令模式实现此目地。 5. 若需要增加FlyCard和FreezeSpell。其作用是:当应用FlyCard到某个Player上时,该player将每轮次前进6格,并持续2个轮次;当施加FreezeSpell到某个Player上时,该player将每轮次只前进1格,并持续3个轮次。 考虑到以后还会添加其它类似功能的Card和Spell,但不希望直接从Player类派生子类进行扩展。请使用状态模式实现此目的。 6. 若还需要增加HurtSpell,该Spell会导致被作用的Player,每轮次减少Money的数量5,并持续2

资源截图

代码片段和文件信息

///======================================================================
///  Project:   Richer02
/// FileName: absmenufactory.cpp
///     Desc:   Richer 02
///   Author: Chen Wei
///======================================================================
#include “absmenufactory.h“

AbsMenuFactory::AbsMenuFactory()
{
//ctor
}

AbsMenuFactory::~AbsMenuFactory()
{
//dtor
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        393  2019-10-20 14:10  练习04\T01\T01\absmenufactory.cpp

     文件        230  2019-10-20 16:20  练习04\T01\T01\absmenufactory.h

     文件       1804  2019-10-20 16:21  练习04\T01\T01\block.cpp

     文件       1797  2019-10-20 23:31  练习04\T01\T01\block.h

     文件        541  2019-10-15 15:48  练习04\T01\T01\blockfactory.cpp

     文件        254  2019-10-20 16:21  练习04\T01\T01\blockfactory.h

     文件        981  2019-10-15 15:49  练习04\T01\T01\blockmgr.cpp

     文件        509  2019-10-20 16:21  练习04\T01\T01\blockmgr.h

     文件        597  2019-10-15 15:50  练习04\T01\T01\blockprototype.cpp

     文件        247  2019-10-15 15:50  练习04\T01\T01\blockprototype.h

     文件       1538  2019-10-15 15:51  练习04\T01\T01\game.cpp

     文件        260  2019-10-15 15:50  练习04\T01\T01\game.h

     文件       1036  2019-10-18 16:35  练习04\T01\T01\global.h

     文件        162  2019-10-20 09:39  练习04\T01\T01\main.cpp

     文件       2205  2019-10-20 16:21  练习04\T01\T01\map.cpp

     文件        439  2019-10-20 16:21  练习04\T01\T01\map.h

     文件        886  2019-10-15 15:53  练习04\T01\T01\mapbuilder.cpp

     文件        513  2019-10-15 15:53  练习04\T01\T01\mapbuilder.h

     文件       3838  2019-10-15 15:54  练习04\T01\T01\mapdirector.cpp

     文件        593  2019-10-15 15:54  练习04\T01\T01\mapdirector.h

     文件       2014  2019-10-20 16:21  练习04\T01\T01\mapimp.cpp

     文件        371  2019-10-20 16:21  练习04\T01\T01\mapimp.h

     文件        713  2019-10-15 15:56  练习04\T01\T01\mapmgr.cpp

     文件        571  2019-10-15 15:56  练习04\T01\T01\mapmgr.h

     文件       6780  2019-10-20 15:31  练习04\T01\T01\menu.cpp

     文件       2944  2019-10-15 15:56  练习04\T01\T01\menu.h

     文件       1703  2019-10-15 16:00  练习04\T01\T01\menufactory.cpp

     文件        352  2019-10-15 16:00  练习04\T01\T01\menufactory.h

     文件        940  2019-10-15 16:00  练习04\T01\T01\menumgr.cpp

     文件        574  2019-10-15 16:00  练习04\T01\T01\menumgr.h

............此处省略372个文件信息

评论

共有 条评论