Исходные коды программ и игр

Программирование - работа и хобби

Исходник логической игры LinesK

Язык программирования C#

Компоненты исходника

Интерфейс логической игры LinesKИсходник написан на языке .NET C#. Графика приложения построена на базе графической библиотеки GDI+ и событиях прорисовки окна OnPaint.

Исходник состоит из 6 основных классов:

  • Класс GraphItem - графический элемент, образует ячейку графического элемента с геометрической фигурой в центре. Функции: располагает графэлемент в заданном месте родительского окна, обеспечивает анимацию активности, анимацию исчезновения и изменения цвета геометрической фигуры. Из объектов данного класса состоит игровое поле приложения. Для прорисовки использует GDI+.
  • Класс FormGameSetting - модальное окно настроек игры, можно выбрать цвет и вид графической фигуры.
  • Класс FormPlayerName - модальное окно изменения имени игрока. В качестве иконки используется единица графического элемента
  • Модуль глобальных переменных и хранения настроек игры. Основные настройки игры сохраняются в файл в месте запуска приложения. Входят 3 класса - Global, GameSetting, DataRecordsman
  • Класс FormEndGame - диалоговое окно окончания игры, оповещает пользователя об окончании игры и количестве набранных очков.
  • Класс FormMain - сборочный класс приложения. Размещает на себе игровое поле состоящее из 100 графических элементов. Обеспечивает взаимодействие с пользователем, читает настройки игры из файла и при закрытии приложения сохраняет настройки в файл.

BinaryFormatter для сохранения настроек

Класс BinaryFormatter для сохранения и чтения настроек используется BinaryFormatter упрощает процедуру сохранения объекта или группы объектов. Сохранение осуществляется в двоичном формате, достоинство такого формата - компактность и возможность сохранения объектов любой сложности, недостаток - невозможность непосредственного редактирования сохраненного файла.


// Сохранение настроек в файл .ini
void ToFileIni()
{
    string filePath = Application.StartupPath + "\\settings.lin";
    FileStream fileStream = File.Create(filePath);
 
    BinaryFormatter bf = new BinaryFormatter();
 
    for (int i = 0; i < GameSet.DRH.Length; i++)
    {
         GameSet.DRH[i].CurrentPlayer = false;
    }
    bf.Serialize(fileStream, GameSet);
    fileStream.Close();
}
 
// Чтение настроек из файла  .ini
void FromFileIni()
{
    FileStream fileStream = null;
    string filePath = Application.StartupPath + "\\settings.lin";
 
    FileInfo fi = new FileInfo(filePath);
    if (fi.Exists == false) return;
 
    fileStream = File.OpenRead(filePath);
    BinaryFormatter bf = new BinaryFormatter();
    GameSet = (GameSetting)bf.Deserialize(fileStream);
     
               .............
               
    Array.Sort(GameSet.DRH, new SortRecordHolders());
     
    fileStream.Close();        
}

List<T> для проверки последовательностей

Для проверок последовательностей из 5 и более геометрических фигур в исходнике применяется класс List появившийся в .NET Framework 2.0. Данный список удобен тем, что может содержать любые типы объектов, имеет простые процедуры добавления, удаления элементов, сортировки и при извлечении элементов не требуется приведения типов. На практике List очень удобный универсальный динамический массив.


bool HideGraphItems()
{
    List<bool> listBool = new List<bool>();
    listBool.Add(CheckColumn());
    listBool.Add(CheckRow());
    listBool.Add(CheckDiagonal());
    listBool.Add(CheckDiagonal2());
 
    for (int i = 0; i < listBool.Count; i++)
    {
        if (listBool[i] == true) return true;
    }
 
    return false;
}

Инструменты для работы с исходником

Требования: среда программирования MS Visual Studio .NET 2008 и выше, SharpDevelop 3.0 и выше. Блокнот и компилятор C#.

Файл загрузки Размер Кол-во загрузок
sourcelinesk_vs10.zip 💾 1377Кбайт 5880