Как реализовать ход шашки - C#
Формулировка задачи:
Помогите с кодом, есть такая задача:
Есть массив 8х8, вот такой:
02020202
20202020
02020202
00000000
00000000
10101010
01010101
10101010
Обозначающий расположение шашек на поле. Не как не могу придумать как реализовать ход(т.е. к примеру, единица двигается на один элемент по диагонали, там где 0 записывается 1, а на прежнее место 1-цы ставится 0). Помогите пожалуется господа программеры.
Заранее благодарен.
Решение задачи: «Как реализовать ход шашки»
textual
Листинг программы
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication158
{
class Program
{
static void Main(string[] args)
{
//массив с полем
int[,] desk = {
{1,0,1,0,1,0,1,0},
{0,1,0,1,0,1,0,1},
{1,0,1,0,1,0,1,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,2,0,2,0,2,0,2},
{2,0,2,0,2,0,2,0},
{0,2,0,2,0,2,0,2}
};
while (true)
{
Console.Clear();
ShowDesk(desk);
Console.Write("\nEnter your move: ");
var s = Console.ReadLine(); //ввод строки хода в формате wd2-e3 w-white
//parse move
var m = Regex.Match(s, "([wd])([abcdefgh])([12345678])-([abcdefgh])([12345678])");
if (!m.Success)
continue;
var fromX = m.Groups[2].Value[0] - 'a';
var fromY = m.Groups[3].Value[0] - '1';
var toX = m.Groups[4].Value[0] - 'a';
var toY = m.Groups[5].Value[0] - '1';
var color = m.Groups[1].Value[0] == 'w' ? 1 : 2;
//check move
if(desk[fromY, fromX] != color)
{
Console.WriteLine("There is not your draught!");
Console.ReadKey();
continue;
}
if (desk[toY, toX] != 0)
{
Console.WriteLine("Target field is not empty!");
Console.ReadKey();
continue;
}
//make move
desk[fromY, fromX] = 0;
desk[toY, toX] = color;
}
}
//метод отображения доски
private static void ShowDesk(int[,] desk)
{
char[] chars = new[] { 'в–‘', 'в