Итак, я нахожусь на заключительном этапе проекта Noughts and Crosses, и я довольно сильно застрял, я выполнил подпрограмму проверки валидации, а также подпрограмму, которая является исключительно основанный на изменении пробела в поле на «X» или «O», , но мой код, похоже, говорит мне, что какая-то часть моего кода не существует в текущем контексте, и я полностью сбит с толкуNaughts and Crosses (Tic Tac Toe), запрос подпрограммы
код:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[,] grid = new string[3, 3] {{" "," "," "},
{" "," "," "},
{" "," "," "}};
string board = System.IO.File.ReadAllText("E:\\BoardGame.txt");
Console.WriteLine(board);
int player = 0;
var XCoordinate = 0;
var YCoordinate = 0;
int x, y;
GetMoveCoordinates(ref XCoordinate, ref YCoordinate);
if (player == 0)
{
grid[XCoordinate, YCoordinate] = " X ";
player++;
}
else
{
grid[XCoordinate, YCoordinate] = " O ";
player--;
}
UpdateGrid(grid, box);
if (player == 1)
{
}
}
public static void GetMoveCoordinates(ref int XCoordinate, ref int YCoordinate)
{
int CommaLocation;
bool GameHasBeenWon = false;
string CoordinatesInput;
string XChar, YChar;
while (GameHasBeenWon == false)
{
try
{
Console.Write("Enter your coordinates: (x,y) ");
CoordinatesInput = Console.ReadLine();
CommaLocation = CoordinatesInput.IndexOf(",".ToString());
XChar = CoordinatesInput.Substring(CommaLocation - 1, CommaLocation);
YChar = CoordinatesInput.Substring(CommaLocation + 1);
XCoordinate = int.Parse(XChar);
YCoordinate = int.Parse(YChar);
}
catch
{
Console.WriteLine("Invalid Input- Please Try Again");
}
}
}
public static bool CheckValidMove(int XCoordinate, int YCoordinate, string[,] Board)
{
if ((XCoordinate >= 1) || (XCoordinate <= 3))
{
if ((YCoordinate >= 1) || (YCoordinate <= 3))
{
if ((Board[XCoordinate, YCoordinate]) == " ")
{
return true;
}
else return false;
}
else return false;
}
else return false;
}
public static void UpdateGrid(string[,] grid, string box)
{
Console.Clear();
for (int x = 0; x < grid.GetLength(0); x++)
{
for (int y = 0; y < grid.GetLength(1); y++)
{
box = box.Replace((x + 1) + "," + (y + 1), grid[y, x]);
}
}
// In the case not required as clearning the console default the cursor back to 0,0, but left in
// as an example
Console.SetCursorPosition(0, 0);
Console.WriteLine(box);
}
}
}
Но проблема, которую я, кажется, находится под Main, под, если заявление, где код, кажется, сказать мне, что поле в Обновит e (grid, box), не существует в текущем контексте, но он должен делать в последней подпрограмме? Должен ли я делать это в качестве заявления или я что-то упускаю? Также, если у вас есть какие-то советы о том, как убрать код, я бы с радостью его оценил (да, я добавлю параметры win, но сначала хочу нарисовать символы).
Это то, что сетка выглядит следующим образом:
+---+---+---+
| | | |
+---+---+---+
| | | |
+---+---+---+
| | | |
+---+---+---+
Что значит «код, кажется, говорит мне, что ящик, не существует в текущем контексте?" – EJoshuaS
Если я правильно читаю (это может помочь вызвать исключение, которое вы видите более явно), вызов' UpdateGrid (grid, box) 'не выполняется. Это было бы потому, что' box' не существует в методе 'Main' (это один из параметров« UpdateGrid »). –
Да, я думаю, что @AndrewWhitaker здесь правильно (если я правильно читаю вопрос). – EJoshuaS