【发布时间】:2011-11-24 18:44:18
【问题描述】:
我在 Visual Studio 2010 Ultimate 中使用 C# 和 XNA。
我有一个程序执行一些不涉及计时、线程或其他任何可能影响结果的计算的程序,如果我停止执行以进行调试,但在继续运行程序的其余部分之前没有做任何事情。
程序结束时会在屏幕上打印一些输出。
在此程序中,反复按F10 直到显示输出会产生不同的结果,而不是仅按F5 在调试时运行或在不调试的情况下运行,两者都会产生错误的结果。
这显示了带有单独 F10 步骤的运行。
该程序多次运行一个简单的两人游戏,游戏涉及在棋盘上移动一个计数器,两个玩家都是自动的并且随机移动。每条线发生 100 场比赛,有些比赛在一定数量的比赛到期之前不会结束并且不被计算在内。从这8组随机游戏中可以看出,平衡的很好,至少对于那些随机出手的玩家来说,谁会赢谁会输。
下图显示了使用F5 运行。
有些东西不在这里,游戏运行不会相互影响,而场景只是一个停止和开始计数的地方,它们不会影响任何东西。然而与第一张图片非常不同的是,我们连续赢了所有 100 场比赛,两次赢了,但在 2 盘之后连续输掉了 100 场全新的无关比赛。
给出第二张图片的明显答案是我的程序逻辑有问题,但没有。令人沮丧的是,当我去调试问题时,缓慢地运行调试器以便我可以看到正在发生的事情来修复它。
可能出了什么问题?
【问题讨论】:
-
TYVM Reed Copsey 和 Scott Chamberlain :¬) 每个“Random rand = new Random();”之间发生了一个长循环涉及大量使用“rand”,但似乎还不够长。我现在只声明了一次并且程序可以运行。
标签: c# visual-studio-2010 debugging xna