【发布时间】:2017-03-15 21:11:44
【问题描述】:
背景:
我正在尝试为我班上的一款游戏制作一个小迷你游戏,但我无法让它 100% 发挥作用。问题是如果你通过 20 次猜测,它会无限打印 generateCombo(); 消息,我也无法让它转到第二个数字。
任何帮助,我是新的代码,今年才开始。
提前致谢!
class Safe
{
public bool safeLocked { get; set; }
public int guesses { get; set; }
public int cn1 { get; set; }
public int cn2 { get; set; }
public int cn3 { get; set; }
public int cn4 { get; set; }
public int num1 { get; set; }
public int num2 { get; set; }
public int num3 { get; set; }
public int num4 { get; set; }
}
safe.guesses = 0;
safe.safeLocked = true;
safe.cn1 = 0;
safe.cn2 = 0;
safe.cn3 = 0;
safe.cn4 = 0;
public static void generateCombo()
{
//First number
Random n1 = new Random();
safe.num1 = n1.Next(1, 10);
//Second number
Random n2 = new Random();
safe.num2 = n2.Next(1, 10);
//Third number
Random n3 = new Random();
safe.num3 = n3.Next(1, 10);
//Fourth number
Random n4 = new Random();
safe.num4 = n4.Next(1, 10);
Console.WriteLine ("A new combonation has been generated.");
Console.ReadLine ();
safeCracking ();
}
public static void printScreen()
{
Console.Clear ();
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("Guesses: ");
Console.ResetColor();
Console.WriteLine("{0}", safe.guesses);
Console.WriteLine("");
Console.WriteLine(" ================================= ");
Console.WriteLine(" | | | | | ");
Console.WriteLine(" | | | | | ");
Console.WriteLine(" | {0} | {1} | {2} | {3} | ", safe.cn1, safe.cn2, safe.cn3, safe.cn4);
Console.WriteLine(" | | | | | ");
Console.WriteLine(" | | | | | ");
Console.WriteLine(" ================================= ");
Console.WriteLine("");
Console.WriteLine("Guess the numbers of the combination one by one.");
Console.WriteLine("");
}
public static void safeCracking()
{
for (int i = 0; i < 20; i++) {
if (safe.guesses == 20) {
generateCombo ();
}
printScreen ();
string numg;
int numberG;
try{
numg = Console.ReadLine();
numberG = int.Parse(numg);
} catch {
numg = "";
numberG = 0;
}
numberOf.puzzleGuess = numg;
//Check number 4
if (safe.cn3 < 0 && (numg == safe.num4.ToString ())) {
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("");
Console.WriteLine("{0} Is Correct!", numberOf.puzzleGuess);
Console.ResetColor();
safe.cn4 = numberG;
Console.ReadLine();
}
//Check number 3
else if (safe.cn2 < 0 && (numg == safe.num3.ToString ())) {
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("");
Console.WriteLine("{0} Is Correct!", numberOf.puzzleGuess);
Console.ResetColor();
safe.cn3 = numberG;
Console.ReadLine();
}
//Check number 2
else if (safe.cn1 < 0 && (numg == safe.num2.ToString())) {
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("");
Console.WriteLine("{0} Is Correct!", numberOf.puzzleGuess);
Console.ResetColor();
safe.cn2 = numberG;
Console.ReadLine();
}
//Check number 1
else if (safe.cn1 == 0 && (numg == safe.num1.ToString())) {
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("");
Console.WriteLine("{0} Is Correct!", numberOf.puzzleGuess);
Console.ResetColor();
safe.cn1 = numberG;
Console.ReadLine();
}
else {
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("");
Console.WriteLine("{0} Is Incorrect!", numberOf.puzzleGuess);
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("Press Enter to continue...");
Console.ResetColor();
Console.ReadLine();
safe.guesses++;
safeCracking();
}
}
if (safe.safeLocked == false) {
//Continue game here
}
}
【问题讨论】:
-
您能否编辑您的回复并添加“安全”对象的代码?
-
我们需要看看 generateCombo() 方法。
-
@StfBln 知道了
-
@OusmaneMahyDiaw 完成
-
@OusmaneMahyDiaw 是正确的。每当调用 safeCracking() 时,都会开始一个新循环。 generateCombo 问题很简单。 GenerateCombo 调用 SafeCracking。他创建了一个无限循环。