资源简介
作业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个文件信息
相关资源
- java23种设计模式+23个实例demo
- 23种设计模式3 java原型模式
- Java设计模式之Prototype原型模式
- Android编程设计模式之原型模式详解
- 《软件设计模式(Java版)》每章习题
- 吉林大学数据库系统应用开发源代码
- Java设计模式刘伟带标签 高清版
- 《Java设计模式》课后答案-刘伟.rar
- Java设计模式刘伟书本中模拟考试答案
- Java设计模式刘伟课后习题答案
- 设计模式JAVA版(高清修正版)_刘伟
- 《Java设计模式》刘伟 课后习题及模拟
- 《Java设计模式》课后习题参考答案
- 重构到设计模式的经典案例,超完美
- 吉林大学javaee上机所需软件及文档说
- 设计模式(含ppt类图设计java)
- Java中的26种设计模式
- JSP+Servlet+AJAX的dao设计模式
- 尚硅谷_韩顺平_图解Java设计模式-con
- Java多功能计算器+设计模式+开发文档
- 深入浅出设计模式(中文版)真正电
- java设计模式课程设计
- 《Design Patterns》中文版
- Java多线程设计模式(含源代码、中文
- 软件设计模式大作业
- Java Design Patterns 高清原版pdf
- Thinking in Patterns 中文版
- javaweb项目+设计模式单例模式,工厂模
- 设计模式实现计事本
- 电子商务平台,jsp+servlet+javaBean MVC设
评论
共有 条评论