Задание на программу:
Разработать логическую игру для демонстрации работы с контролами на языке C# с использованием WinForms.
Механика игры:
Дано поле 5*5 клеток и 15 фишек трех цветов, по пять каждого цвета. Каждая клетка поля может быть либо блокирована, либо занята одной фишкой любого цвета, либо свободна.
На поле выставлены все фишки, 6 клеток блокированы и 4 клетки свободны. Блокированные клетки остаются таковыми всегда. Фишки мы можем передвигать на соседнее свободное место по горизонтали или вертикали. Требуется, передвигая фишки, выставить их в три вертикальных ряда соответственно цветам, стоящим над полем.
При правильном расположении фишек игра заканчивается.
Фрагмент программного кода:
private void SetTypesButtons(object sender, EventArgs e)
{
var chips = new List<List<Chip>>();
SetKeyChips();
for (int i = 0; i <= _chipArr.GetUpperBound(0); i++)
{
chips.Add(new List<Chip>());
for (int j = 0; j <= _chipArr.GetUpperBound(1); j += 2)
{
// block or empty block
if (i % 2 == 0 && ((j - 1) == 1 || (j - 1) == 3))
{
_chipArr[i, j - 1] = new Chip(i, j - 1, ChipType.Block);
chips[i].Add(_chipArr[i, j - 1]);
}
else if (i % 2 != 0 && ((j - 1) == 1 || (j - 1) == 3))
{
_chipArr[i, j - 1] = new Chip(i, j - 1, ChipType.EmptyBlock);
chips[i].Add(_chipArr[i, j - 1]);
}
// is good chips
while (true)
{
var numChip = myRnd.Next((int)ChipType.Invisibility, (int)ChipType.Speed + 1);
if (_chipCount[numChip - 1] > 0)
{
_chipArr[i, j] = new Chip(i, j, (ChipType)Enum.ToObject(typeof(ChipType), numChip));
chips[i].Add(_chipArr[i, j]);
_chipCount[numChip - 1]--;
break;
}
else
continue;
}
}
}
_view.SetKeyImages(_keyColumns);
_view.SetChipImages(chips.AsEnumerable());
}
Скриншот архива с проектом:

Содержание архива:
- Исходный код и проект
- Язык: C#
- IDE: Visual Studio
- Шаблон: Windows Forms
- Паттерн проектирования: MVP
Телеграм
-