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

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


Для сохранения и чтения настроек используется класс BinaryFormatter. BinaryFormatter упрощает процедуру сохранения объекта или группы объектов. Сохранение осуществляется в двоичном формате, достоинство такого формата - компактность и возможность сохранения объектов любой сложности, недостаток - невозможность непосредственного редактирования сохраненного файла.
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();
}
 
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();        
}
Для проверок последовательностей из 5 и более геометрических фигур в исходнике применяется класс List(T) появившийся в .NET Framework 2.0. Данный класс удобен тем, что может содержать любые типы объектов, имеет простые процедуры добавления и удаления элементов, при извлечении элементов не требуется приведения типов. Проще говоря List(T) почти идеальный динамический массив.
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;
}
Требования: среда программирования Visual Studio 2008 Express и выше, SharpDevelop 3.0 и выше.
Файл исходника Размер Количество загрузок
sourcelinesk.rar 1064 КБайт 5202

Книги по тематике

C# для профессионалов. Тонкости программирования. Руководство Скит Джон, 2014 Если вы занимаетесь разработкой приложений .NET, то будете использовать С# как при построении... Узнать больше »
C# 6.0. Полное описание языка. Справочник Албахари Джозеф, 2016 Данное руководство, ставшее бестселлером, позволяет получить точные ответы практически на любые... Узнать больше »
Асинхронное программирование в C# 5.0. Руководство Дэвис Алекс, 2015 Из этого краткого руководства вы узнаете, как механизм async в С# 5.0 позволяет упростить написание... Узнать больше »
C# 5.0. Справочник. Полное описание языка Албахари Джозеф, 2014 Данное руководство, ставшее бестселлером, позволяет получить точные ответы практически на любые... Узнать больше »
Яндекс цитирования Rambler's Top100 Яндекс.Метрика