C++第四次实验——作业

本文档介绍了C++编程实验,包括一个名为'龙三'的项目,要求填充代码以达到预期输出。此外,还涉及CPerson类的设计,该类包含姓名、身份证号、性别和年龄等成员,以及其派生类CEmployee,CEmployee增加了部门和薪水字段,需要定义相应的构造函数和信息输出函数。
摘要由CSDN通过智能技术生成

一、问题及代码

【项目1 - 龙三】

请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:
Name: 龙三

Grade: 19

/*  
* 文件名称:hj.cpp  
* 作    者:陈璐 
* 完成日期:2015 年 4月 23 日  
* 版 本 号:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作业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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值