Ищу юных исследователей!!!

    В 2022/2023 учебном году с учащимися была написана исследовательская работа. Предлагаю изучить! Поиск желающим принять участие в следующем году! Жду ваши идеи! 



Государственное учреждение образования

«Средняя школа №4 г. Минска»,

220030, г. Минск, ул. Красноармейская, 11, (8017) 327-57-37

 

 

 

 

 

Компьютерная игра «Idle Miner Tycoon»

 

 

 

Секция: «Информатика»

 

Авторы:

Костюкевич Евгений Витальевич

ГУО «Средняя школа №4 г. Минска», 10 «А» класс

 

Михалюк Кирилл Павлович,

ГУО «Средняя школа №4 г. Минска», 10 «А» класс

 

Научный руководитель:

Свинарская Кристина Алексеевна,

ГУО «Средняя школа №4 г. Минска»,

Учитель информатики,

Тел. Моб. +375(29) 933-70-71

 

 

 

 

 

Минск, 2021

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ. 3

ГЛАВА 1. СРЕДА РАЗРАБОТКИ ДИЗАЙНА И ИНТЕРФЕЙСА ИГРЫ.. 4

§ 1.1. Adobe Illustration. 4

§ 1.2. Unity3D.. 6

ГЛАВА 2. РАЗРАБОТКА КОМПЬЮТЕРНЫЙ ИГРЫ.. 9

§ 2.1. Графические элементы интерфейса программы.. 9

§ 2.2. Код программы.. 11

§ 2.3 Анкетирование. 19

ЗАКЛЮЧЕНИЕ. 21

СПИСОК ИНФОРМАЦИОННЫХ ИСТОЧНИКОВ.. 22

 

 

 

 

 


 

ВВЕДЕНИЕ

 

Одной из важнейших задач современного образования является формирование финансовой грамотности школьников, формирование способности активно мыслить, преодолевать трудности в решении финансовых проблем, принятии ежедневных решений по вопросам получения и траты денежных средств. Поэтому развитие такого жизненно важного навыка как финансовая грамотность следует начинать как можно раньше.

Развитие способности к позитивному финансовому поведению может дать возможность учащимся в будущем эффективно справляться с трудностями повседневной жизни, мыслить критически и эффективно организовывать свое финансовое пространство наиболее оптимальным образом. Именно в начальной школе начинается и продолжается развитие экономического образа мышления, воспитывается ответственность и нравственное поведение в семейных отношениях, формируется опыт применения знаний в элементарных экономических вопросах.

Основной идеей проекта было развитие способности людей планированию денежных затрат для получения большей выгоды. Экономические стратегии вынуждают человека планировать расходы на различные способы увеличения заработка для получения наибольшего профицита и последующего развития «своей компании».

Четкой специализации у этого жанра нет – он распространён среди обоих полов и, в зависимости от сложности, среди множества возрастов.

Для реализации проекта разрабатывалась компьютерная игра «Idle Miner Tycoon».

Задачи:

1.    Провести опрос среди одноклассников с целью выявления наиболее популярной сферы интересов;

2.    Выбрать программы для создания игр;

3.    Изучить выбранную программу и создать в ней игру;

4.    Протестировать игру.

 


 

ГЛАВА 1. СРЕДА РАЗРАБОТКИ ДИЗАЙНА И ИНТЕРФЕЙСА ИГРЫ

 

§ 1.1. Adobe Illustration

 

Для создания графики в данном проекте использовалась программа “Adobe Illustrator”.

Adobe Illustrator — векторный графический редактор, разработанный и распространяемый компанией Adobe Systems.

Разработка первой версии программы под кодовым именем Picasso была начата в 1985 году. В январе 1987 года состоялся релиз первой версии векторного редактора Adobe Illustrator, написанного под Classic Mac OS для Apple Macintosh.

С помощью Adobe Illustrator дизайнеры создают красочные иллюстрации, иконки, паттерны, логотипы, различные макеты для печати и многое другое.

Формат Adobe Illustrator — .ai. Однако он поддерживает и другие. Самые популярные из них:

1.  .pdf,

2.  .eps,

3.  .wmf.

4.  .svg

Программа также позволяет внедрять в документ растровые изображения форматов .jpeg, .png, .gif и выполнять некоторые операции.

Плюсы программы:

возможность создания и совместной работы нескольких рабочих областей;

трассировка растровых изображений;

поддержка разных операционных систем;

огромнейшее количество инструментов для работы с изображением и с текстом;

возможность создания трехмерных спецэффектов;

Минусы:

стоимость продукта;

высокие системные требования;

Вся графика выполнена в векторном виде. Векторная графика — способ представления объектов и изображений (формат описания) в компьютерной графике, основанный на математическом описании элементарных геометрических объектов, обычно называемых примитивами, таких как: точки, линии, сплайны, кривые Безье, круги и окружности, многоугольники.

Преимущества векторного способа описания графики над растровой графикой:

Объем данных, занимаемый описательной частью, не зависит от реальной величины объекта, что позволяет, используя минимальное количество информации, описать сколько угодно большой объект файлом минимального размера. Например, описание окружности произвольного радиуса требует задания только 3 чисел, не считая атрибутов.

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

Параметры объектов хранятся и могут быть легко изменены. Также это означает что перемещение, масштабирование, вращение, заполнение и т. д. не ухудшат качества рисунка. Более того, обычно указывают размеры в аппаратно-независимых единицах (англ. device-independent unit), которые ведут к наилучшей возможной растеризации на растровых устройствах.

Упрощенное редактирование. Сделать праздничную версию логотипа, масштабировать под сверхнизкое разрешение — всё это проще сделать, если он векторный.

Некоторые методы изготовления изображений, связанные с вырезанием или сплошными цветами, требуют именно векторный файл и не допускают растра. В их числе: вышивка, изготовление штампов и вывесок, гравировка…

У также у данного вида графики есть свои недостатки:

Не каждая графическая сцена может быть легко изображена в векторном виде — для подобного оригинальному изображению может потребоваться описание очень большого количества примитивов с высокой сложностью, что негативно влияет на количество памяти, занимаемой изображением и на время необходимое для преобразования его в растровый формат для графического вывода (отрисовки или растеризации).

Перевод векторной графики в растровое изображение достаточно прост. Но обратный путь, как правило, сложен — этот процесс называют трассировкой растра, и зачастую требует значительных вычислительных мощностей и процессорного времени, и не всегда обеспечивает высокое качество полученного векторного рисунка.

Спецификации векторных форматов (и, соответственно, рендереры векторной графики) намного сложнее таковых для растровой графики.

 

§ 1.2. Unity3D

 

Перед выполнением работы необходимо было выбрать среду разработки. Главными критериями для выбора являлись возможность кроссплатформенной разработки и опыт работы непосредственно в среде. Кроссплатформенность важна в этой работе из-за необходимости сделать наиболее доступным сам проект. Наиболее соответствует этим критериям Unity3d.

Unity3d ­­– межплатформенная среда разработки, которая была разработана американской компанией Unity Technologies. Присутствует возможность создания игр на более чем 25 (двадцати пяти) различных платформах.

Была добавлена специальный модуль Unity Web Player, который позволял создавать приложения для запуска в браузерах. Также для этого использовали технологию WebGL. Однако изначально Unity Technologies шли за наиболее набирающем популярность Adobe Flash Player, но позже команда разработчиков решила отказаться от такого решения.

К функционалу Unity можно причислить удобный Drop&Drag интерфейс, который позволяет быстрее работать с объектами. Плагины KALI, который установлены в редактор, позволяет легко настраивать интерфейс, который состоит из множества окон. Также KALI позволяют проводить отладку игры непосредственно в редакторе.

К языкам программирования, которые используются для работы на этом игровом движке можно причислить С# и JavaScript, однако поддержка JavaScript (или UnityScript – модификация JavaScript для Unity) была прекращена с версии 2017.1. К ранее доступным языкам можно причислить Boo (диалект Python, поддержку убрали в 5-й версии).

Расчёты физики производит движок PhysX от NVIDIA. Графическим API же является DirectX (поддерживается и DX 11, и DX 12).

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

К обязательным компонентам объектов можно причислить метод Transform, который необходим для установки положения объекта на сцене (хранит его координаты, градусы поворота относительно определенной оси и размеры). Для объектов, у которых должна быть модель есть в наличии компонент Mesh Render, который позволяет непосредственно контролировать внешний вид модели. Для реализации столкновений (коллизии) в unity существует компонент collider, который разделяется на множества отдельных коллайдеров определённых форм.

К функционалу Unity можно отнести возможность поддерживать физику как твёрдых тел, так и ткани.

В редакторе присутствует возможность наследования объектов – дочерние объекты будут повторять все изменения позиции, поворота и масштаба родительского объекта.

Положительные стороны Unity3d:

кроссплатформенность – возможность разработки проектов для множества устройств (более чем 25 различных платформ);

визуальная среда разработки – способность среды передавать готовый результат проекта на стадии разработки;

постоянные обновления с 2005 года;

Отрицательная стороны Unity3d:

ограничение по работе визуального редактора с межкомпонентными схемами;

отсутствие поддержки ссылок на внешние библиотеки и, как следствие, необходимость разработчику самостоятельно настраивать библиотеки;

однако вышеперечисленные минусы платформы разработки не являются достаточно существенными для непосредственного влияния на выбор среды.

Это вызвано следующими причинами:

небольшое количество объектов на одной сцене;

отсутствие необходимости в подключении внешних библиотек;

Unity поддерживает работу на С# (С Sharp) - объектно-ориентированный язык программирования. С# относится к семейству языков с C-подобным синтаксисом, что можно увидеть из названия. Синтаксис этого языка наиболее близок к C++ и Java. Из особенностей языка можно выделить статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, переменные, свойства, обобщения типы и методы, итераторы, анонимные функции с поддержкой замыкании, LINQ, исключения, комментарии в формате XML.

C# перенял множество особенностей от C++, Delphi, Модула, Smalltalk и, в особенности, Java. Опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественного наследования классов (между тем допускается множественная реализация интерфейсов).

C# разрабатывался как язык прикладного уровня для CLR, следовательно возможности этого языка программирования зависят от возможностей CLR. Это особенно касается системы типов, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем (однако, эта закономерность была нарушена с выходом C# 3.0, представляющего собой расширения языка, не опирающиеся на расширения платформы .NET). CLR предоставляет С#‎, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#‎, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.

ГЛАВА 2. РАЗРАБОТКА КОМПЬЮТЕРНЫЙ ИГРЫ

 

§ 2.1. Графические элементы интерфейса программы

 

Создание всех графических элементов интерфейса программы разрабатывалась с помощью векторной графики.

Первым делом был сделан Задний фон (Background). Он состоит из 2 видов камней, 3 видов костей, черепа человека и черепа динозавра. Всего есть 6 вариаций заднего фона. Все они отличаются только расположений элементов и цветом (Рис. 2.1).

 

Рисунок 2.1 – Задний фон

 

Создание боковых граней шахты. Они состоят из 5 видов разных камней (Рис. 2.2).

 

Рисунок 2.2 – Боковые грани шахты

 

Макет шахты сделан из 2 текстур дерева, рельс, лампы и нижней трубы. Также есть две вариации — нормальный мост и сломанный (Рис. 2.3).

 

Рисунок 2.3 – Макеты шахты

 

Создание вагонетки. У каждой вагонетки есть по 3 паттерна — полная загрузка, средняя загрузка, малая загрузка. Это сделано для создания анимации разгрузки вагонетки (Рис. 2.4).

 

Рисунок 2.4 – 3 спрайта вагонеток

 

Все кнопки сделаны в одном стиле. Кнопки - Update Info Auto Repair. Было сделано 2 расцветки кнопки — красная и белая. Когда кнопка красная значит не хватает денег на улучшение (Рис. 2.5).

 

Рисунок 2.5 – Кнопки Update Info Auto Repair

 

Всплывающие окна. Окна — «Информация о шахте» и «Улучшить шахту» (Рис. 2.6).

 

Рисунок 2.6 – Окно Upgrade, Information

 

Создание ангар и доменный печки (2 вариации) для имитации взаимодействия с ресурсами (Рис. 2.7).

Рисунок 2.7 – Ангар, доменная печь

 

Создание склада ресурсов. В нём расположены иконки всех ресурсов, а также их переплавленная вариация (Рис. 2.8).

 

Рисунок 2.8 – Окна Склада

 

Для перехода в Склад и Ангар были нарисованы 2 иконки по нажатию на которые происходит переход на данные окна (Рис. 2.9).

 

Рисунок 2.9 – Иконки ангара и склада

 

§ 2.2. Код программы

 

Файл cartSystem.cs, отвечающий за вычисление продолжительности нахождения в шахте и количества ресурса, который получает игрок:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class cartSystem : MonoBehaviour

{

    /* Файл управления вагонеткой

     * Задачи:

     * 1) скорость движения вагонетки

     * 2) количество заработка

     * 3) контроль времени пребывания в шахте

    */

 

    public bool readyToWork = true; // уехала в шахту

    private bool working = false; // добывает (или едет в глубь)

    public bool isAuto = false;

 

    public float moovingSpeed = 5f; // скорость пережвижения до шахты (на экране)

 

    private float digSpeed = 1; // куб/секунда - скорость копания

    private float depth = 1; // куб - глубина шахы

    private float speed = 1; // куб/секунда - скорость движения по шахте

    public float volume = 1; // куб - объём вагонетки

    private float unloadSpeed = 1; // куб/секунда - скорость разгрузки

 

    [SerializeField] private const int maxDepth = 100; // максимальная глубина шахты, до которой она может быть разработана

 

    public enum cartDirection

    {

        stay,

        inMine,

        outMine

    } // возможные направления движения вагонетки

 

    public enum typeOfCartCondition

    {

        goIn,

        work,

        goOut,

        waitUloading,

        waiting

    } // состояние вагонетки (работает или куда едет), надо для табла состояния и разгрузки

 

    public enum typeOfResurse

    {

        coal,

        iron,

        gold,

        diamond

    } // вид ресурса (чтобы знать что начислять)

 

    public int cartIndex; // для улучшений и сохранений

    public int cartLevel; // уровень вагонетки

 

    // описание перечислений соответствующих видов подойдёт и сюда

    public typeOfCartCondition condition;

    public cartDirection direction;

    public typeOfResurse resurse;

 

    GameObject mineSystem; // главная система шахты

 

    private gameNode nodeScript;

 

    [SerializeField] private Sprite[] autoLoadSprites;

    [SerializeField] private Sprite[] loadSprite;

    [SerializeField] private GameObject[] wheels;

 

    private SpriteRenderer goSprite;

    private Transform cartTransform;

 

    private void Start()

    {

        cartLevel = 1;

        nodeScript = GameObject.Find("GameNode").GetComponent<gameNode>();

        mineSystem = transform.parent.gameObject; // собственно обращение к системе шахты

 

        cartTransform = GetComponent<Transform>();

        goSprite = GetComponent<SpriteRenderer>();

 

        Debug.Log("Position:" + mineSystem.transform.position.y);

        // вычисление номера шахты на экране

        cartIndex = (int)(1.0 + (3.0 - mineSystem.transform.position.y) / 3.7);

        Debug.Log($"Ярус для {cartIndex}: " + nodeScript.mineStage);

        Debug.Log($"Номер для {cartIndex}: " + cartIndex);

        // генерация вагоентки

        if(cartIndex != 1)

        {

            int chanse = Random.Range(0,101);

            Debug.Log(chanse);

            if(chanse < 50)

            {

                resurse = typeOfResurse.coal;

            }

            else if(chanse < 75)

            {

                resurse = typeOfResurse.iron;

            }

            else if(chanse < 90)

            {

                resurse = typeOfResurse.gold;

            }

            else

            {

                resurse = typeOfResurse.diamond;

            }

        }

        else

        {

           

            resurse = typeOfResurse.coal;

        }

        Debug.Log($"{cartIndex}:{resurse}");

        direction = cartDirection.stay; // добавить вычисление: какое состояние

        condition = typeOfCartCondition.waiting; // начальноее состояние

    }

 

    private void Update()

    {

        if(!readyToWork && direction == cartDirection.inMine && transform.position.x < 5) // если едет в шахту

        {

            transform.Translate(moovingSpeed * Time.deltaTime,0,0);

        }

        else if(!readyToWork && direction == cartDirection.inMine && transform.position.x >= 5 && !working) // если вышла за пределы экрана и не началась добыча

        {

            Debug.Log($"[Cart {cartIndex}]: Work is started"); // просто вывод в логи

            StartCoroutine(workingTimer());

        }

        else if(!readyToWork && direction == cartDirection.outMine && transform.position.x > -2) // когда добыча закончилась и едет назад

        {

            transform.Translate(-moovingSpeed * Time.deltaTime,0,0);

        }

        else if (!readyToWork && direction == cartDirection.outMine && transform.position.x <= -2 && working) // когда приехала

        {

            Debug.Log($"[Cart {cartIndex}]: Waiting unload");

            working = false;

            condition = typeOfCartCondition.waitUloading;

            direction = cartDirection.stay; // для работы колёс

 

            // если автоматика, то он начнёт разгрузку сам

            if(isAuto)

                StartCoroutine(unloadTimer());

        }

    }

 

    private void OnMouseDown() // непосредственно нажатие

    {

        Debug.Log($"[Cart {cartIndex}]: Cart is clicked");

        spriteClicked();

    }

 

    private void spriteClicked()

    {

        if (!isAuto)

        {

            if (readyToWork)

            {

                readyToWork = false; // собственно начало работы

                direction = cartDirection.inMine;

 

                // в соответствии с уровнем просчёт характеристик

                digSpeed = 1f + cartLevel * 0.21f;

                speed = 1f + cartLevel * 0.21f;

                unloadSpeed = unloadSpeed - unloadSpeed * cartLevel * 0.005f;

            }

            else if (condition == typeOfCartCondition.waitUloading)

            {

                StartCoroutine(unloadTimer());

            }

        }

    }

 

    public void changeAutoModel()

    {

        gameObject.GetComponent<SpriteRenderer>().sprite = autoLoadSprites[12];

    } // смена спрайта на автоматику (умную вагонетки) при её покупке

 

    IEnumerator workingTimer() // засекание времени работы в шахте

    {

        working = true;

        condition = typeOfCartCondition.goIn;

 

        Debug.Log($"[Cart {cartIndex}]: Going to mine point");

        yield return new WaitForSeconds(depth/speed); // едет к точке добычи

        condition = typeOfCartCondition.work;

 

        Debug.Log($"[Cart {cartIndex}]: Digging");

        yield return new WaitForSeconds(volume/digSpeed); // добывает

        if(depth < maxDepth) // нечего сказочные глубины рыть

            depth += volume;

        condition = typeOfCartCondition.goOut;

 

        Debug.Log($"[Cart {cartIndex}]: Going to stop point");

        yield return new WaitForSeconds(depth / speed); // возврат

        chageSkin((byte)(resurse + 1), 3);

        direction = cartDirection.outMine;

        condition = typeOfCartCondition.waiting;

    }

 

    IEnumerator unloadTimer() // засекание времени разгрузки

    {

        condition = typeOfCartCondition.waiting;

        Debug.Log($"[Cart {cartIndex}]: Unloading");

 

        yield return new WaitForSeconds(volume/unloadSpeed/3); // разгрузка (постепенная, со сменой спрайта)

        chageSkin((byte)(resurse + 1), 2);

        yield return new WaitForSeconds(volume / unloadSpeed/3);

        chageSkin((byte)(resurse + 1), 1);

        yield return new WaitForSeconds(volume / unloadSpeed / 3);

        chageSkin((byte)(resurse + 1), 0);

 

        nodeScript.howManyRes[(int)resurse]++;

 

        Debug.Log($"[Cart {cartIndex}]: End of unloading");

     

        if (isAuto)

        {

            readyToWork = false; // собственно автоматическое начало работы

            direction = cartDirection.inMine;

 

            // в соответствии с уровнем просчёт характеристик

            digSpeed = 1f + cartLevel * 0.21f;

            speed = 1f + cartLevel * 0.21f;

            unloadSpeed = unloadSpeed - unloadSpeed * cartLevel * 0.005f;

        }

        else

        {

            readyToWork = true;

        }

    }

 

    private void chageSkin(byte num, byte progress)

    {

        if(isAuto) // проверка на наличие автоматического режима

        {

            if(progress != 0)

            {

                goSprite.sprite = autoLoadSprites[num * progress - 1];

            }

            else

            {

                goSprite.sprite = autoLoadSprites[12];

            }

        }

        else

        {

            if (progress != 0)

            {

                goSprite.sprite = loadSprite[num * progress - 1];

            }

            else

            {

                goSprite.sprite = loadSprite[12];

            }    

        }

 

        if(progress == 3)

        {

            cartTransform.localPosition = new Vector3(cartTransform.position.x, 0.58f, cartTransform.localPosition.z);

            for(int i = 0; i < wheels.Length; i++)

                wheels[i].transform.localPosition = new Vector3(wheels[i].transform.localPosition.x, -2f, 0.1f);

        }

        else if(progress == 2)

        {

            cartTransform.localPosition = new Vector3(cartTransform.position.x, 0.52f, cartTransform.localPosition.z);

            for (int i = 0; i < wheels.Length; i++)

                wheels[i].transform.localPosition = new Vector3(wheels[i].transform.localPosition.x, -1.75f, 0.1f);

        }

        else if(progress == 1)

        {

            cartTransform.localPosition = new Vector3(cartTransform.position.x, 0.46f, cartTransform.localPosition.z);

            for (int i = 0; i < wheels.Length; i++)

                wheels[i].transform.localPosition = new Vector3(wheels[i].transform.localPosition.x, -1.5f, 0.1f);

        }

        else

        {

            cartTransform.localPosition = new Vector3(cartTransform.position.x, 0.4f, cartTransform.localPosition.z);

            for (int i = 0; i < wheels.Length; i++)

                wheels[i].transform.localPosition = new Vector3(wheels[i].transform.localPosition.x, -1.25f, 0.1f);

        }

    }

}

 

Файл gameNode.cs, отвечающий за связь между сценами магазина, шахт и мастерских:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class gameNode : MonoBehaviour

{

    /* Главный узел

     * Задачи:

     * 1) передача данных между разными сценами

     * 2) хранение информации

    */

 

    public ulong money;

    public int[] howManyRes = new int[] {0,0,0,0}; // 0 - уголь, 1 - железо, 2 - золото, 3 - алмаз

    public int[] readyRes = new int[] { 0, 0, 0, 0 };

    public int mineStage;

    public int minesOpened;

    public int hungarRoom;

 

    public byte lastMine;

    public byte lastHungar;

 

    public bool inHungar;

    public bool isWindowFull;

 

    [SerializeField] private Sprite[] backgroundSprites;

    [SerializeField] private GameObject bgObj;

    [SerializeField] private Sprite[] borderSprites;

    [SerializeField] private GameObject[] bordersObj = new GameObject[2];

    public int maxMines = 15;

    private SpriteRenderer bgSR;

 

 

    private void Start()

    {

        isWindowFull = false;

        mineStage = 1;

        minesOpened = 1;

        money = 100;

        bgSR = bgObj.GetComponent<SpriteRenderer>();

        lastMine = 1;

        lastHungar = 1;

        hungarRoom = 1;

        inHungar = false;

    }

 

    public void changeLvl(bool goDipper)

    {

        if (goDipper)

        {

            mineStage++;

            changeBG();

        }

        else

        {

            mineStage--;

            changeBG();

        }

    }

 

    private void changeBG()

    {

        if(mineStage <= 5)

        {

            bgSR.sprite = backgroundSprites[mineStage - 1];

        }

        else

        {

            bgSR.sprite = backgroundSprites[5];

        }

    }

}

 

Файл camMove.cs, отвечающий за перемещение камеры по сцене шахты:

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class camMove : MonoBehaviour

{

    [SerializeField] private GameObject cam;

    private gameNode gnScript;

 

    private void Start()

    {

        gnScript = GameObject.Find("GameNode").GetComponent<gameNode>();

    }

 

    private void OnMouseDown()

    {

        if(gameObject.name == "down" && (cam.transform.position.y > -(gnScript.maxMines / 3 - 1) * 12)) // проверка, чтобы игрок не спустился ниже необходимого

        {

            gnScript.changeLvl(true);

            cam.transform.Translate(0,-12f,0);

        }

        else if(gameObject.name == "up" && cam.transform.position.y < 0)

        {

            gnScript.changeLvl(false);

            cam.transform.Translate(0, 12f, 0);

        }

    }

}

 

§ 2.3 Анкетирование

 

            С целью подтверждения выполнения задач работы, нами было проведено анкетирование среди учащихся 10-ых классов нашей школы. В результате обработки собранной информации было выявлено, что 87,6% респондентов оказались удовлетворены игрой. В анкете последним вопросом была свободная графа для высказывания своего мнения об игре вне узконаправленных вопросов до этого, учащимися было положительно отмечена возможность проигрыша при отрицательном балансе. К возможностям выбора пути для развития и соответственно уровня угрозы можно причислить ремонт старого ствола шахты, который увеличит ежемесячную плату за обслуживание, и улучшение уже имеющихся в наличии стволов шахт, что не увеличивало затраты на их обслуживание. Однако респонденты отметили, что просто улучшать старый туннели не имеет смысла: игрок встречается с постоянно растущей ежемесячной платой за обслуживание всегда углубляющихся стволов шахт. Помимо этого, стремление игрока ремонтировать старые туннели поддерживается необходимостью получения новых видов ресурсов, которые имеют гораздо более высокую стоимость при обработке.

По заявлениям 43,4% опрошенных говорят о полезности возможности брать займы у банка под определённый процент с определённым сроком выплаты. Это может служить некой «подушкой безопасности», которая может снизить шанс банкротства, но и замедлить развитие добывающей компании игрока.

13,1% респондентов говорят о неудобности контроля уровня погружения в шахту из-за невозможности видеть глубину уровня или индекс каждого ствола шахты.

Каждый отзыв мы воспринимаем как «указатель» направления для совершенствования нашей работы, ведь, как говориться, популярный и конкурентноспособный продукт находится в стадии постоянного развития и доработки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАКЛЮЧЕНИЕ

 

Анализируя проделанную работу, можно сказать, что поставленные цель и задачи были выполнены полностью.

А именно:

1.    Разработан дизайн и элементы интерфейса игры;

2.    Изучили различные среды разработки для создания игры;

3.    Создание компьютерной игры на Unity;

4.    Расчет прибыли и улучшения материального капитала в игре;

5.    Протестирована среди одноклассников.

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

 Каждый отзыв воспринимается как «указатель» направления для совершенствования нашей работы, ведь, как говориться, популярный и конкурентоспособный продукт находится в стадии постоянного развития и доработки.

 


 

СПИСОК ИНФОРМАЦИОННЫХ ИСТОЧНИКОВ

 

1.    Национальный банк Республики Беларусь. Финансовые рынки [Электронный ресурс] - Режим доступа : https://www.nbrb.by/statistics/valuables/pricemetalsstones. Дата доступа: 30.10.2021.

2.    Adobe Illustrator [Электронный ресурс] - Режим доступа : https://www.adobe.com/ru/products/illustrator.html. - Дата доступа: 30.09.2021.

3.    Codecademy [Электронный ресурс] - Режим доступа : https://www.codecademy.com/learn/learn-c-sharp.

Дата доступа:10.10.2021.

4.    Microsoft Learning center [Электронный ресурс] - Режим доступа : https://dotnet.microsoft.com/learn/csharp. Дата доступа: 11.10.2021.

5.    Unity [Электронный ресурс] - Режим доступа : https://unity.com/ Дата доступа: 30.09.2021.

 

 

 


Комментарии

Популярные сообщения