Вчера мой соперник похвалил мой интерфейс. Я не согласен, что это хорошее решение, просто на лучшее я пока не способен. Вообще — это игра и интерфейс у игры должен быть красочный. То что вы видите главной картинкой поста — пример каким может быть интерфейс без изменения функционала. Получение знаний и работа — не нажатия на кнопку, как у меня сейчас, а клик на стилизованный ярлычок на мониторе нарисованного дисплея. Пополнение сил для продолжения работы — клик на холодильник, который потом откроется на встречу игроку. И так далее.
Cтоя в душе придумал одну штуку. Присвоить номера кнопкам, вместо #PB_Any. Первый столбец от 1 до 5, второй от 10 до 15, третий от 20 и так далее. Но при этом и от человеко-понятных переменных не избавляться. Проверил — работает:
Код
Это нужно, чтобы упростить процедуру отключения всех кнопок. Не собирать их в массив, как я делал это в первой версии:
NewList ab() ;all btn add_btn(ab(),btn_name) ForEach ab() HidGad(ab(),1) Next
А просто пройтись по номерам:
If dead
For i = 2 To 53
HideGadget(i,1)
Next
dead = 0
EndIf
Такой подход не прокатил, т.к. цикл обходит все цифры и спотыкается на отсутствующихз гаджетах. Пронумеровал из без группирования по десяткам. Просто подряд. Работает.
UPD Нифига не работает. Я в примере в Case использовал цифры. А должен был использовать человеческие названия переменных. Вот так: код
Печаль. Возвращаемся к массиву с кнопками.
В первой версии у меня был массив ab() (all buttons) в который я добавял кнопку в момент её создания. Сейчас я хочу создать все кнопки разом, чтоб они у меня были в одном месте, а потом «появлять» и скрывать их при необходимости. Процедура добавления кнопок выглядела так:
Procedure add_btn(List lname(), name_of_btn) AddElement(lname()) lname() = name_of_btn EndProcedure
Я хочу её упростить, т.к. у меня только один массив и каждый раз его указывать нет смысла. Пытаюсь вот так:
Procedure add_btn(name_of_btn) AddElement(all_btn()) all_btn() = name_of_btn EndProcedure
Пишет ошибку, мол это не функция, массив, список, карта…

Пробовал добавить List all_btn() в Global — ругается на синтаксическую ошибку… Да здравствует Sublime Multi Cursor
Итого, финальный код за сегодня: тыц
Оживил все кнопки разом, но пока ни одну из них не наполнил смыслом.
Почему-то не работают процедуры Hide и Show.
;чувак ты забыл кнопку «выиграть»
;кнопка гуглить не исчезает. просто когда заканчивается список фраз пишет «что гуглить-то?»
;идея: можно дать пользователю реальную возможность гуглить через игру, чтобы он мог ввести что-то и игра выдала это в лог
Сегодня меня разбудила кошла в 6 утра. А посольку я теперь ложусь спать рано — я легко встал и сделал все дела, о которых спорил: программирование, английский.
Сенсей, продублирую вопрос в конце:
Как правильно добавить List в глобал, чтобы обращаться к нему из процедуры?
Global NewList …
или в процедуре уже добавить его с помощью Shared
чтобы не спотыкаться на несуществующих гаджетах есть IsGadget() и я тебе уже показывал как его использовать на примере
А, ну и да, все что ты хочешь сделать с интерфейсом (клик по ярлыку в виртуальном компьютере) делается через канвас. Не обещаю что будет просто.
Вот, сделал очень просто, чтобы тебе было максимально понятно. По-хорошему надо это все обернуть в LinkedList с соответствующей структурой и тогда можно будет даже таскать ярлычки.
Бинарник — http://dl.dropbox.com/u/943974/canvaspc.exe
Исходник — http://dl.dropbox.com/u/943974/canvaspc.zip
http://dl.dropbox.com/u/943974/Screenshots/03co0z~ihd_h.png
Это восхитительно. Так гораздо интереснее и это ровная дорога к тому что я рисовал на картинке выше.
Только я сразу вываливаюсь из рамок конкурса 96k.
Ты недооцениваешь возможности)
Можно серьезно сэкономить на графике, например сильно снизив качество картинок. Можно также часть графики (или всю) генерировать процедурно.
Вот комбинированный вариант на 93Кб (иконки растр, ноут процедурный), хоть и примитивно (лень было более подробно делать ноут), но я думаю принцип ты понял. Рисовать это весело!
Бинарник — http://dl.dropbox.com/u/943974/canvaspcproc.exe
Исходники — http://dl.dropbox.com/u/943974/canvaspc2.zip
http://dl.dropbox.com/u/943974/Screenshots/nvby067_ym3g.png
Это охренительно…
Доработал мелочи, генерим комп теперь один раз при старте чтобы не перерисовывать его постоянно + оптимизировал иконки. Итого — 86Кб. На этом пожалуй все, лень дальше.
Бинарник — http://dl.dropbox.com/u/943974/canvaspcproc.exe
Исходники — http://dl.dropbox.com/u/943974/canvaspc3.zip