完整题目描述
提莫攻击
在《英雄联盟》这款游戏中,提莫(Teemo)以其独特的“毒性射击”技能闻名。这个技能使得提莫的普通攻击附带额外的魔法伤害,并且如果目标在一段时间内受到提莫的毒性射击再次攻击,会承受额外的持续伤害(中毒效果)。
现在,假设你是一名游戏开发者,需要设计一个算法来模拟提莫的“毒性射击”技能。算法需要接收一系列的攻击事件(包含攻击时间戳和伤害值),并计算每个攻击事件造成的总伤害(包括直接伤害和中毒的持续伤害)。
中毒效果的具体规则如下:
- 每次攻击都会造成直接伤害。
- 如果目标在受到当前攻击之前4秒内已经受到过提莫的攻击,则额外造成中毒的持续伤害,这个持续伤害是固定的值。
- 中毒效果不会叠加,即每次攻击只触发一次中毒效果(即使目标在4秒内被多次攻击)。
输入:
- 一个包含多个元素的列表,每个元素是一个包含两个整数的元组(或数组):
(timestamp, damage)
,其中timestamp
是攻击的时间戳(单位:秒),damage
是此次攻击的直接伤害值。 - 一个整数
poisonDamage
,表示中毒的持续伤害值。
输出:
- 一个列表,包含每个攻击事件造成的总伤害(包括直接伤害和中毒的持续伤害,如果适用)。
PHP 示例代码
<?php
function calculateTotalDamage($attacks, $poisonDamage) {
$lastHitTime = -5; // 初始化上一次攻击的时间戳为-5秒,确保第一个攻击能触发中毒效果
$result = [];
foreach ($attacks as $attack) {
list($timestamp, $damage) = $attack;
$totalDamage = $damage; // 总伤害初始化为直接伤害
if ($timestamp - $lastHitTime <= 4) {
$totalDamage += $poisonDamage; // 如果在4秒内再次受到攻击,则增加中毒伤害
}
$result[] = $totalDamage;
$lastHitTime = $timestamp; // 更新上一次攻击的时间戳
}
return $result;
}
// 示例
$attacks = [[1, 10], [5, 15], [9, 7], [13, 10]];
$poisonDamage = 5;
$totalDamages = calculateTotalDamage($attacks, $poisonDamage);
print_r($totalDamages);
?>
Python 示例代码
def calculate_total_damage(attacks, poison_damage):
last_hit_time = -5 # 初始化上一次攻击的时间戳
total_damages = []
for timestamp, damage in attacks:
total_damage = damage
if timestamp - last_hit_time <= 4:
total_damage += poison_damage
total_damages.append(total_damage)
last_hit_time = timestamp
return total_damages
# 示例
attacks = [(1, 10), (5, 15), (9, 7), (13, 10)]
poison_damage = 5
total_damages = calculate_total_damage(attacks, poison_damage)
print(total_damages)
JavaScript 示例代码
function calculateTotalDamage(attacks, poisonDamage) {
let lastHitTime = -5; // 初始化上一次攻击的时间戳
const totalDamages = [];
attacks.forEach(([timestamp, damage]) => {
let totalDamage = damage;
if (timestamp - lastHitTime <= 4) {
totalDamage += poisonDamage; // 如果在4秒内再次受到攻击,增加中毒伤害
}
totalDamages.push(totalDamage);
lastHitTime = timestamp; // 更新上一次攻击的时间戳
});
return totalDamages;
}
// 示例
const attacks = [[1, 10], [5, 15], [9, 7], [13, 10]];
const poisonDamage = 5;
const totalDamages = calculateTotalDamage(attacks, poisonDamage);
console.log(totalDamages);
码小课网站中有更多相关内容分享给大家学习,涵盖算法设计、数据结构、编程语言等多个方面,帮助大家提升编程技能。