Эволюция:
Настрой → (: → ☯
Сытость → сыт → ♥
Сделал
- разобрался почему не работала кнопка выиграть! Потому что не была добавлена в Globals, чёрт бы их побрал
- стал выводить журнал в Debug. Теперь его видно даже когда игра прибита.
- сделал контроль жизней. Ненаглядно. Вывел попапы о смерти. Всё равно кажется ненаглядно.
- работают и появляются в процессе игры все кнопки
- в игру теперь можно выиграть. работает криво, но от начала до конца
- noodles можно уйти в минус. исправил
(то же самое, только на бумаге. self bugreport)
Текущие задачи
- просклонять разы
- сделать чтобы появлялись подсказки к кнопкам после их использования
- контроль настроения (сейчас оно ни на что не влияет)
- убрать жизни из процедуры tip
- убрать двойные tip (напр. пригуглении вылазит сразу 2 строки. это неправильно)
- уменьшать настроение только если пользователь несколько раз жмёт на одну и ту же кнопку
- научиться привязывать события к количеству прошедших дней (напр. не может работать 2 дня)
- применить ProcedureReturn на проверке денег. Убрать проверку денег из кода кнопок
- переписать все Enumeration
Вопросы
как сделать чтобы процедура выводила true или false? http://pastebin.com/sThk2Jyc
UPD разобрался. ProcedureReturn
Сверх-задачи
- нарисовать интерфейс
- автоматическая отправка лога по http
Судя по коду, я сегодня очень много сделал. Просидел 5 часов вместо одного. Эффективность ниже, но сделал реально дофига.
Читал свои старые исходники в поисках изменения регистра букв. Нашёл ошибку, исправил.

Чтобы не было косяков типа «забыл добавить в Global» используй EnableExplicit в начале кода. В больших программах это маст-хэв. С ним у тебя бы выпала ошибка еще на этапе компиляции.
Помимо этого — если архитектура позволяет, лучше вместо Global использовать Shared внутри процедур, добавляя только те переменные, которые реально нужны. Это тоже избавит от ряда ошибок, хотя наиболее ярко это проявится когда (если) ты осилишь треды и получишь кучу разных race condition.
Попробовал EnableExplicit. У меня куча необъявленных переменных внутри процедур. Не охота еще и их объявлять. Ваще бесит объявлять переменные. Нравится по сравнению с питоном то, что можно сразу ввести переменную и даже кастовать на неё +1 без дуркцкого питоновского +=
Ну раз «неохота», то не надо жаловаться :)
А нет какого-нибудь финта чтобы все переменные были глобальными?
Нет, это вообще очень плохое предложение и очень-очень-очень плохая практика.
Что ты обычно используешь для счетчиков? Ну например i. Представь что он глобальный и где-то где ты его используешь он изначально будет не 0, а например 5. Это приведет к настолько непредсказуемым багам, что ты это будешь отлаживать часами, вообще не понимая что происходит.
Global вообще нужно использовать по минимуму. В идеале любая процедура должна получать на вход набор данных и выдавать набор данных в ответ, ничего не зная про какие-то другие переменные кроме своих. Не всегда конечно это возможно.
Ну тогда у меня всё ок же. Всё что надо было задекларировать — я задекларировал. А про i: надо заставить немножко поработать воображение и давать разные переменные для разных счётчиков =)
Вот как тут было, например: https://github.com/Anatolt/soft/blob/master/find-n-del.pb
Я устал спорить, пока сам не уебешься на этом видимо нет смысла что-то объяснять. Сейчас тебе кажется что глобальные переменные решают твои проблемы — ок. Объявляй их все в самом начале через запятую после Global.
Сенсей, я не спорю. Я ж делаю как ты говоришь, просто высказываю предположения. Глобальные переменные не решают мои проблемы.
Ну вот тебе простой пример почему то что ты предлагаешь — плохо.
http://pastebin.com/Sz7eLvjH
С раскомменченным Global i ты получаешь непредсказуемое поведение, можешь даже вылезти за границы массива и твоя программа упадет.
С закомменченным все ок.
И что ты будешь делать в этом случае? Копипастом сделаешь 5 разных процедур в которых по-разному обзовешь i?
Нет, я просто уберу i из Global =D