• Как уменьшить размер в кб HTML баннера в google web designer?

    @MasterGod
    Я не работал в гугл веб лизинг, но если убрать все лишнее? Или использовать средства для оптимизации (минимизации кода). Кажется чем то таким баловася, чтоб не опечатываться не буду писать название, можно загуглить, весь код становится одной строкой..
    А если анимацию сделать через? css?
    https://webformyself.com/animaciya-v-css3/
    Через "infinite"?

    Как вариант уменьшить качество изображения. Или использовать svg (растровые изображения).
    Ответ написан
    Комментировать
  • Как сделать так, что бы лого и кнопки были на одной строке?

    @MasterGod
    Для решения проблемы можно использовать технологию, которая называется flexbox
    С помощью "обтекание" (float), мы добивается того что один элемент плавает вокруг другого. Но для этого у первого и второго надо указать с какой стороны они будут состыковаться. Пример

    float: left (применяем к логотипу)
    float: right ( применяем к "кнопке".)
    Это позволит 2 элемента разместить на одной строке
    https://hcdev.ru/css/justify-content/

    Второй способ решения проблемы, это дать поведение блоянвм элементам( у которых всегда есть отступы, начинаются с новой строки, после них новый элемент тоже идёт с новой строки) поведение строчного элемента ( строчный элемент занимает только то пространство которое ему необходимо) таким образом проблему можно решить как минимум двумя способами.
    https://hcdev.ru/css/grid-template-columns/

    Лого и ссылки.
    споллер

    Впринципе это смотрится нормально, только расположить ссылки либо слева и лого там же .
    Так делают. Либо
    Лого слева ссылки по центру (твой вариант) . Но, я бы на твоём месте изменил задний фон под лого. И протянул бы по его ширине как полосу до конца экрана , например задним фоном, того же цвета или ту что будет гармонировать. Можно шире, но тогда можно рассмотреть вариан когда контр картинни будет гармоничным. Тогда внешний вид будет лучше. Можно ссылки как то выделить фоном, или действительно их сделать кнопками? Добавить чтоб при наведении менялся цвет под ними.
    А ещё можно добавить анимацию, чтоб лого появлялся не сразу. Вариантов много..
    Но тут творец ты.
    Ответ написан
  • Проблема со входом в BIOS, что делать?

    @MasterGod
    Обратись к документации или поддержке производителя.

    Нажми f2 или del(delete) и держи. На каждом компе может быть по разному заход в биос, всё зависит от модели. Попробуй f10, f12 или esc. Если не сработало поробуй при ниличии спец клавиш с выше упомянутыми зажима ь спец клавишу , например : Fn + f2, fn+ del и т. Д.
    Ответ написан
    Комментировать
  • Можно ли написать квест игру в виде мессенджера для телефона?

    @MasterGod
    Да, можно написать квест игру в виде мессенджера для телефона с имитацией реальных сообщений. Для этого понадобится использовать программирование мобильных приложений и разработку интерфейса.

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

    В целях саморазвития, вам только нужно продумать диалоги и логические связки и вы сами сможете её создать, например на unreal engine , к тому же там есть функция блю принт, позволяет без кода в виде визуальных блоков создавать логику игры!

    Или обратить внимание на другие движки например :

    Twine

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



    Ren'Py:
    Ren'Py - это движок для создания визуальных новелл, который также может быть использован для создания квест-игр в виде мессенджера. Он предоставляет инструменты для создания диалогов, сцен и управления персонажами.


    Unity:
    Unity - это мощный многоплатформенный движок для создания игр. С его помощью Вы можете создать квест-игру в виде мессенджера, используя текстовые элементы, анимацию и даже возможности многопользовательской игры.


    Программисты обычно берут не дёшево))
    Ответ написан
    Комментировать
  • Как сделать игру на python со своей сценой?

    @MasterGod
    Обратился к знакомому, он проворчал, но послал код. Хотя код писать я его не просил. Только переозвувил твой вопрос, как бы от себя и всё. По коду не спрашивай я ни чем не помогу, а спасибо скажешь Валере зверкову, ну и мне кстате можешь тоже, ведь я спрашивал)) меня Андрей зовут..

    После того как он прислал код. Я попросил его записать мне некоторые названия, так как на слух я не уверен был что вообще правильно напишу и вообще в них не шарю. И вот что получается используется библиотеки :
    Pygame и PyOpenGL для создания окна и отображения 3D сцены с использованием obj файла
    import pygame
    from pygame.locals import *
    from OpenGL.GL import *
    from OpenGL.GLUT import *
    from OpenGL.GLU import *
    
    def init():
        pygame.init()
        display = (800, 600)
        pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
    
        gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)
        glTranslatef(0.0, 0.0, -5)
    
    def load_obj(filename):
        vertices = []
        faces = []
        with open(filename, 'r') as file:
            for line in file:
                if line.startswith('v '):
                    vertex = line.split()[1:]
                    vertices.append(list(map(float, vertex)))
                elif line.startswith('f '):
                    face = line.split()[1:]
                    faces.append(list(map(int, face))))
        
        return vertices, faces
    
    def draw_obj(vertices, faces):
        glBegin(GL_TRIANGLES)
        for face in faces:
            for vertex in face:
                glVertex3fv(vertices[vertex - 1])
        glEnd()
    
    def main():
        init()
    
        vertices, faces = load_obj('your_obj_file.obj')
    
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()
    
            glRotatef(1, 3, 1, 1)
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
            draw_obj(vertices, faces)
            pygame.display.flip()
            pygame.time.wait(10)
    
    main()

    Сказал что тут надо заменить `'your_obj_file.obj'` на путь к obj файлу. Этот код создаст "окно," загрузит obj файл, и будет вращать сцену с помощью glRotatef, что это такое я не спрашивал, даже не думал что он код вообще будет писать, тебе сделали, дальше сам думай.

    Но вообще питон тяжеловесный, хотя он год или два назад говорил, прямо до усравки что вроде как питон стал более оптимизированный. Прямо чуть ли не такой же как си. Но.. Долго, долго мучался, с созданием игры и плюнул. Потому что убедился что питон всеравно тяжеловесный.
    Ответ написан
  • 2D игра на JS без сервера - какая есть библиотка?

    @MasterGod
    Звгуглил и оказалось что есть несколько библиотек на JavaScript, которые позволяют создавать 2D игры без необходимости наличия сервера для загрузки медиафайлов.

    Одна из таких библиотек - Pixi.js
    Pixi. Js
    предоставляет мощный инструментарий для создания интерактивных 2D игр и приложений. Она позволяет работать с текстурами, спрайтами, анимациями и другими элементами игрового мира. Вы можете встроить все необходимые изображения и звуки в приложение, например, в виде base64-данных.


    Еще одну библиотеку которую нашёл для создания офлайн-приложений или мобильных приложений без сервера, - Phaser CE (Community Edition).
    Phaser CE

    Phaser CE (Community Edition) - Это фреймворк для создания HTML5 игр, который имеет множество возможностей для работы с графикой, анимацией, физикой и многим другим. Вы также можете встроить все ресурсы в приложение, используя base64 или другие подходящие


    Phaser.js

    Phaser.js - это популярный фреймворк для создания HTML5 игр. Он предоставляет мощные инструменты для создания 2D игр и поддерживает загрузку ресурсов в виде base64 или встроенных данных


    CreateJS
    CreateJS - это набор библиотек на JavaScript, включающий EaselJS (для создания 2D графики), TweenJS (для анимации) и другие инструменты. Он также поддерживает загрузку ресурсов в виде base64 или встроенных данных


    Cocos2d-js
    Cocos2d-js - это фреймворк для создания кросс-платформенных игр на JavaScript. Он предоставляет мощные инструменты для создания 2D и 3D игр и поддерживает встроенные ресурсы.


    Impact.js

    Impact.js - это коммерческий HTML5 игровой движок, который позволяет создавать игры без сервера. Он предоставляет инструменты для создания 2D игр и поддерживает встроенные ресурсы.


    К тому же советую обратить внимание на движки которые используют javascript

    Например : Unity или rpg maker, кроме того unreal engine тоже вроде поддерживает javascript, для сценариев, что такое читал когда то, но всё равно рекомендуют использовать c++ так как он более быстрый.
    Ответ написан
    Комментировать
  • Почему в играх двигают мир вокруг игрока, а не наоборот и где можно почитать про то самое наоборот?

    @MasterGod
    В играх можно встретить, когда используется техника "слежения за игроком", где мир движется вокруг игрока, чтобы создать эффект, будто камера следит за ним. Это делается для удобства игрока и для создания более динамичного и интересного геймплея.

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

    Вот как это можно сделать:

    1. Используй ограничения перемещения:
    Установите границы, в пределах которых может перемещаться игрок, и проверяйте его позицию, чтобы не допустить выхода за пределы видимой области.

    2. Используй масштабирование камеры:
    Изменяйте масштаб камеры, чтобы игрок всегда оставался в видимой области. Например, при удалении от центра камеры, увеличивайте масштаб, чтобы игрок всегда был виден.

    3. Используй смещение камеры:
    Перемещайте камеру вместе с игроком, чтобы он всегда оставался в центре видимой области.

    4. Используй плавное следование:
    Добавьте эффект плавного следования за игроком, чтобы камера плавно перемещалась и следовала за ним.

    Попробуй игровой движок анрил он идиелен для шутеров, хотя есть те кто делает хорошие шутеры, я видел и играл долго на Unity в контракт варз вроде, контра сити была, батла. Что то ещё, так не вспомню. Кто то любит cry engine . Тоже делают из него шутеры. Знакомый делал шутер на coppercub . При чем 6 бесплатен для определённого числа сцен. Unity можно бесплатно использовать, даже продавая игры, ечли доход в год меньше 100 тыс баксов.
    С unreal ом другая ситуация нужно отваливать процент с каждой продажи. Но в unreal engine крутая вещь для новичков блю принт это визуальное программирование без написания кода, с помощью блоков. Но ограничена по возможностям. Game guru можно быстро склепать шутер и FPS Creator но там проблемы с оптимизацией, но дешовые модели за 100 баксов возьмёшь 10к моделей на любой цвет и вкус
    Ответ написан
    Комментировать
  • Js игра. игрок уходит от камеры, что делать?

    @MasterGod
    Вот несколько идей :

    1. Ограничь движение персонажа в пределах карты: добавить проверку на позицию персонажа и ограничить его движение, чтобы он не мог выйти за пределы карты. Можно использовать коллайдеры или проверку координат, чтобы ограничить перемещение персонажа.

    2. Используй алгоритм следования за персонажем:
    Вместо того, чтобы просто двигать камеру в противоположном направлении относительно игрока, можно использовать алгоритм следования за персонажем. Это означает, что камера будет двигаться только тогда, когда персонаж движется, и будет следовать за ним с определенной задержкой. Это позволит камере более плавно следовать за персонажем и избежать отставания.

    3. Используй ограничительные прямоугольники:
    Можно создать ограничительные прямоугольники вокруг карты и использовать их для ограничения движения камеры. Когда персонаж достигает границы карты, камера будет останавливаться и не будет двигаться дальше.

    4. Используй плавное перемещение камеры: Вместо резкого перемещения камеры можно использовать плавное перемещение с помощью интерполяции. Это позволит камере плавно следовать за персонажем и избежать рывков.

    5. Используй дополнительные камеры:
    Можно добавить несколько дополнительных камер, которые будут следовать за персонажем с разных ракурсов. Это позволит создать более широкий обзор и избежать проблемы с отставанием камеры.
    Ответ написан
    Комментировать
  • Привет, почему у меня выкидывает ошибку?

    @MasterGod
    Ошибка возникает из-за того, что в классе Movement уже определен метод Awake с такими же параметрами. В C# нельзя определить два метода с одинаковыми именами и одинаковыми параметрами.

    Чтобы исправить ошибку, можно удалить метод Awake в классе Movement или изменить его имя или параметры, чтобы они отличались от другого метода Awake в классе.
    Ответ написан
    Комментировать
  • Как сделать что бы со временем восстанавливались HP?

    @MasterGod
    .

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

    Логика будет такая :
    1 Создаём переменную, ставим значение на 0.
    2 далее увеличиваем значение переменной
    3 когда истекает 10 минут добавляем 10 хп к жизни персонажа и сбрасывает значение переменной на 0.
    4. Если персонаж начинает бой, значение переменной сбрасывается на 0.

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


    #include <iostream>
    #include <chrono>
    #include <thread>
    
    using namespace std;
    
    int main() {
        int maxHP = 100; // максимальное количество HP
        int currentHP = maxHP; // текущее количество HP
        int hpPerInterval = 10; // количество HP, восстанавливаемых за интервал
        int intervalInSeconds = 600; // интервал в секундах (10 минут = 600 секунд)
        
        while (true) {
            auto startTime = chrono::steady_clock::now(); // запоминаем время начала интервала
            
            // сюда вставь  код для обработки событий и действий персонажа
            
            auto endTime = chrono::steady_clock::now(); // запоминаем время окончания интервала
            auto elapsedTime = chrono::duration_cast<chrono::seconds>(endTime - startTime).count(); // вычисляем прошедшее время в секундах
            
            if (elapsedTime >= intervalInSeconds) { // если прошло достаточно времени
                currentHP += hpPerInterval; // увеличиваем текущее количество HP
                if (currentHP > maxHP) {
                    currentHP = maxHP; // ограничиваем текущее количество HP максимальным значением
                }
                
                // сюда вставь код для обновления интерфейса и отображения текущего количества HP
                
                startTime = endTime; // обновляем время начала интервала
            }
            
            // сюда вставь  код для обработки других событий и действий персонажа
            
            this_thread::sleep_for(chrono::seconds(1)); // пауза 1 секунда между итерациями цикла
        }
        
        return 0;
    }


    В начале кода объявляем необходимые переменные: `maxHP` (максимальное количество HP), `currentHP` (текущее количество HP), `hpPerInterval` (количество HP, восстанавливаемых за интервал) и `intervalInSeconds` (интервал в секундах, через который происходит восстановление HP).

    Затем входим в бесконечный цикл `while (true)`, который будет выполняться постоянно.

    Затем мы входим в бесконечный цикл `while (true)`, который будет выполняться постоянно.

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

    Затем мы запоминаем время начала интервала с помощью `auto startTime = chrono::steady_clock::now();`.
    После этого запоминаем время окончания интервала с помощью `auto endTime = chrono::steady_clock::now();`.

    Потом вычисляем прошедшее время в секундах с помощью `auto elapsedTime = chrono::duration_cast(endTime - startTime).count();`.

    После проверяем, прошло ли достаточно времени для восстановления HP с помощью условия `if (elapsedTime >= intervalInSeconds)`.

    Если прошло достаточно времени, мы увеличиваем текущее количество HP на `hpPerInterval` и ограничиваем его максимальным значением `maxHP`.

    После этого обновляем время начала интервала с помощью `startTime = endTime;`.


    В конце каждой итерации цикла делаем паузу на 1 секунду с помощью `this_thread::sleep_for(chrono::seconds(1))`, чтобы не перегруж


    решил дополнить c#, пример :

    using System;
    using System.Timers;
    
    public class HPSystem
    {
        private int hp;
        private Timer timer;
    
        public HPSystem()
        {
            hp = 100; // начальное значение HP
            timer = new Timer(10 * 60 * 1000); // 10 минут в миллисекундах
            timer.Elapsed += OnTimerElapsed;
        }
    
        public void Start()
        {
            timer.Start();
        }
    
        public void Stop()
        {
            timer.Stop();
        }
    
        private void OnTimerElapsed(object sender, ElapsedEventArgs e)
        {
            hp += 10; // увеличение HP на 10
            Console.WriteLine("HP восстановлено: " + hp);
        }
    }
    
    public class Program
    {
        public static void Main(string[] args)
        {
            HPSystem hpSystem = new HPSystem();
            hpSystem.Start();
    
            // Ваш код игрового цикла
            // ...
    
            hpSystem.Stop();
        }
    }


    В этом примере создается класс `HPSystem`, который содержит переменную `hp` для отслеживания текущего значения HP и таймер `timer`, который срабатывает каждые 10 минут. В методе `OnTimerElapsed` происходит восстановление HP на 10 единиц. В основной программе создается экземпляр `HPSystem`, запускается таймер с помощью метода `Start()`, выполняется игровой цикл, а затем таймер останавливается с помощью метода `Stop()`.

    javascript примерно так
    javascript
    let hp = 100; // начальное значение HP
    let isFighting = false; // флаг, указывающий, идет ли бой
    
    function restoreHP() {
      if (!isFighting) {
        hp += 10; // восстановление HP
        console.log("HP восстановлено: " + hp);
      }
    }
    
    // запускаем восстановление HP каждые 10 минут (600000 миллисекунд)
    setInterval(restoreHP, 600000);
    
    // пример использования
    // персонаж начинает бой, устанавливаем флаг isFighting в true
    isFighting = true;
    
    // персонаж закончил бой, устанавливаем флаг isFighting в false
    isFighting = false;

    В этом примере функция `restoreHP` будет вызываться каждые 10 минут (600000 миллисекунд), если флаг `isFighting` равен `false`. Когда персонаж начинает бой, флаг устанавливается в `true`, и восстановление HP прекращается. Когда бой заканчивается, флаг снова устанавливается в `false`, и восстановление HP возобновляется.
    Ответ написан
    Комментировать
  • На каком игровом движке создают подобного рода игры?

    @MasterGod
    Не открывается ссылка, но в мобильных играх, таких как idle или afk арены, часто используются рразные игровые движки, например :Unity, Unreal Engine, Cocos2d-x, Phaser и Godot.

    Что касается литературы, сайтов и видео по разработке подобного рода мобильных игр, вот несколько ресурсов, которые могут быть полезны:

    1. Unity Learn - официальный сайт Unity с обучающими материалами и документацией: https://learn.unity.com/

    2. Unreal Engine Documentation - официальная документация по Unreal Engine: https://docs.unrealengine.com/

    3. Cocos2d-x Documentation - официальная документация по Cocos2d-x: www.cocos2d-x.org/documentation

    4. Phaser Tutorials - серия уроков по Phaser: https://phaser.io/learn

    5. Godot Documentation - официальная документация по Godot: https://docs.godotengine.org/

    Кроме того, можно найти множество видеоуроков на YouTube
    Ответ написан
    Комментировать
  • Работает только одно освещение на объекте, что делать?

    @MasterGod
    Я не работал в Godot, но могу дать общие советы.:
    1. И на сколько я слышал, в Godot выставляется ограничения на количество сюосвещения которые работают на сцене. Может быть установлено такое значение, что ты достиг предела=)

    2. Другой вариант добавить ещё источник света.

    3. Следуюющий вариант проверь настройки освещения. Убедись что объект освещен.
    Что материал реагирует на присутствие света! И может быть такое что материал не реагирует на несколько источников света.
    Ответ написан
    Комментировать
  • Какую литературу следует почитать, чтобы систематизировать все практические знания?

    @MasterGod
    Смотри :

    1 Книга "Структуры данных и алгоритмы в Java" автора Роберта Лафоре - это отличный источник для изучения основных структур данных и алгоритмов, которые являются фундаментальными знаниями в программировании.

    2. Книга "Операционные системы: проектирование и реализация" авторов Эндрю Таненбаума и Альберта Вудхалла - она поможет Вам понять основы операционных систем и их взаимодействие с аппаратным обеспечением.

    3. Книга "Компьютерные сети. Принципы, технологии, протоколы" авторов Джеймса Куровски, Кита Росса и Джеймса Ф. Курша - она предоставит Вам основные знания о компьютерных сетях и протоколах.

    4. Курс "Введение в архитектуру компьютера" на платформе Coursera - этот курс поможет Вам понять основы архитектуры компьютера и взаимодействие между аппаратным и программным обеспечением.

    5. Курс "Алгоритмы и структуры данных" на платформе Coursera - это обширный курс, который покрывает различные алгоритмы и структуры данных, идеально подходит для систематизации знаний в этой области.

    6. Книга "Design Patterns: Elements of Reusable Object-Oriented Software" авторов Эриха Гамма, Ричарда Хелма, Ральфа Джонсона и Джона Влиссидеса - это классическое руководство по шаблонам проектирования, которое поможет Вам развить навыки проектирования гибких и поддерживаемых систем.


    По играм :
    тематике:

    1. "Game Programming Patterns" автора Роберта Найстрома - данная книга охватывает различные шаблоны и подходы, используемые при разработке игр.

    2. "Unity in Action: Multiplatform Game Development in C#" автора Джошуа Стрейнджа - данная книга рассматривает разработку игр с использованием популярного игрового движка Unity и языка программирования C#.

    3. "Game Engine Architecture" автора Джейсона Грегори - данная книга предоставляет обширный обзор архитектуры игровых движков и основных принципов их разработки.

    4. "Level Up! The Guide to Great Video Game Design" автора Скотта Роджерса - данная книга фокусируется на проектировании уровней в играх и предоставляет практические советы и примеры.

    5. "The Art of Game Design: A Book of Lenses" автора Джесса Шела - данная книга обращается к аспектам дизайна игр и предлагает различные "линзы" для анализа и улучшения игрового опыта.

    Кросе того есть много онлайн ресурсов и бесплатных видео уроков по этой тематике.
    Видео уроки надо искать на ютуб., там их очень много и всё в открытом доступе, бесплатно Только определиться с тем что тебе нужно.
    Ответ написан
    Комментировать
  • Как работает «И», «ИЛИ» --> с учётом коллизии объекта и расстоянии объектов друг от друга?

    @MasterGod
    В первом примере, где проверяется коллизия объектов, используется операция И(&&). Здесь мы проверяем, что все условия для коллизии выполняются одновременно. Если хотя бы одно из условий не выполняется, то коллизии нет.

    Во 2м примере, где проверяется коллизия между объектом и мышкой, используется операция ИЛИ(||). Здесь мы проверяем, что хотя бы одно из условий выполняется. Если хотя бы одно из условий выполняется, то есть коллизия.

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

    Операторы "И" (&&) и "ИЛИ" (||) являются логическими операторами, которые позволяют комбинировать условия в программировании когда используешь эти операторы для проверки коллизий объектов и расстояния между ними, они позволяют создать сложные условия для определения, происходит ли коллизия или нет.

    Для проверки коллизии объектов с учетом их координат и размеров, ты модешь использовать операторы "И" (&&) для комбинирования условий проверки границ объектов. Например, в в твоём коде функции IsCollision():

    BOOL IsCollision(OBJECT* FIRST, OBJECT* LAST)
    {
      return (
        ( (FIRST->x + FIRST->width) > LAST->x ) &&
        ( FIRST->x < (LAST->x + LAST->width) ) &&
        ( (FIRST->y + FIRST->height) > LAST->y ) &&
        ( FIRST->y < (LAST->y + LAST->height) )
      );
    }


    Тут условия проверяют, пересекаются ли границы объектов FIRST и LAST по осям X и Y. Если все условия выполняются, функция возвращает true и это означает, что произошла коллизия.

    Что касается второго примера кода, где проверяешь коллизию между мышью и игроком с использованием оператора "ИЛИ" (||), это означает, что коллизия будет считаться истинной, если хотя бы одно из условий выполняется. В твоём случае, если мышь находится вне прямоугольной области, определенной координатами игрока и дополнительным расстоянием 200, то условие будет считаться истинным и будет выполняться код внутри блока if.
    Ответ написан
    Комментировать
  • Как назначить текст элементом в HTML5 CANVAS?

    @MasterGod
    Модно назначить текст элементом в HTML5 Canvas, используя JavaScript. Один из способов сделать это - это использовать событие `click` на canvas + обработчик события для выполнения нужных действий при клике.

    Вот пример кода:
    javascript
    // Получаем ссылку на canvas
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    
    // Рисуем текст на canvas
    function drawText() {
      ctx.font = "24px Arial";
      ctx.fillText("Пройти тест", canvas.width / 6, canvas.height / 1.5);
    }
    
    // Обработчик события клика
    function handleClick(event) {
      var x = event.clientX - canvas.offsetLeft;
      var y = event.clientY - canvas.offsetTop;
    
      // Проверяем, попал ли клик в область текста
      if (x > canvas.width / 6 && x < canvas.width / 6 + ctx.measureText("Пройти тест").width &&
          y > canvas.height / 1.5 - 24 && y < canvas.height / 1.5) {
        // Выполняем нужные действия при клике на текст
        // Например, переходим на другую страницу или вызываем функцию для начала теста
        startTest();
      }
    }
    
    // Назначаем обработчик события клика на canvas
    canvas.addEventListener("click", handleClick);
    // Вызываем функцию для отрисовки текста
    drawText();


    В этом примере, текст "Пройти тест" рисуется на canvas с помощью метода `fillText()`. Затем мы назначаем обработчик события `click` на canvas, который проверяет, попал ли клик в область текста, и выполняет нужные действия при клике.
    Ответ написан
  • Как убрать предупреждение от Visual studio?

    @MasterGod
    Предупреждение C6386 указывает на потенциальное переполнение буфера при записи в массив `bullets_t`. Это может произойти, если `bulletsNumber` равно нулю или отрицательному числу.

    Чтобы избежать этого предупреждения следует добавить проверку перед созданием массива `bullets_t`. Если оказывается равным нулю или отрицательным то необходимо изменять это значение на другое,


    void shoot() {
    if (player.x + 2 > mWidth) return;

    Bullet* bullets_t;

    if (bulletsNumber <= 0) {
    bullets_t = new Bullet[1];
    bulletsNumber = 1;
    } else {
    bullets_t = new Bullet[bulletsNumber + 1];
    for (int i = 0; i < bulletsNumber; i++) {
    bullets_t[i] = bullets[i];
    }
    bulletsNumber++;
    }

    bullets_t[bulletsNumber - 1] = { player.x + 2, player.y };

    delete[] bullets;
    bullets = bullets_t;
    }


    struct Bullet {
        float x = 0;
        float y = 0;
    };
    
    void shoot() {
        if (player.x + 2 > mWidth) return;
    
        Bullet* bullets_t = new Bullet[bulletsNumber + 1];
    
        for (int i = 0; i < bulletsNumber; i++) {
            bullets_t[i] = bullets[i];
        }
    
        bullets_t[bulletsNumber] = { player.x + 2, player.y };
    
        delete[] bullets;
    
        bullets = bullets_t;
        bulletsNumber++; 
    }

    Теперь предупреждение должно исчезнуть
    Ответ написан
    Комментировать
  • Как писать на c++ в годот?

    @MasterGod

    писать на C++ в Godot:

    1. Установите необходимые инструменты: Убедитесь, что у Вас установлены C++ компилятор и среда разработки, такие как Visual Studio или GCC, в зависимости от Вашей операционной системы.

    2. Скомпилируйте движок Godot: Перейдите на официальный сайт Godot и загрузите исходный код движка. Затем следуйте инструкциям по компиляции для Вашей операционной системы. В результате Вы получите исполняемый файл движка, который Вы сможете использовать для разработки.

    3. Создайте новый проект: Откройте Godot и создайте новый проект. Выберите пустой шаблон или любой другой шаблон, который Вам нравится.

    4. Создайте новый скрипт: В окне редактора Godot выберите "Скрипт" и выберите C++ как язык скрипта. Затем выберите место, где Вы хотите сохранить скрипт.

    5. Начните писать код: Откройте созданный скрипт в выбранной Вами среде разработки и начните писать код на C++. Godot предоставляет API для работы с C++, и Вы можете использовать функции и классы из этого API для создания игровой логики.

    6. Скомпилируйте и запустите проект: После написания кода скомпилируйте проект с помощью выбранной Вами среды разработки. Затем запустите полученный исполняемый файл и проверьте, что Ваш код работает внутри Godot.

    Обратите внимание, что использование C++ в Godot может быть сложнее, чем использование Gdscript или C#, поэтому рекомендуется ознакомиться с документацией и руководствами по C++ в Godot, чтобы получить более подробную информацию о возможностях и ограничениях.
    Ответ написан
    Комментировать
  • С чего начать учить Kotlin?

    @MasterGod
    Если мало времени проводишь за компом, но есть возможность учиться с телефона в дороге, то sololearn будет простым и удобным началом. Это приложение работает на мобильных устройствах, материал приподносится легко и просто, есть проверка синтаксиса написанного кода.

    А так и дальше.. Есть огромное количество как текстовой информации. Так и информации видео, например на ютуб.

    Java во много раз сложнее, kotlin в разы проще. Java по сложности ближе к сишным языкам. Если не знаком с программированием, не думаю что это хороший вариант, начать изучение с него будет тяжелее. Ты можешь сравнить разницу в сложности языков. В том же sololearn попробовав пройти базовую главу на kotlin и на java. Если первый не вызывает вообще ни каких трудностей, то второй стразу будет ощущать я в разы тяжелее.. Хотя у них курсы обновляют.. Я старый курс прошёл лет ещё 5 назад, а котлин не так давно увидел.. Моет быть опыт, но всё равно многие говорят что джава и сишные языки сложны для изучения. Мне вообще понравился там ruby, но дальше курса того что там был, что то не полез.
    Про сообщество java оно всегда вроде было велико. Даже при появлении языка впервые, очень быстро разраслосья и не сбавляло популярности, на сколько я помню.
    Но я не помню когда изучал эту информацию может быть 5 - 10 лет назад. Может быть сейчас уже что то поменялось, хотя я сильно в этом сомневаюсь. Фонаты обычно остаются приверденцами того что выбрали)
    Ответ написан
    Комментировать
  • Какой выбрать движок для карточной онлайн игры?

    @MasterGod
    Unity
    -
    это мощный многоплатформенный движок, который поддерживает разработку игр для различных платформ, включая веб. Его можно использовать для создания кки, в стиме видел игры с его участием и с анрил. Используется язык программирования C# и javascript.

    Unreal Engine
    - тоже крутой движок, его тоже можно использовать для создания карточных игр. Он также поддерживает разработку игр для разных платформ, включая веб. Работает на плюсах но можно использовать и си шарп с помощью плагина UnrealCLR , плюс есть крутая фишка блю принт, для новичков в программировании. Так называемое визуальное программирование с помощью блоков. Но его функции ограничены. И для добавления своих фишек не обойтись без программирования.

    Phaser:
    - это фреймворк для разработки HTML5 игр. Он предоставляет инструменты и функциональность для создания веб-игр, включая карточные игры. Phaser использует язык программирования JavaScript.

    Cocos2d:
    -
    это фреймворк для разработки мобильных и веб-игр. Он поддерживает различные языки программирования, включая C++, JavaScript и Lua.

    HTML5 и JavaScript: позволит вам создавать игру, которая будет работать в веб-браузере.

    Выбор зависит от ваших предпочтений и опыта в программировании, а так же требований вашей игры.
    Ответ написан
    Комментировать
  • Есть ли ещё движки, кроме Unity, код в которых можно написать на C#?

    @MasterGod
    1. Unreal Engine: поддерживает использовать C# с помощью плагина UnrealCLR.
    Кроме того у него есть визуальное программирование блюпринт. А так же C++

    2. Godot Engine: Godot Engine - бесплатный и открытый игровой движок, который поддерживает программирование на C# с помощью модуля Mono.

    3. CryEngine: CryEngine - еще один мощный движок для создания игр, который поддерживает программирование наC# с помощью использования плaгина, плагин называется : CrySharp.

    4. Xenko: Xenko - игровой движок с открытым исходным кодом, который поддерживает программирование на C#.
    Ответ написан
    2 комментария