<< ЗАМЕТКИ >>
Я уже написал десятки игровых функций и сотни строк кода, но досих пор немогу понять, как лучше манипулировать переменными. Дело в том, что объекты (с этими переменными) то появляются, то исчезают, то меняются сцены, то на эти переменные ещё что воздействует.
И я пока решил делать так:
Есть, например, переменная с начальным значением “_power = 3 ”. И чтобы её изменить, то мы не обращаемся прямо к ней на прямую, а приплюсовывать ей другую переменную, которая изолирована от всего ненужного и является как правило, глобальной. Например “ global._bonus = 5 ”. И получаем ” _power = 3 + global._bonus ”.
elcar
> Для этого даже придумали формат под названием JSON.
То есть это “ключ:значение”, и сам массив мы добавлять в “значение”.
Ты-то мне показываешь JSON файл, а в нём всё просто и понятно (раздел. ключ:значение и т.д. по новой)
Выглядит это, конечно, всё удобно, наглядно и понятно, но только - в JSON файле. А вот как этим всем манипулировать в коде… Это как пятью кеглями жонглировать. А я пока могу только одной. Но принцип мне приблизительно понятен. Мне сноровки не хватает.
711
> Но принцип мне приблизительно понятен.
Нет.
Для поворота мозга в нужную сторону, попробуйте прочесть пару первых глав Дейкстры "Дисциплина программирования". Как математика начнет подавлять - бросайте. Вам надо просто сломать стереотип (профилактика детской болезни - ООП).
gudleifr
Я вот сейчас хочу начать что-то писать на C# в Unity. Буду это делать практически с нуля. Так как я и так в программировании почти ноль. Но и также я всё, что я знал про C# уже подзабыл.
Что, по твоему мнению, я (или любой другой такого же уровня) должен начать писать ? какой код ? С чем он должен быть связан ? С переменными, циклами, массивами… ?
Вот если прям с нуля - с чего я должен начать практику ?
В плане теории я понял. Это в первую очередь нужно начать читать - Дейкстр "Дисциплина программирования".
711
> Вот если прям с нуля - с чего я должен начать практику ?
понимаю что ты уже возможно лоялен секте, но вдруг... https://catlikecoding.com/unity/tutorials/basics/
711
> В плане теории я понял.
Теория там заумная. Вам - только начало, для настроения.
711
> Что, по твоему мнению, я (или любой другой такого же уровня) должен начать писать ?
Есть 4 способа обучения:
1. Тупо по обучалке. Ну, по какой-нибудь книжке, где от начала до конца поэтапно проходится пара-другая больших учебных проектов.
2. Много маленьких задачек. От простых расчетов, свистелок и перделок, до задачек с нетривиальным решением. Не для чего-то конкретного, а в качестве головоломок.
3. Очумелые ручки. Коллекционирование полезных программок. Например, хотите по играм. Найдите в каком-нибудь журнале бросатель кубиков. Найдите какой-нибудь полезный шейдер. После каждой находки радуйтесь, насколько легче стало играть.
4. Большой проект самостоятельно от начала до конца.
Какой способ Вам ближе? Отвечайте не мне. Себе.
Пытаться понять, что я пишу - не нужно. Это просто мысли в слух. Мне это помогает хоть как-то разложить задачу на подзадачи и собраться мыслями.
Сейчас, наверное, делаю самое сложное для меня, что осталось в этой игре. Я писал об этом выше. Это будет шкала, которая отображает уровень улучшения у игрока.
Сложность в том, что её можно увеличивать за деньги. Потом уменьшать бесплатно и снова увеличивать бесплатно до последнего купленного обновления. И естественно это должно всё визуально отображаться и сохраняться.
А) мы купили четыре улучшения по указанным ценам.
Б) мы уменьшили два улучшения. И можем увеличить обратно и всё бесплатно.

• После каждой покупки обновления переменная _power получает +1 к значению.
• При помощи этой переменной я отрисовываю циклом for купленные ячейки.
И здесь пока всё просто.
• при уменьшении обновления, уже купленные ячейке в шкале должны отображаться другим цветов.
• При повторном увеличение деньги не должны сниматься. Но до тех пор пока мы не дойдём до ещё не купленных ячеек..
И тут у меня просто бардак начинается.
kkolyan
> но вдруг…
Да там в целом довольно интересный сайтик.
gudleifr
> 1.
> 2.
> 3.
> 4.
Ну тогда всё ОК.
Именно всё это я и делаю.
711
> Именно всё это я и делаю.
Все не надо. Что из этого у Вас получается лучше?
711
> • После каждой покупки обновления переменная _power получает +1 к значению.
> • При помощи этой переменной я отрисовываю циклом for купленные ячейки.
> И здесь пока всё просто.
> • при уменьшении обновления, уже купленные ячейке в шкале должны отображаться другим цветов.
> • При повторном увеличение деньги не должны сниматься. Но до тех пор пока мы не дойдём до ещё не купленных ячеек..
> И тут у меня просто бардак начинается.
//создаём структуру данных для обновлений, "total" = прокачанные уровни, "current" = текущие
var updateArr = [{"id":0,"name":"Опупительное обновление","total":3,"current":2}]
// отображаем все обновления
function visualUpdates () {
let iMax = updateArr.length
for (let i = 0; i < iMax; i++) {
visualOneUpdate(i)
}
}
// убираем отображение обновлений
function removeVisualUpdates () {
//тут код для удаления всех кубиков
}
// отображаем кубики одного обновления
function visualOneUpdate(idUpdate) {
let iMax = updateArr[idUpdate].current
for (let i = 0; i < iMax; i++) {
visualOnePointUpdateCurrent() //рисуем кубик купленной работающей ячейки
}
let iMax2 = updateArr[idUpdate].total - updateArr[idUpdate].current
for (let i = 0; i < iMax2; i++) {
visualOnePointUpdateTotal() //рисуем кубик купленной неработающей ячейки
}
}
// увеличиваем текущий уровень обновления
function addCurrentUpdate (idUpdate) {
if (updateArr[idUpdate].current < updateArr[idUpdate].total) {
updateArr[idUpdate].current++
removeVisualUpdates ()
visualUpdates ()
}
}
// уменьшаем текущий уровень обновления
function removeCurrentUpdate (idUpdate) {
if (updateArr[idUpdate].current > 0) {
updateArr[idUpdate].current—
removeVisualUpdates ()
visualUpdates ()
}
}
// увеличиваем максимальный уровень обновления
function addTotalUpdate (idUpdate) {
updateArr[idUpdate].total++
removeVisualUpdates ()
visualUpdates ()
}
elcar
а можно тэгом code пользоваться?!
711
> И тут у меня просто бардак начинается.
>
>
Вроде всего две проверки надо сделать. При апгрейде, текущему индикатору задавать цвет "куплен". Предварительно проверить деньги. При даунгрейде тупо текущему индикатору задавать цвет "доступен".
elcar
skalogryz
Напомнило:

<< ЗАМЕТКИ >>
Все названия с _нижним_подчёркиванием в начале, это мои переменные (пользовательские).
Первое:
Если переменной _my_variable нужно присвоить _speed, а потом отнимать по 0.01 то…
Create-----------------------
_speed = 1
_my_variable = 0
Update----------------------
// … то вот так не получится
_my_variable = _speed - 0.01
// то есть хоть это и Update, однако переменная _speed постоянно возвращается к значению при инициализации в Create
Update----------------------
// Это нужно разбить на два действия
_speed -= 0.01
_my_variable = _speed
// а вот так она будет перезаписываться.
Второе:
Разбираю создание собственных функция
function _my_fun (_var01, _var02, _var03) {
return (_var01 + _var02 * _var03)
}
Я допустил ошибку. И внутри одной функции делал вычисления абсолютно для разных нужд. А потом просто полученные результаты не смог присвоить нужным переменным.
Короче, я поначалу вообще неправильно понял, как работают эти функции.
Третье:
Массивы_это = [“радость”, “счастье”, “это_всё” ]
Нужно наконец взять себя в руки и проникнуть в них поглубже.
gudleifr
> Что из этого у Вас получается лучше?
Для меня это всё одинаково. Чередую по мере усталости и тупиков. Зато потом одно помогает другому.
elcar
Кое что получилось.
skalogryz
А я копирую код в редактор и он мне там сразу всё подсвечивает.
Самое полезное - это когда выбранное слово подсвечивается везде, где оно используется
Slic
Ты недооцениваешь мой уровень.
Для меня это всё, абсолютно всё - это как какой-то вымышленный мир, в котором действуют абсолютно иные законы физики и принципы социального строя.
Но, как я уже написал выше - я частично это реализовал.
Просто там одно начинает цеплять за другое и тут “начинается бардак”.
Там три персонажа, пять апдейтов у каждого, всё в разных сценах, всё должно сохраняться/загружаться…
711
> Для меня это всё одинаково.
Низ-зя!
Попробую с другого конца. Представьте, что вы плывете в лодке по океану. Вокруг - никого. Голову напекло - начали мерещиться всякие Спейс Инвейдеры... И вдруг вас прибивает к большому линкору (движок). Стоит он посреди океана и гасит с другого борта из всех своих бронебашен злобных Инвейдеров. Вы подгребаете ближе и начинаете на борт линкора свои записки-заклинания клеить. Иногда линкор стреляет, куда Вам надо, иногда нет. Постепенно Вы замечаете на борту линкора пробоины и иллюминаторы - сквозь них видны отдельные его машины. Вы их пытаетесь срисовать (Ваши темы "Разное" и "Заметки") и сделать свои записки более осмысленными. Русалки всякие - elcar и skalogryz - подсказывают Вам, как "правильно" составлять записки, ну, там, писать только фиолетовыми чернилами, заголовок подчеркивать двойной волнистой и пр. И тут возникает вопрос, чего Вы хотите? Пробраться в рубку линкора и командовать им всерьез? Подняться на палубу и начать на ней мастерить свои ракеты-томагавки? Заплыть с другой стороны и окинуть взглядом картину в целом? Или стать Нео и понять, что никакого линкора нет?

711
> Для меня это всё, абсолютно всё - это как какой-то вымышленный мир, в котором действуют абсолютно иные законы физики и принципы социального строя.
Вот для этого и нужно профильное образование, хотя бы IT бакалавриат. Потому, что "чтобы правильно задать вопрос нужно знать большую часть ответа" (с) Роберт Шекли.
А получая рабочие ответы, но не понимая фундаментальной теории, ты только изнуряешь себя ментальным онанизмом.
Хотя бы скачай любой учебник по предмету "Информатика" для первого курса вуза и прочитай от корки до корки.