Game Maker - создание игр | HellRoom Games
Ноябрь 18, 2025, 03:54:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Постоянные-Переменные  (Прочитано 1929 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Хаёри
Пользователь
***

Репутация: 1
Offline Offline

Пол: Мужской
API: Game Maker 8.0 Pro
Сообщений: 51


Я оптимист!


« : Февраль 28, 2021, 16:55:52 »

Друзья подскажите, как упростить код. Есть куча переменных global.xMap_1, где последнее число это номер карты.

global.xMap_1 = 0
global.xMap_2 = 0
global.xMap_3 = 0
.....
.....

Из-за кучи проверок для каждой карты, код получается гигантский.
Его можно упростить, если я заменю последнее число на переменную (допустим global.Zamena).
Но как правильно написать такой код?

НЕ РАБОЧИЙ ПРИМЕР:
global.xMap_+'(global.Zamena)' = 0
« Последнее редактирование: Февраль 28, 2021, 17:08:58 от Хаёри » Записан

Самое сложное в создании игры, придумать подходящие ей название.
Leosa002
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio Pro
Деятельность: Программист, Художник
Сообщений: 4


« Ответ #1 : Февраль 28, 2021, 17:10:34 »

Не совсем понял... Можешь по-подробнее объяснить ситуацию. Зачем "кучам" переменным ещё и глобальным собирать одно и то же число?
Записан
Хаёри
Пользователь
***

Репутация: 1
Offline Offline

Пол: Мужской
API: Game Maker 8.0 Pro
Сообщений: 51


Я оптимист!


« Ответ #2 : Февраль 28, 2021, 17:24:59 »

Не совсем понял... Можешь по-подробнее объяснить ситуацию. Зачем "кучам" переменным ещё и глобальным собирать одно и то же число?

global.xMap  -  этих переменных столько сколько я сделаю карт в игре.
Пример: global.xMap_45 = 2  -  означает что карта №45 пройдена на 2 звезды.
У меня есть очень длинный код который прежде чем присвоить 2 звезды должен проверить к какой карте его присвоить.
Есть другая переменная, которая знает номер карты, который игрок проходит. Эта переменная (допустим global.Zamena).
И что бы мне не писать проверку для каждой карты вручную, мне нужно каким то образом заменить global.xMap_45 на global.xMap_(global.Zamena)=2 без числа 45.
Записан

Самое сложное в создании игры, придумать подходящие ей название.
JuBLeeZ
Участник
****

Репутация: 39
Offline Offline

Награды:
За постоянность! [10 дней на форуме]
API: GameMaker 8.1 Standard
Сообщений: 132


« Ответ #3 : Февраль 28, 2021, 17:39:18 »

создай скрипт, где аргументами будут номер карты и кол-во звезд. в скрипте ветка условий: если аргумент "карта №45", то global.xMap_45 = кол-во звезд
Записан

Leosa002
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio Pro
Деятельность: Программист, Художник
Сообщений: 4


« Ответ #4 : Февраль 28, 2021, 18:37:22 »

Вариант о котором ты думаешь очень странный. Во-первых ты создаешь куча мусора(переменных) а во вторых потеряешь способ написания более адекватного кода...
Чтобы реализовать то что ты хочешь нужно подумать...
Как я считаю.. Можно создать переменную идентификатор которая будет хранить специальный номер уровня. И потом просто через неё проверять на каком уровне мы находимся статистику(звездочки)
Типа global.levelnumber будет проверкой. Когда мы проходим уровень то global.levelnumber будет как блок который будет проверять номер уровня. Допустим мы проходим уровень и в начале уровня global.levelnumber запишет номер уровня(например в событии "creation code" в комнате).  Потом можно юзать массив. Создать массив где будут наши звездочки. И сколько будет уровней столько и массивов.
Например, у нас будет 20 уровней всего. Создадим глобальный массив global.stars[] и дадим им значение 0.
Код:
в Create:
{
var i;
for(i = 0; i < 20; i += 1) {
 global.stars[i] = 0;
}
}
и тем самым мы создадим 20 значений через цикл в global.stars[] (global.stars[0] = 0, global.stars[1] = 0 , global.stars[2] = 0 и тд...) И потом просто создать проверки. Когда прошёл уровень давать значения. Именно когда прошёл уровень.
Нуу.. Надеюсь ты уловил мою суть..)
Записан
Хаёри
Пользователь
***

Репутация: 1
Offline Offline

Пол: Мужской
API: Game Maker 8.0 Pro
Сообщений: 51


Я оптимист!


« Ответ #5 : Февраль 28, 2021, 19:16:23 »

Как я считаю.. Можно создать переменную идентификатор которая будет хранить специальный номер уровня. И потом просто через неё проверять на каком уровне мы находимся статистику(звездочки)
Типа global.levelnumber будет проверкой. Когда мы проходим уровень то global.levelnumber будет как блок который будет проверять номер уровня. Допустим мы проходим уровень и в начале уровня global.levelnumber запишет номер уровня(например в событии "creation code" в комнате).  Потом можно юзать массив. Создать массив где будут наши звездочки. И сколько будет уровней столько и массивов.

Да всё так, как ты описал. У меня есть переменная идентификатор которая хранит специальный номер уровня.
Но изначально карт было немного, и я не хотел создавать массив. Поэтому хотел схитрить)
Но похоже придется всё-таки его создать.
Записан

Самое сложное в создании игры, придумать подходящие ей название.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.063 секунд. Запросов: 29.