まあ、私は線の傾きを計算しようとしていますが、当然、点が未定義になるときは、ゼロで除算しようとするときです。さて私は、tryキャッチでこれを処理し、それでもゼロ誤差による除算を得るのではなく、...予想外の場所に...ここ ゼロ誤差による奇妙な除算
はコードです:private void tmrEnemyMovement_Tick(object sender, EventArgs e) {
for (int i = 0; i < enemies.Count; i++) {
int eneX = enemies[i].GetEnemyWorldPosX();
int eneY = enemies[i].GetEnemyWorldPosY();
int playerX = player.GetPlayerWorldPosX();
int playerY = player.GetPlayerWorldPosY();
double slope = -100000000;
try {
slope = (GetDistanceBetween(eneY, playerY))/(GetDistanceBetween(eneX, playerX));
} catch (DivideByZeroException) {//Division by Zero Exception is handled here.
slope = GetDistanceBetween(eneY, playerY)/1;
}
int multiplicative = 1;
int rise = 1;//Convert.ToInt32(slope * multiplicative);
int run = multiplicative;
Text = Convert.ToSingle(slope) + "";
if (enemies[i].GetEnemyWorldPosX() < player.GetPlayerWorldPosX() && enemies[i].GetEnemyWorldPosY() > player.GetPlayerWorldPosY()) {//Enemy Resides in Quadrant 2
enemies[i].MoveEnemyTo(run, rise, "+-");
} else if (enemies[i].GetEnemyWorldPosX() < player.GetPlayerWorldPosX() && enemies[i].GetEnemyWorldPosY() < player.GetPlayerWorldPosY()) {//Enemy Resides in Quadrant 3
enemies[i].MoveEnemyTo(run, rise, "+-");
} else if (enemies[i].GetEnemyWorldPosX() > player.GetPlayerWorldPosX() && enemies[i].GetEnemyWorldPosY() > player.GetPlayerWorldPosY()) {//Enemy Resides in Quadrant 1
enemies[i].MoveEnemyTo(run, rise, "-+");
} else if (enemies[i].GetEnemyWorldPosX() > player.GetPlayerWorldPosX() && enemies[i].GetEnemyWorldPosY() < player.GetPlayerWorldPosY()) {//Enemy Resides in Quadrant 4
enemies[i].MoveEnemyTo(run, rise, "--");
}
}
Bitmap bmp = map.GetMap() as Bitmap;
using (Graphics drawEnemy = Graphics.FromImage(bmp)) {
for (int i = 0; i < enemies.Count; i++) {
drawEnemy.DrawImage(enemies[i].getSprite(), new PointF(enemies[i].GetEnemyWorldPosX(), enemies[i].GetEnemyWorldPosY()));
}
}
}
そして、いくつかの奇妙なためその理由は、私は本当に私を助けてdoesntの奇妙な場所にこれを取得する:
次のようにこのメソッドが定義されている:
private int WorldPositionY = 0;
public int GetEnemyWorldPosY() {
return WorldPositionY;
}
あなたは、そのシンプルなゲッターを見ることができるので、なぜ私は通りゼロエラー#1による除算、tryキャッチで処理されたときの除算、この行の#2を得ていますか? 私は何かを逃したことがありますか?
**編集:ここで** は、スタックトレースは次のとおりです。
最適化を無効にしていますか? – Rob
現在、私はこれをデバッグモードで実行しています。 – BlazeXenon
完全なスタックトレースを表示できますか? – Zong