资源简介
作业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个文件信息
相关资源
- java的23种设计模式视频---免费共享
- Java设计模式-类图大全(.chm)
- Java常用的3中设计模式代码即工厂模式
- J2EE的13种核心模式
- 设计模式课程设计---使用5个以上不同
- Java设计模式综合应用场景
- Java设计模式-32讲视频干货
- java 设计模式之绘图程序
- 设计模式单例模式和工厂模式综合应
- 北邮 java 作业6 设计模式1
- 北邮 java 作业7 设计模式2,李颉老师
- 吉林大学Java程序设计实验报告
- java图书管理系统设计模式
- 设计模式——工厂模式在开发中的应
- 基于sql server 2008+jsp+servlet+mvc设计模式
- Java设计模式学期论文
- 吉林大学软件学院卓班数据库系统原
- Java设计模式-32讲地址.zip
- 3种设计模式的java小程序
- 免费_图解java多线程设计模式
- Manning.Microservices.Patterns.2018.10.pdf 微服
- 六种设计模式结合的Java绘图板
- 设计模式作业——用命令模式java语言
- [源代码] 修炼Java开发技术 在架构中体
- 《大话设计模式》Java代码(全二十四
- java 设计模式之 外观模式
- java 设计模式
- java常用设计模式入门级
- java设计模式
- 《移动应用UI设计模式》 pdf
评论
共有 条评论