Hallo, ich habe gerade einen Code eines Rasters fertiggestellt. Mit den Anweisungen können Sie nach rechts, links, oben oder unten gehen und einen bestimmten Wert eingeben, um sich fortzubewegen. Das Problem ist jetzt jedoch, welcher Wert eingegeben wird, ist der einzige Ort, der wahr wird. Ich versuche, die gesamte Menge wahr werden zu lassen. Zum Beispiel, wenn wir uns nach rechts bewegen, sollte es 3 Punkte = wahr statt nur der letzte sein. Kann mir jemand dabei helfen?Boolesche 2D-Arrays C# Mehrere Werte wahr machen
// Make a bool 2d array and save already drilled values into the array
bool[,] drill = new bool[401, 200];
drill[200, 1] = true;
drill[200, 2] = true;
drill[200, 3] = true;
drill[201, 3] = true;
drill[202, 3] = true;
drill[203, 3] = true;
drill[203, 4] = true;
drill[203, 5] = true;
drill[204, 5] = true;
drill[205, 5] = true;
drill[205, 4] = true;
drill[205, 3] = true;
drill[206, 3] = true;
drill[207, 3] = true;
drill[207, 4] = true;
drill[207, 5] = true;
drill[207, 6] = true;
drill[207, 7] = true;
drill[206, 7] = true;
drill[205, 7] = true;
drill[204, 7] = true;
drill[203, 7] = true;
drill[202, 7] = true;
drill[201, 7] = true;
drill[200, 7] = true;
drill[199, 7] = true;
drill[199, 6] = true;
drill[199, 5] = true;
// Set some values
bool okay = true;
int column = -1;
int row = -5;
int check_column = 199;
int check_row = 5;
// Run a while loop
do
{
// Ask the user to input a direction
Console.WriteLine("Which direction would you like to go?");
string direction = Console.ReadLine();
// Ask the user to input a movement
Console.WriteLine("What value would you like to move by?");
string distance = Console.ReadLine();
int new_distance = Convert.ToInt32(distance);
// Use if statements
if (direction == "l" || direction == "L")
{
column = column - new_distance;
check_column = check_column - new_distance;
}
else if (direction == "u" || direction == "U")
{
row = row + new_distance;
check_row = check_row - new_distance;
}
else if (direction == "r" || direction == "R")
{
column = column + new_distance;
check_column = check_column + new_distance;
}
else if (direction == "d" || direction == "D")
{
row = row - new_distance;
check_row = check_row + new_distance;
}
else if (direction == "q" || direction == "Q" || new_distance == 0)
{
Console.WriteLine("Program will now end.");
okay = false;
break;
}
while (new_distance > 0)
{
if (drill[check_column, check_row] == true && check_row >= 0 && check_row <=200 && check_column >=0 && check_column <=400 && drill[check_column, check_row] != true)
{
Console.WriteLine("{0},{1} safe", column, row);
break;
}
else
{
Console.WriteLine("{0},{1} danger", column, row);
Console.WriteLine("Program will now end.");
okay = false;
break;
}
}
} while (okay);
if (okay == false)
{
Console.WriteLine("Thanks for using the program!");
}
Console.ReadLine();
Ein paar Dinge 1) '(okay == false)' wird immer wahr sein und ist daher nicht notwendig, weil Sie nur von Ihrem do brechen, während Schleife nach der Einstellung okay = false 2) in Ihrer while-Schleife haben Sie konkurrierenden check 'drill [check_column, check_row] == true && .. && drill [check_column, check_row]! = true' 3) Sie dekrementieren nie ' new_distance' in deiner while-Schleife 4) Könntest du klarstellen, was du meinst _3 spots = true_. Ich sehe nicht, wo Sie alles auf True setzen, außer in Ihrer Initialisierung –
Okay, zum Beispiel wenn ich "r" dann "2" eingeben soll, dann sollte es diese 2 Punkte auf dem Raster wahr machen, aber im Moment ist es nur Setzen Sie den EXAKTEN Wert 2 richtig auf Original um wahr – SaltyLegend