Closed NickLennonLiu closed 3 years ago
有一个核心问题需要再考虑一下 这题里继承的用处不是很清楚。Combo可以直接记录 牌型、最大的牌即可,没有必要通过继承实现。因为三种处理方式过于一致,如果使用虚函数,反而让代码变得更加复杂
根据助教的提示,将牌型比较更换为宝可梦对战,类的继承用于拓展不同宝可梦的表现
挺好的,请完善数据和judger后发送到huangfei382@163.com。 几个小问题:
Hurt
不需要大写,skill最好改为一个动词短语请将题面重新优化一下,主要是:
引用
来让题面更加清晰直接在本issue上修改即可
已优化题面
验收通过
题目描述
小明想要利用类的继承来实现不同种类的宝可梦之间的对战,他已经定好了主游戏流程以及宝可梦的基类,想请你实现两个最基本的宝可梦:杰尼龟和喷火龙
游戏流程
控制游戏流程的代码已经在main.cpp中写好,主要包含如下环节:
type
(1时为杰尼龟,2时为喷火龙)、生命值hp
、攻击力atk
rounds
,若经过rounds轮后双方宝可梦均存活,则自动结束游戏player[0]
先开始操作,输入skill
和target
决定使用的技能和目标,再由player[1]
进行同样的操作基类Pokemon说明
所有宝可梦的技能都通过use_skill函数调用,如果该技能不要求目标,则调用时向target传入任意指针,不影响执行结果。
杰尼龟Squirtle
有两项技能,分别是:
0:回血(无target):恢复自身最大生命值的1/5,生命值最大不超过原来的生命值
1:喷射:对目标宝可梦造成自身攻击力的伤害
杰尼龟受到伤害时,如果当前生命值小于等于最大生命值的1/5,则受到的伤害减半(不小于1)
喷火龙Charizard
喷火龙有一个额外属性fire(初始为1)以及两项技能:
0:点燃(无target):fire属性+= 1,自身攻击力×2,然后自身生命值减少fire * 10
1:喷火:对目标宝可梦造成自身攻击力atk点伤害
喷火龙受到(非自己造成的)大于10的伤害时,对来源造成所受伤害dmg * 1/5的伤害。
输出要求:
[pokemon_name] used [Skillname] (to [target_name])
例:
S(0) used Splash to C(1)
、C(1) used Ignite
[pokemon_name] received [final_damage] damage from [from_name]
例:
Charizard(1) received 100 damage from Squirtle(0)
输入样例
样例解释:
输出样例
提交要求
提交一个压缩包,内包含Pokemon.cpp, Pokemon.h,以及一个makefile文件,oj会自动加入main.cpp。
评分标准
OJ自动评测占100%。