玩家和怪物在我的游戏中一起错过了
本文关键字:一起 错过了 游戏 我的 怪物 玩家 | 更新日期: 2023-09-27 17:55:09
在我的C#游戏TextQuest中,战斗系统正在进行中,我遇到了一个问题。如果玩家错过了怪物也错过了(总是同时)。以下是使用的代码:
private void button1_Click(object sender, EventArgs e)
{
Monster_Class mc = new Monster_Class();
Account_Class ac = new Account_Class();
if (hitOrMiss())
{
int hit = -1;
hit = mc.hitAmount(ac.getAtk(Properties.Settings.Default.CurrentUser), mc.getDef(monster));
mhealth -= hit;
if (hit == -1)
{
setText("You missed.");
}
else
{
setText("You hit " + hit + ".");
}
monsterHit();
update();
}
else
{
setText("You missed.");
monsterHit();
}
}
private void monsterHit()
{
Monster_Class mc = new Monster_Class();
Account_Class ac = new Account_Class();
if (hitOrMiss())
{
int hit = -1;
hit = mc.hitAmount(mc.getAtk(monster), ac.getDef(Properties.Settings.Default.CurrentUser));
phealth -= hit;
if (hit == -1)
{
addText(monster + " missed.");
}
else
{
addText(monster + " hit " + hit + ".");
}
}
else
{
addText(monster + " missed.");
}
}
private bool hitOrMiss()
{
bool hit = true;
Random rand = new Random();
if (rand.Next(101) < 15)
{
hit = false;
}
return hit;
}
public int hitAmount(int Atk, int Def)
{
int hit = -1;
Random rand = new Random();
int deturm = rand.Next(6);
try
{
hit = ((Atk + deturm * 3) / Def + 1) / 2;
if (hit == 0)
{
hit = 1;
}
}
catch { }
return hit;
}
另外,如果您对造成的损害量有更好的想法,请告诉我。 因为我只是把数字和符号放在一起
您不希望每次需要随机数时都创建一个新的随机对象。否则我怀疑你会得到总是相同的数字!定义一次全局 Random 对象,并在每次请求随机数时使用它。
作为侧面提示,我会稍微改变一下设计,比如:
bool hitOrMiss(Entity attacker, Entity defender)
{
// do your calcs
}
int doAttack(Entity attacker, Entity defender)
{
if (hitOrMiss(attacker, defender)) {
// calculate damage
return dmg;
}
else
return 0;
}
private void attachPhase(object sender, EventArgs e)
{
Player player = ...
Monster monster = ...
int playerDmg = doAttack(player, monster);
int monsterDmg = doAttack(monster, player);
if (playerDmg > 0) {
}
if (monsterDmg > 0) {
}
}