Пишу Крестики-Нолики. При вводе координат появляется ошибка "Индекс находился вне границ массива", которая указывает на строку(покажу в коде).
using System;
namespace MyGame
{
class Field
{
//Двумерный массив для поля.
int[,] array = new int[3, 3];
//Заполнение массива единицами, единица обозначает, что клетка пуста.
private void fill_array()
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
array[i, j] = 1;
}
//Вывод поля на экран
private void draw_array()
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
Console.Write(array[i,j] + " ");
Console.WriteLine();
}
}
public Field()
{
fill_array();
draw_array();
}
//Ввод нуля и последующая проверка на выигрыш.
public void Enter0()
{
int x, y;
x = Console.Read();
y = Console.Read();
array[x, y] = 0;
draw_array(); <== Указывает на этот метод
if (Check(x, y))
Player.Win();
}
//Проверка на выигрыш. Проверяет содедние клетки по горизонтали и вертикали.
//Если есть три нуля - возвращает истину.
private bool Check(int x, int y)
{
int count = 0;
for (int i = 0; i < 3; i++)
{
if (array[x, i] == 0)
count++;
else
break;
}
if (count == 3)
return true;
else
{
count = 0;
for (int i = 0; i < 3; i++)
{
if (array[i, y] == 0)
count++;
else
break;
}
if (count == 3)
return true;
else
return false;
}
}
}
}
using System;
namespace MyGame
{
static class Player
{
public static void Win()
{
Console.Clear();
Console.WriteLine("You win!");
}
}
}
using MyGame;
using System;
class Game
{
static void Main()
{
Field field = new Field();
while (true)
{
field.Enter0();
}
}
}