为什么我的代码只有在遇到断点时才能正常工作,而没有断点则不能
Why does my code only work correctly if it runs into a breakpoint but not without it
嘿,我正准备在 ASP.Net MVC 中制作游戏,我的问题是当您 运行 它没有断点时,我的代码将相同的对象添加到我的列表中两次。但是当你在任何地方设置断点时它都能完美地工作。那么有人可以帮我解决这个问题吗?我认为它覆盖了某些东西,或者代码 运行 比将对象添加到列表中更快,但我还不知道如何避免这些事情。
[HttpPost]
public ActionResult StartView(WizardModel model)
{
model.Runde = 1;
model.SpielerAnzahl = 2;
int kartenImDeck = 60;
for (int i = 0; i < model.SpielerAnzahl; i++)
{
if (model.SpielerListe[i].SpielerName == null)
{
int spielerZahl = i + 1;
model.SpielerListe[i].SpielerName = "Spieler " + spielerZahl;
}
List<WizardModel.Karten> kartenAufDerHand = new List<WizardModel.Karten>();
Random rand = new Random();
kartenAufDerHand = KartenAusteilen(kartenImDeck, model, rand);
model.SpielerListe[i].KartenListe = kartenAufDerHand;
}
return View("GameView", model);
}
public List<WizardModel.Karten> KartenAusteilen(int kartenImDeck, WizardModel model)
{
kartenImDeck = 60;
var rand = new Random();
List<int> listNumbers = new List<int>();
int number;
WizardModel.Karten karten = new WizardModel.Karten();
List<WizardModel.Karten> kartenAufDerHand = new List<WizardModel.Karten>();
for (int i = 0; i < model.Runde; i++)
{
number = rand.Next(1, 15);
karten.KartenWert = number;
string[] farben = { "rote", "blaue", "gruene", "gelbe" };
int index = rand.Next(farben.Length);
karten.KartenFarbe = farben[index];
kartenImDeck--;
if (number == 14)
{
karten.IstNarr = true;
}
if (number == 15)
{
karten.IstWizard = true;
}
//wizardModel.KartenListe.Add(karten);
if (karten.IstNarr == true)
{
karten.BildPfad = "narr1.png";
}
else if (karten.IstWizard == true)
{
karten.BildPfad = "zauberer1.png";
}
else
{
karten.BildPfad = karten.KartenFarbe + karten.KartenWert.ToString() + ".png";
}
}
kartenAufDerHand.Add(karten);
return kartenAufDerHand;
}
将 new Random()
调用移到 for 循环之外,随机使用时间作为种子,在循环中调用 new 会导致所有实例使用相同的种子。
嘿,我正准备在 ASP.Net MVC 中制作游戏,我的问题是当您 运行 它没有断点时,我的代码将相同的对象添加到我的列表中两次。但是当你在任何地方设置断点时它都能完美地工作。那么有人可以帮我解决这个问题吗?我认为它覆盖了某些东西,或者代码 运行 比将对象添加到列表中更快,但我还不知道如何避免这些事情。
[HttpPost]
public ActionResult StartView(WizardModel model)
{
model.Runde = 1;
model.SpielerAnzahl = 2;
int kartenImDeck = 60;
for (int i = 0; i < model.SpielerAnzahl; i++)
{
if (model.SpielerListe[i].SpielerName == null)
{
int spielerZahl = i + 1;
model.SpielerListe[i].SpielerName = "Spieler " + spielerZahl;
}
List<WizardModel.Karten> kartenAufDerHand = new List<WizardModel.Karten>();
Random rand = new Random();
kartenAufDerHand = KartenAusteilen(kartenImDeck, model, rand);
model.SpielerListe[i].KartenListe = kartenAufDerHand;
}
return View("GameView", model);
}
public List<WizardModel.Karten> KartenAusteilen(int kartenImDeck, WizardModel model)
{
kartenImDeck = 60;
var rand = new Random();
List<int> listNumbers = new List<int>();
int number;
WizardModel.Karten karten = new WizardModel.Karten();
List<WizardModel.Karten> kartenAufDerHand = new List<WizardModel.Karten>();
for (int i = 0; i < model.Runde; i++)
{
number = rand.Next(1, 15);
karten.KartenWert = number;
string[] farben = { "rote", "blaue", "gruene", "gelbe" };
int index = rand.Next(farben.Length);
karten.KartenFarbe = farben[index];
kartenImDeck--;
if (number == 14)
{
karten.IstNarr = true;
}
if (number == 15)
{
karten.IstWizard = true;
}
//wizardModel.KartenListe.Add(karten);
if (karten.IstNarr == true)
{
karten.BildPfad = "narr1.png";
}
else if (karten.IstWizard == true)
{
karten.BildPfad = "zauberer1.png";
}
else
{
karten.BildPfad = karten.KartenFarbe + karten.KartenWert.ToString() + ".png";
}
}
kartenAufDerHand.Add(karten);
return kartenAufDerHand;
}
将 new Random()
调用移到 for 循环之外,随机使用时间作为种子,在循环中调用 new 会导致所有实例使用相同的种子。