Browse Source

Added option to skip showing all the steps

fixed bugs and such
pull/1/head
DariusTFox24 3 years ago
parent
commit
4818450ced
  1. 116
      Program.cs
  2. 9
      labyrinth.txt

116
Program.cs

@ -1,9 +1,10 @@
using IdaStar; using IdaStar;
string[] labyrinthIN = System.IO.File.ReadAllLines(@"./labyrinth.txt"); string[] labyrinthIN = File.ReadAllLines(@"./labyrinth.txt");
Console.OutputEncoding = System.Text.Encoding.UTF8;
System.Console.WriteLine("The input labyrinth: "); Console.WriteLine("The input labyrinth: ");
foreach (string line in labyrinthIN) foreach (string line in labyrinthIN)
{ {
FormattedLabRow(line); FormattedLabRow(line);
@ -12,17 +13,74 @@ foreach (string line in labyrinthIN)
var algoBoard = new IdaStar.WorkingBoard(labyrinthIN.Select((row) => row.ToList()).ToList()); var algoBoard = new IdaStar.WorkingBoard(labyrinthIN.Select((row) => row.ToList()).ToList());
int step = 0; int step = 0;
bool done = false;
ConsoleColor border = ConsoleColor.Magenta; ConsoleColor border = ConsoleColor.Magenta;
algoBoard.AlgorithmStep += (_, threshold) => { bool printSteps = false;
Console.WriteLine();
Console.WriteLine("Show each step? (Y/N) ");
if(Console.ReadLine()?.Trim() == "Y") {
printSteps = true;
}
if(printSteps) {
algoBoard.AlgorithmStep += (_, threshold) => {
PrintBoard(threshold, false);
};
}
algoBoard.RunIdaStar();
PrintBoard(0, true);
static void FormattedLabRow(string line) {
char[] characters = line.ToCharArray();
foreach (char c in characters) {
switch ( c ) {
case '#': {
Console.BackgroundColor = ConsoleColor.White;
Console.Write(" ");
break;
}
case ' ': {
Console.BackgroundColor = ConsoleColor.Black;
Console.Write(" ");
break;
}
case 'S': {
Console.BackgroundColor = ConsoleColor.Green;
Console.Write("<•>");
break;
}
case 'F': {
Console.BackgroundColor = ConsoleColor.Red;
Console.Write("[ ]");
break;
}
case 'P': {
Console.BackgroundColor = ConsoleColor.Blue;
Console.Write(" • ");
break;
}
default: break;
}
}
Console.ResetColor();
}
void PrintBoard(int threshold, bool done){
Console.Clear(); Console.Clear();
step++; step++;
if(done){ if(done){
System.Console.WriteLine("The solved labyrinth is:"); Console.WriteLine("The solved labyrinth is:");
}else if(step%2 == 0) { }else if(step%2 == 0) {
System.Console.WriteLine($"Computing (threshold: {threshold}) [• ]"); Console.WriteLine($"Computing (threshold: {threshold}) [• ]");
}else { }else {
System.Console.WriteLine($"Computing (threshold: {threshold}) [ •]"); Console.WriteLine($"Computing (threshold: {threshold}) [ •]");
} }
//top border //top border
@ -63,46 +121,4 @@ algoBoard.AlgorithmStep += (_, threshold) => {
Console.WriteLine(); Console.WriteLine();
Thread.Sleep(200); Thread.Sleep(200);
// Console.ReadLine(); // Console.ReadLine();
}; }
algoBoard.RunIdaStar();
static void FormattedLabRow(string line) {
char[] characters = line.ToCharArray();
foreach (char c in characters) {
switch ( c ) {
case '#': {
Console.BackgroundColor = ConsoleColor.White;
Console.Write(" ");
break;
}
case ' ': {
Console.BackgroundColor = ConsoleColor.Black;
Console.Write(" ");
break;
}
case 'S': {
Console.BackgroundColor = ConsoleColor.Green;
Console.Write("<•>");
break;
}
case 'F': {
Console.BackgroundColor = ConsoleColor.Red;
Console.Write("[ ]");
break;
}
case 'P': {
Console.BackgroundColor = ConsoleColor.Blue;
Console.Write(" • ");
break;
}
default: break;
}
}
Console.ResetColor();
}

9
labyrinth.txt

@ -1,7 +1,14 @@
########## ##########
#S # # F #S # # #
### # ## # ### # ## #
# # # # # #
## # # ## # #
# # ### # # # ### #
#### ####
##### ####
# # F
### #### #
# # #
## # #
# # ### #
########## ##########
Loading…
Cancel
Save