【发布时间】:2014-12-16 05:41:59
【问题描述】:
此外,攻击有效,但主要问题是我应该 一个方向的武器攻击。
嗨,我正在制作一个回合制动作游戏,玩家可以移动或攻击敌人, 使用某种武器。敌人只是使用一个简单的攻击逻辑来检查玩家是否 附近,然后让他受到伤害。 Nearby() 使用 Math.Abs 查找绝对距离。
这里是用于 Enemy 攻击的旧 Nearby() 方法:
public bool Nearby(Point locationToCheck, int distance)
{
if (Math.Abs(location.X - locationToCheck.X) < distance &&
(Math.Abs(location.Y - locationToCheck.Y) < distance))
{
return true;
}
else
{
return false;
}
}
因此,包含上述方法的 Enemy 类将 Player 位置传递给该方法, 和它自己的攻击范围作为一个整数,然后检查它自己的位置,并损坏 如果返回 true,则播放器。
但是,玩家攻击更复杂。他的武器必须检查 Nearby() 距离 首先在给定的方向上。所以我需要编写一个新的重载 Nearby() 方法来使用 玩家的武器攻击逻辑。我不知道该怎么做。不知何故,玩家的武器攻击方法应该将参数传递给以下 DamageEnemy() 方法:
protected bool DamageEnemy(Direction direction, int radius, int damage, Random random)
{
Point target = game.PlayerLocation;
for (int distance = 0; distance < radius; distance++) {
foreach (Enemy enemy in game.Enemies) {
if (Nearby(enemy.Location, target, distance)) {
enemy.Hit(damage, random);
return true;
}
}
target = Move(direction, target, game.Boundaries);
}
return false;
}
此 DamageEnemy 方法依赖于两个新的重载方法,即上述的 Move() 方法和重载的 Nearby() 方法。 我在 Oreilly Headfirst C#, p. 中作为教程做这个。顺便说一句,480。
*原来继承的Move()方法很简单;它只是根据来自 Direction Enum 的 4 个方向之一的输入更新继承它的对象的位置字段。
我想自己做,但真的不知道攻击逻辑应该如何工作! 谁能给我一些提示以指出正确的方向?我不知道他们希望我为什么创建新的 Move() 重载方法。玩家应该跳到他攻击的地方吗?或者它还有其他功能吗?谢谢!
【问题讨论】:
标签: c# .net oop object adventure