Game Maker - создание игр | HellRoom Games
Декабрь 13, 2024, 03:14:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

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

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

API: GameMaker Studio 2
Сообщений: 5


« : Июнь 13, 2023, 11:13:56 »

Появляется ошибка thanksMessages not set before reading it. Не создаётся глобальная переменная или создаётся слишком поздно. Должно появиться случайное сообщение из списка. (Вывод на экран сам доделаю.) Помогите.
Вот код:

в событии Create:
// Создание переменной science
var science = 134;
// Создаем глобальную переменную, которая будет хранить список сообщений
globalvar scienceMessages;
if (!scienceMessages) {
 scienceMessages = ds\_list\_create();
}

// Добавляем сообщение в список
if (!ds\_list\_find\_index(scienceMessages, "Спасибо за науку!")) {
 ds\_list\_add(scienceMessages, "Спасибо за науку!");
}
if (!ds\_list\_find\_index(scienceMessages, "Спасибо всем!")) {
 ds\_list\_add(scienceMessages, "Спасибо всем!");
}

в событии Step:
// Действия в событии Step
if (place\_meeting(x, y, oPlayer) && keyboard\_check\_pressed(ord("E")) && (oPlayer.science  0)) {
 // Передача науки объекту oPlayer
 var max\_transfer = min(science / 2, 100 - oPlayer.science);
 oPlayer.science += max\_transfer;
 // Уменьшение науки объекта oTree на количество, переданное объекту oPlayer
 oTree.science -= max\_transfer;

 // Если есть сообщения в списке, выбираем случайное сообщение и выводим его на экран, затем удаляем его из списка
 if (ds\_list\_size(scienceMessages) > 0) {
 var index = irandom(ds\_list\_size(scienceMessages) - 1);
 var message = ds\_list\_find\_value(scienceMessages, index);
 show\_message(message);
 ds\_list\_delete(scienceMessages, index); // Удаляем сообщение из списка
 }
}
Записан
ярик
Активный участник
*****

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

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



« Ответ #1 : Июнь 13, 2023, 17:03:51 »


 
Код:
var science = 134;          // Создание переменной science
globalvar scienceMessages; // Создаем глобальную переменную, которая будет хранить список сообщений

if (!scienceMessages) {
 scienceMessages = ds_list_create();
}

if (!ds_list_find_index(scienceMessages, "Спасибо за науку!")) {
 ds_list_add(scienceMessages, "Спасибо за науку!");
}
if (!ds_list_find_index(scienceMessages, "Спасибо всем!")) {
 ds_list_add(scienceMessages, "Спасибо всем!");
}

  • Объявление локальных переменных происходит без конструкции с "var".
  • К чему "(!scienceMessages)"? И к чему тут булева инверсия?
  • Полагаю символы "\" в вашем коде - это какая-та ошибка копирования и на деле не выступают в его работе.
  • Зачем вы проверяете List на (не)наличие некоторых элементов, а затем эти же самые элементы добавляете? Любая структура после своей инициализации пуста! Поэтому заносите в неё новые элементы без проверок на их отсутствие


Починка:

Прочий код я не рассматривал ввиду его кривизны оформления.
« Последнее редактирование: Июнь 13, 2023, 17:20:01 от ярик » Записан

А че как 2 числа сравнить то это быстрее?
Вот так >? Вот так < ? Или лучше вот так sign(0)
kvok
Новичок
*

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

API: GameMaker Studio 2
Сообщений: 5


« Ответ #2 : Июнь 13, 2023, 21:02:46 »

Спасибоза ответ.  Мне помогает разбираться с кодом, славный ChatGPT. косяков у него хватает, но он единственный, кто может бесплатно обучать.
Записан
ярик
Активный участник
*****

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

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



« Ответ #3 : Июнь 14, 2023, 01:46:07 »

В программирование главное не исправить ошибку, а понять её.................. 
Записан

А че как 2 числа сравнить то это быстрее?
Вот так >? Вот так < ? Или лучше вот так sign(0)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

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