出手顺序: 回合开始: 1. 结算之前回合的减速buff以及复活因其他玩家技能被复活的玩家。 2. 对生存玩家的速度进行从大到小的列表排序,相等则随机排列。 3. 定义本次战斗的回合速度参数为速度最慢的玩家的速度。 4. 定义一个以(玩家,回合用时)为元组的二维数组。 5. 对每一位玩家分别定义行动时间,行动时间=回合速度参数/该玩家速度。 6. 对每一位玩家分别定义行动次数,行动次数=该玩家速度/回合速度参数,此处为整除。 7. 对每一位玩家分别定义回合用时,回合用时初始为0。 8. 再对每一个玩家的每一次行动分别计算回合用时,回合用时=行动时间*n, n取1,2,...,行动次数,每次输出(玩家,回合用时)的元组并加入二维数组。 9. 在二维数组中对回合用时从小到大排序,若回合用时相等则参照玩家速度列表,玩家速度快的在前。 10. 将排序好的二维数组中的玩家数列输出即为出手顺序排列。 11. 玩家操作及战斗伤害计算,伤害结算规则:玩家先行动并结算此次行动造成的添加buff>治疗>伤害,此时buff只添加状态不进行任何结算,行动结束后结算玩家受到buff影响的治疗>伤害,若此时生命值归0不进行任何判定。 若在轮到玩家操作时角色生命值归0则开始判定: 若玩家能够主动复活自身,进行选择并消耗出手(1)选择复活,玩家复活并清除一切异常buff,(2)不选择复活,则将主动选择复活的选择功能移除并死亡。 若玩家不能主动复活自身,直接跳过出手并死亡。 12. 回合结束,返回循环。 整体是按照一个时间线取节点的思路做的,也能够简单的兼容减速buff和复活机制,这个设计方案导致了 1. 减速buff结算不是按照每次出手实时结算的。 2. 若玩家速度比值在为1:1.9,每一回合只形成先后出手顺序,速度的收益是一个不连续函数。 这些特点能让玩家更简单的进行速度的收益计算,感觉在部分的游戏设计上还是有适用性的。 若是做成完全按时间线完全实时结算同样也有缺点,速度收益过大,也可能会导致玩家在基础属性的选择和战斗技能的选择都严重偏向速度。 还想问一下,这类题目作答的程序向程度要如何把控,例如有时候规则上能写出的循环不是程序能直接完成的,但是按照程序能执行的要求,规则会复杂很多。
点赞

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务