编辑#2:随机编号现在可以正常工作,但是如果你像以前一样放入相同的编号。如果n1 = 7并且你输入7两次它将打印7正确两次但只添加一个到显示器。同时你也可以找到其他正确的数字。
编辑:我知道你们都认为这是重复的,但它根本没有用,因为我不理解那个帖子。
明天我需要这个工作,所以任何帮助都可以。
我有一个类和游戏内部的游戏我有这个安全破解拼图的东西,我似乎无法让它工作。
第一个问题是,当你传递20个猜测时,它会播放generateCombo();的WriteLine();无限地。
第二个是前两个数字总是不同,但数字2,3和4 总是相同。
我今年刚刚开始编码,并且不太了解如何修复无限循环。
提前致谢!
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; }
}
class Guesses
{
public string puzzleGuess { get; set; }
}
public static void Main(string[] args)
{
static Guesses numberOf = new Guesses();
static Safe safe = new Safe();
safe.guesses = 0;
safe.safeLocked = true;
safe.cn1 = 0;
safe.cn2 = 0;
safe.cn3 = 0;
safe.cn4 = 0;
}
public static void generateCombo()
{
safe.cn1 = 0;
safe.cn2 = 0;
safe.cn3 = 0;
safe.cn4 = 0;
Random n = new Random();
//First number
safe.num1 = n.Next(1, 10);
//Second number
safe.num2 = n.Next(1, 10);
//Third number
safe.num3 = n.Next(1, 10);
//Fourth number
safe.num4 = n.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("");
Console.Write(safe.num1);
Console.Write(safe.num2);
Console.Write(safe.num3);
Console.Write(safe.num4);
}
public static void safeCracking()
{
string numg;
int numberG;
for (safe.guesses = 0; safe.guesses < 20;)
{
printScreen();
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()) && safe.cn4 == 0)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("");
Console.WriteLine("{0} Is Correct!", numberOf.puzzleGuess);
Console.ResetColor();
safe.safeLocked = false;
safe.cn4 = numberG;
safeUnlocked();
break;
}
//Check number 3
else if (safe.cn2 > 0 && (numg == safe.num3.ToString()) && safe.cn3 == 0)
{
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()) && safe.cn2 == 0)
{
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()) && safe.cn1 == 0)
{
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++;
}
}
generateCombo();
safe.guesses = 0;
}
public static void safeUnlocked()
{
Console.Clear();
Console.WriteLine("The latch on the safe pops open and you give the door a pull.");
Console.ReadLine();
Console.WriteLine("Inside of the safe you find a medallion and 3 red potions.");
Console.ForegroundColor = ConsoleColor.Blue;
Console.ReadLine();
Console.WriteLine("MEDALLION ADDED TO INVENTORY AND PLAYER DAMAGE 2X...");
Console.ReadLine();
Console.WriteLine("3 HEALTH POTIONS ADDED TO INVENTORY...");
Console.ResetColor();
Console.ReadLine();
Console.WriteLine("As soon as you grab the last potion the roof opens and you hear a deep voice mumbling.");
Console.ReadLine();
Console.ForegroundColor = ConsoleColor.Magenta;
switch (playerClass.richtofen)
{
case 0:
Console.WriteLine("THE PURPLE KEEPER HAS AWOKEN...");
purpleKeeperBattle();
Console.ResetColor();
return;
case 1:
Console.WriteLine("THE SHADOW MAN HAS AWOKEN...");
shadowManBattle();
Console.ResetColor();
return;
}
}