Задание на программу:
Разработать логическую игру для демонстрации работы с контролами на языке 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
kostyaLem