Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 

Repository files navigation

GeniyIdiot

Шуточная игра для выставления "шуточного" диагноза игроку. Написан для консоли и в WinForms-приложении с использованием общей библиотеки и сохранением файлов в формате json.

🩺 Гений/Идиот — поставь себе шуточный диагноз

.NET Platform

Консольное и Windows Forms приложение, которое с серьезным видом ставит вам абсолютно несерьезный диагноз. Проект демонстрирует разделение логики и интерфейса через общую библиотеку классов.


✨ Возможности

  • 🎲 Случайная генерация забавных «диагнозов»
  • 💾 Сохранение истории игр в файл JSON
  • 📋 Просмотр всех прошлых результатов игр
  • 🖥️ Два интерфейса на выбор: быстрый консольный и удобный графический (WinForms)

🧱 Архитектура проекта

image

Вся логика игры вынесена в общую библиотеку GeniyIdiot.Common. Консольная и WinForms версии используют её, но имеют собственные интерфейсы.


🚀 Как запустить

Что нужно: .NET или свежее.

Консольная версия

git clone https://github.com/RyuuDragon/GeniyIdiot.git
cd GeniyIdiot/GeniyIdiot.ConsoleApp
dotnet run

WinForms версия

cd GeniyIdiot/GeniyIdiot.WinFormsApp
dotnet run

Или просто откройте GeniyIdiot.sln в Visual Studio и запустите нужный проект.


🖼️ Как это выглядит

Консоль WinForms
2026-05-07_22-07-42 image
2026-05-07_22-05-40 2026-05-07_22-12-09
image image
image image
image
image

🛠️ Технологии и чему я научился

Стек технологий

C# .NET WinForms JSON

Чему научился в процессе

  • Разделение логики и интерфейса. Вынес всю игровую механику в отдельную библиотеку классов для разделения сущностей и логики работы кода.
  • Принципы ООП на практике. Использовал наследование и инкапсуляцию. Создал отдельные классы для вопросов, диагнозов и логики игры.
  • Работа с таймером.
  • Сериализация в JSON. Научился сохранять и загружать данные из файла data.json, чтобы прогресс не терялся между запусками.
  • Создание графического интерфейса. Освоил базовые элементы WinForms: кнопки, текстовые поля, метки, обработчики событий.
  • Работа с коллекциями.
  • Git и GitHub.

💻 Пример кода

Сохранение в JSON

public static void Append(string[] results)
{
    var userResults = GetAll();
    userResults.Add(results);
    Save(userResults);
}

public static void Save(List<string[]> results)
{
    var data = JsonConvert.SerializeObject(results, Formatting.Indented);
    FileManager.SaveAll(Path, data);
}

public static List<string[]> GetAll()
{
    if (IsEmpty())
    {
        return new List<string[]>();
    }

    var data = FileManager.Load(Path);
    var usersResults = JsonConvert.DeserializeObject<List<string[]>>(data);
    return usersResults;
}

public static void SaveAll(string path, string data)
{
    using (var writer = new StreamWriter(path, false))
    {
        writer.WriteLine(data);
    }
}

public static string Load(string path)
{
    using var reader = new StreamReader(path);
    var data = reader.ReadToEnd();
    return data;
}

Видео из игры

Запись-2026-05-07-225011

About

Шуточная игра для выставления "шуточного" диагноза игроку. Написан для консоли и в WinForms-приложении с использованием общей библиотеки и сохранением файлов в формате json.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages