Циклы, for loop/ Введение в GDScript для начинающих/ Прожиточный минимум GDScript

  Рет қаралды 13,438

Фронтенд Паштет

Фронтенд Паштет

Күн бұрын

Пікірлер: 45
@gritsky
@gritsky 2 жыл бұрын
В подобном словаре юнитов, скорее всего в реальном кейсе ключи - будут одинаковые. Тут лучше не использовать метод .has, ибо он просто проверяет наличие, а использовать "not unit["has_fire_resist"]" А так уроки очень годные, спасибо!
@rriieenn
@rriieenn Жыл бұрын
Спасибо за эти уроки, прям спасение. Год назад пробовала начать учиться, но бросила, а тут все так хорошо объясняется. У меня вышло так (добавлять то, что кто то умер, мне было лень😅) extends Node2D func _ready(): var units = [ { "name": "rabbit", "hp": 50, "damage": 10, "atk": 20, "fire_damage": true, }, { "name": "dragon", "hp": 100, "damage": 70, "atk": 5, "fire_resist": true, "fire_damage": true, }, { "name": "dog", "hp": 80, "damage": 30, "atk": 10, } ] var enemy = { "name": "fire fly", "hp": 300, "damage": 50, "fire_damage": true, } for unit in units: unit["damage"] = unit["atk"] / 5 * unit["damage"] if unit.has("fire_damage"): unit["damage"] = unit["damage"] + 15 enemy["hp"] = enemy["hp"] - unit["damage"] if enemy["hp"] > 0: for unit in units: if not unit.has("fire_resist"): unit["hp"] = unit["hp"] - enemy["damage"] else: unit["hp"] = unit["hp"] - enemy["damage"] / 2 print(unit["hp"]) print(enemy["hp"])
@frontend-pashtet
@frontend-pashtet Жыл бұрын
Я очень рад слышать, что уроки оказались полезны. Спасибо за комментарий)
@ВторойкиборгЧеловек-Сидр
@ВторойкиборгЧеловек-Сидр 3 жыл бұрын
Вот это продуктивность о.о
@ForgeInDark
@ForgeInDark Жыл бұрын
ты лучший благодаря тебе возможно моя студия сделает нормально игру Спасибо
@frontend-pashtet
@frontend-pashtet Жыл бұрын
Успехов с разработкой ;)
@Бодя-и2я
@Бодя-и2я Жыл бұрын
Как твои успехи? Интересно было бы ознакомиться с играми от твоей студии.
@NobodyHere539
@NobodyHere539 3 жыл бұрын
О, урок для меня, спасибо!
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Я думал о тебе во время монтажа
@NobodyHere539
@NobodyHere539 3 жыл бұрын
@@frontend-pashtet awwww
@olegkechko1215
@olegkechko1215 Жыл бұрын
Прошло 2 года, но хочу отписаться по домашке. Первый for - это инициация атаки Второй for - это обновление значение функции, после проверки каждого юнита. Третий for - это поиск юнита в блоке функции по значению хп и отображение его в консоли. hp_max = 0 - главное действие это сброс функции в исходное положение для будущего повторения скрипта. А что качается по continue и break - пока не представлю где могу их применить. Спасибо за видео уроки) for unit_type in units: if unit_type["is_fire_res"] == false: unit_type["hp"] = unit_type["hp"] - 100 if unit_type["hp"] < 0: unit_type["is_dead"] = true if unit_type["hp"] > hp_max: hp_max = unit_type["hp"] for unit_type in units: if unit_type["hp"] >= hp_max: print(unit_type["name"]) print(unit_type["hp"]) hp_max = 0
@shchyoloch7654
@shchyoloch7654 3 жыл бұрын
Удивительно, что так мало просмотров... У меня вышел такой код;) extends Node var life = "жив" func _ready(): var units = [ { "name": "Dimon", "hp":40, "has_fire_resist": false, "base_damage1": 20, "is_dead": false }, { "name": "Vova", "hp": 80, "has_fire_resist": true, "base_damage1": 100, "is_dead": false }, { "name": "Alex", "hp": 50, "has_fire_resist": true, "base_damage1": 20, "is_dead": false } ] for unit in units: if unit["has_fire_resist"] == true: var damage_to_unit = calculate_fire_damage(unit["base_damage1"]/2) unit["hp"] = unit["hp"] - damage_to_unit if unit["hp"]
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Отличный код. Молодец! Просмотры набираются постепенно, комментарии этому помогают. Спасибо, что поделился кодом, и классно, что практикуешься. Это правильный путь.
@marshall7643
@marshall7643 3 жыл бұрын
Откуда берётся код в начале виде? Каждое видео - новый код. Сделай видео, чтобы от урока к уроку была связь. Так легче усваивается информация.
@marshall7643
@marshall7643 3 жыл бұрын
Допустим откуда взялись nodes, что это такое и прочие штуки, по типу swordsman2
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Привет. Спасибо, что оставил фидбэк. Важно понимать, какие элементы курса не работают как надо. Но идея была такая: В каждом уроке отдельная тема. Цель курса - минимализм. Поэтому урок начинается с какого-то сетапа т.е. пары переменных с данными. Смотреть как я пишу/задаю эти переменные это трата времени зрителя. Зритель может поставить видео на паузу и изучить код. Знаний из прошлых уроков для этого достаточно. Хотя, возможно стоило уделить пару секунд на то, чтобы подчеркруть, что урок начинается с какого-то конкретного кода, и пояснить что там. Спасибо, что написал об этом. Это ценно.
@gritsky
@gritsky 2 жыл бұрын
var max_current_hp = 0 for unit in units: if unit["hp"]
@MaksimDarion
@MaksimDarion 2 жыл бұрын
Вау, молодец, прекрасный код!)
@Jerkich
@Jerkich 2 жыл бұрын
крутой урок
@-Cool_Fish-
@-Cool_Fish- 2 ай бұрын
Данный код получит значение хп максимальное среди персонажей, а если у кого-то оно будет одинаковым, то код будет переходить к следующему циклу. var max_hp = 0 for unit in units: if max_hp < unit["hp"]: max_hp = unit["hp"] if max_hp >= unit["hp"]: continue print(max_hp)
@foxvicrot3457
@foxvicrot3457 Жыл бұрын
А нет ли какой-нить команды для типа как max в пайтоне(мне друг так сказал, не программист), чтобы не писать, что если хп у а чела больше, чем у б и в чела, то пишется кол-во хп и имя а чела?
@bigpigfarm
@bigpigfarm 3 жыл бұрын
Я так сделал: var currentHp= mobs[0]["hp"] for unit in mobs: if unit["hp"] > currentHp: currentHp = unit["hp"] for unit in mobs: if unit["hp"] == currentHp: print(unit)
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Молодец. Так будет работать. Обычно через сравнение больше/меньше и делают поиск самого большого/маленького значения. Улучшить можно, если убрать второй цикл. И вместо переменной currentHp завести переменную currentUnit или maxHpUnit, и туда сохранять unit с максимальным hp. Тогда по окончанию первого цикла у тебя уже будет нужный юнит, и его не надо будет искать дополнительно. Но идея в у тебя правильная. Можешь ещё подумать, как обработать ситуацию если у нескольких юнитов одинаковое количество здоровья.
@zhelezzyaka_YT
@zhelezzyaka_YT 3 жыл бұрын
var listHp = [(units[0]["hp"]), (units[1]["hp"]), (units[2]["hp"]), (units[3]["hp"])] listHp.sort() listHp.invert() var maxUnitHp = 0 for unit in listHp: if unit >= maxUnitHp: maxUnitHp = unit print(unit) кривоватый вариант выводящий только цифры...
@Grib_21
@Grib_21 4 ай бұрын
жаль что не открыл этот курс раньше
@valpion_lasertag
@valpion_lasertag 7 ай бұрын
Спасибо тебе за гайд, весь интернет перешерстил не нашёл ничего адекватного по скрипту не нашёл, всё в духе: " нуууу, ты сделай там Ctr+C Ctr+V мой скрипт и у тебя всё там должно всё само двигаться". Говоря о скрипте с задания получилась у меня странно, но для прожиточного минимума вроде норм: var units = [ { "name": "mag", "weapon": "staff", "hp": 5 }, { "name": "paladin", "weapon": "shild", "hp": 10, "has_poison_resist": true }, ] print(units) for unit in units: if not unit.has("has_poison_resist"): unit["hp"] = unit["hp"] - 2 if unit["hp"] units[1]["hp"]: print(units[0]) elif units[1]["hp"] > units[0]["hp"]: print(units[1])
@frontend-pashtet
@frontend-pashtet 7 ай бұрын
Рад, что урок оказался полезным. Если хочешь, заходи к нам в дискорд discord.gg/NqF45TKBD7
@valpion_lasertag
@valpion_lasertag 7 ай бұрын
@@frontend-pashtet, спасибо за приглашение зайду!
@projectBP
@projectBP 2 жыл бұрын
про .has было больно не только некоторым юнитам. ОЛО! Тут далеко не все сообразят что произошло. Я понимаю что многие вещи становятся очевидными, когда некоторое время всем этим занимаешься, но блин... очень интересно, но иногда нифига не понятно. PS. Как человек ничего не соображающий - могу сказать что сложности вызывают вот эти вот "дополнительные" параметры после названия элемента. Т.е. те что после точки. Со значением осей и прочей пурги перед скобочками и внутри них.
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
Понимаю. Спасибо за фидбэк. В этих видео я старался достичь емкости в ущерб глубине объяснения. Но такие вещи как .has() и другие методы словарей в любом случае придется исследовать в документации. Могу только посоветовать вот это видео про работу со встроенной документацией. В ней также можно найти, что принимает .has() и за одно посмотреть, что умеют делать словари и массивы. kzbin.info/www/bejne/mZjCgqeDaKqSg5I Но суть меседжа я понял. Я подумываю о записи более детальной серии по gdscript
@projectBP
@projectBP 2 жыл бұрын
@@frontend-pashtet ваще уроки норм. Ёмкие и информативные. Не забрасывайте, пожалуйста ) Очень мало русскоязычного контента на этот счёт.
@georgewitmer267
@georgewitmer267 2 жыл бұрын
Вот что у меня получилось var currenthp = 0 for unit in units: if unit["hp"] > currenthp: currenthp = unit["hp"] print(currenthp)
@frontend-pashtet
@frontend-pashtet Жыл бұрын
Отличное решение!
@georgewitmer267
@georgewitmer267 Жыл бұрын
@@frontend-pashtet я так до конца не понял, как работает for in, т.е. он создаёт массив после ищет нужные значение в другом и переносит в него?
@frontend-pashtet
@frontend-pashtet Жыл бұрын
@@georgewitmer267 это по сути перебор элемента за элементом по очереди в порядке хранения в массиве. Цикл выполняется столько раз, сколько у тебя элементов в массиве. На каждый раз выполнения у тебя в переменную unit попадает определённое значение массива. for in это просто такая удобная форма для перебора элементов
@georgewitmer267
@georgewitmer267 Жыл бұрын
@@frontend-pashtet т.е. он проверяет все что в массиве и использует в unit? И можно считать unit = units?
@frontend-pashtet
@frontend-pashtet Жыл бұрын
@@georgewitmer267 нет, не совсем. unit это один элемент, units это группа элементов - массив
@Zavagwannacook
@Zavagwannacook Жыл бұрын
Если ты еще читаешь комментарии под этим курсом то во-первых: спасибо огромное) Помог новичкам разобраться. Во-вторых, хотел бы спросить по поводу задания, у меня получился довольно грязный код, хотел бы спросить как бы я мог сделать его более "чистым". Вот код: //swordsman заменил на spearman //was_alive и has_acid_resistance не использовал //fatman - юнит с большим кол-вом хп var spearman = { "name": "spearman", "damage": 25, "hp": 100, "was_alive": true, } var mage = { "name": "mage", "damage": 50, "hp": 70, "has_acid_resistance": true, "was_alive": true, } var archer = { "name": "archer", "damage": 70, "hp": 70, "was_alive": true, } if spearman["hp"] > mage["hp"] and archer["hp"]: var fatman = spearman print(fatman) elif mage["hp"] > archer["hp"] and spearman["hp"]: var fatman = mage print(fatman) elif archer["hp"] > spearman["hp"] and mage["hp"]: var fatman = archer print(fatman)
@frontend-pashtet
@frontend-pashtet Жыл бұрын
Привет. Спасибо за комментарий. Хороший код. Я бы не сказал, что он грязный. У тебя отлично получается. Заходи к нам в дискорд. У нас там скоро джем discord.gg/wzEV4vh48t
@Zavagwannacook
@Zavagwannacook Жыл бұрын
@@frontend-pashtet Ух ты, спасибо за приглашение, и за поддержку)
Все, что нужно знать о навигации в Godot
1:57:28
Фронтенд Паштет
Рет қаралды 3,6 М.
Sigma girl VS Sigma Error girl 2  #shorts #sigma
0:27
Jin and Hattie
Рет қаралды 124 МЛН
КОНЦЕРТЫ:  2 сезон | 1 выпуск | Камызяки
46:36
ТНТ Смотри еще!
Рет қаралды 3,7 МЛН
Their Boat Engine Fell Off
0:13
Newsflare
Рет қаралды 15 МЛН
N8 Цикл FOR в GODOT 4 | цикл для
12:13
GODOT для всех
Рет қаралды 1,8 М.
Что не так с аниме туториалами
21:01
Как стать ДЕЙСТВИТЕЛЬНО хорошим программистом
7:35
Бинарный происк
Рет қаралды 172 М.
Sigma girl VS Sigma Error girl 2  #shorts #sigma
0:27
Jin and Hattie
Рет қаралды 124 МЛН