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

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

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

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

Күн бұрын

Пікірлер: 47
@arfvewwww2
@arfvewwww2 2 жыл бұрын
В коде есть принципиальная ошибка, а именно использование функции has, когда нужно get. У словарей функция has проверяет наличие КЛЮЧА, а не его ЗНАЧЕНИЕ. То есть даже если б в словаре swordsman у ключа has_fire_resist стояло значение false, то условие if unit.has("has_fire_resist"): всё равно бы выполнилось и на консоль бы вывелось значение 10. А чтобы проверить значение у ключа в словаре используется функция get. Вот как это выглядит: extends Node2D var swordsman = { "name": "Swordsman", "weapon": "sword", "hp": 28, "has_fire_resist": true } func _ready(): print(calculate_damage_to_swordsman(swordsman, 20)) func calculate_damage_to_swordsman(unit, base_damage): if unit.get("has_fire_resist") == true: return base_damage/2.0 else: return base_damage
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
Да, косяк есть. Хорошо, что ты заметил. И спасибо за развернутый комментарий. Закреплю его. Надеюсь, поможет кому-нибудь.
@GroledPlay
@GroledPlay 3 жыл бұрын
Читал документацию и смотрел большие гайды по гдскрипт, этот материал укрепил мои знания, спасибо. Примеры на играх это приятно, движек же игровой)
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Это так приятно слышать. Я очень рад. Спасибо, что написал. Удачи в освоении Godot.
@NobodyHere539
@NobodyHere539 3 жыл бұрын
Рекомендую пройти в документацию и там всё прочитать, а на этом у меня всё
@PcPrincipal-w2c
@PcPrincipal-w2c 2 жыл бұрын
Ляяяя тернарный оператор рабочий получился кайф , спасибо человеку в коментариях за пример. И автору за курс👍, хоть у меня и бомбило пару раз когда понять немог
@12eto12
@12eto12 23 күн бұрын
спасибо я с твоих курсов написал для себя методичку и считай научился за 2 дня спасибо огромное я смотрел многочасовые гайды по глскрипт и лишь жтот мне легко дался
@frontend-pashtet
@frontend-pashtet 23 күн бұрын
Я очень рад, что тебе помогли эти уроки. Если хочешь, заходи к нам в дискорд: discord.gg/NqF45TKBD7 у нас там джемы и много хороших людей
@ytroMdnAkciR
@ytroMdnAkciR Жыл бұрын
Ещё из курсов по питону помню, что при ретурнах можно не использовать else, ибо сам ретурн завершает работу функции
@Опятьработа-л3т
@Опятьработа-л3т 3 ай бұрын
СПАСИБО ДЯДЯ
@neoddis_official
@neoddis_official 2 жыл бұрын
сделай видео урок по audiostreamplayer и если выйдет расскажи все о нем, к примеру расскажи как сделать так чтобы музыка играла не прирываясь в 2 сценах но если мы открываем 3 сцену то она заканчивалась и в 3 сцене начиналась другая песня
@minimalstory
@minimalstory 3 жыл бұрын
пили дальше)
@T3mak
@T3mak 2 жыл бұрын
*Курс пройден* *Return Спасибо*
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
Ахах) Остроумно:) Успехов в изучении движка.
@Andryuha_-ne7vt
@Andryuha_-ne7vt 2 жыл бұрын
Сделал так же, только в библиотеку добавил значение "armor", которая так же как "hp" имеет числовой тип данных и при запуске весь урон уходит в "armor", а "hp" целое. Как перевести урон на "hp"?
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
Если сидишь в дискорде, то заходи. Там можно код посмотреть будет и обсудить. Тут в комментах сложно discord.gg/mswNVD2M98
@kamillayesa
@kamillayesa 3 жыл бұрын
Где же это видео было во время моей учебы? Оно бы неплохо помогло бы с разработкой индивидуального проекта в колледже
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Спасибо за комментарий. Мне важно понимать, каким получился материал. И такие комментарии очень ценны. Надеюсь, оно еще кому-нибудь поможет.
@nomuraut8446
@nomuraut8446 3 жыл бұрын
Что за колледж?
@moler2701
@moler2701 2 жыл бұрын
А язык подойдёт для начала.....я просто не один язык не знаю и собираюсь начать с GDScript.?????
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
GDScript относительно простой язык просто потому что, в нем почти ничего нет. Это плюс для начинающего. Но недостатком является, что он по сути привязан к Godot Engine, и для начинающих не очевидно: 1) что является частью GDScript, 2) а что является частью движка. Попробуй держать эту мысль в голове и начни просто с изучения языка без привязки к играм. Можешь начать с вот этой страницы документации. docs.godotengine.org/ru/stable/tutorials/scripting/gdscript/gdscript_basics.html После этого уже можно осваивать возможности движка с помощью GDScript. P.S. если опыта программирования нет вообще, то GDScript это хорошее начало. Я бы не стал браться за C# только потому что на нем можно найти работу и он в других движках востребован. Знание одного языка достаточно просто транслируются в знание другого. Если будут вопросы, можешь писать в дискорде.
@zhelezzyaka_YT
@zhelezzyaka_YT 3 жыл бұрын
func calculate_fire_damage(unit, base_damage): if unit.get("has_fire_resist", true): return base_damage / 2.0 return base_damage лишняя строчка - строчка с else? без неё всё так же работает var base_damage = 20 var damage_to_swordman = (base_damage if swordman.get("has_fire_resist", false) else base_damage/2) print(damage_to_swordman) как-то так в виде тернарного оператора вышло
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Да, верно. else был лишним. Молодец! Один момент. Второй аргумент в unit.get("has_fire_resist", true) возвращает значение по умолчанию. Тут скорей подойдет false. Типа если не найдено сопротивление огню, то сопротивление огню отсутствует т.е. равно false. Если возвращать true, то if будет выполняться всегда, вне зависимости наличия сопротивления (кроме случаев, когда в словаре явно указан false) Молодец, что освоил тернарный оператор. Мне кажется, там местами перепутаны base_damage и base_damage/2. Но воспользовался ты им верно синтаксически. И теперь у тебя одна строчка вместо 4х. Это круто!
@n1ksen23
@n1ksen23 4 ай бұрын
@@frontend-pashtet я также нашёл решение через base_damage = base_damage / 2.0 в if и без else, return base_damage
@Lavokast
@Lavokast Жыл бұрын
Курс хороший но я бы дал базовый набор команд как перемещения вывод картинок и тд
@kromvelua4410
@kromvelua4410 2 жыл бұрын
Идентификатор "swordsman" не обьявлен в текущей области. Как решить это?
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
Необходимо объявить переменную с этим именем. Через var swordsman
@kromvelua4410
@kromvelua4410 2 жыл бұрын
@@frontend-pashtet так она у меня есть, объект то записывается в переменную, я все делал как на видео, а потом попробовал сделать как в клиенте тут, и его код сработал , а мой абсолютно идентичный не робит....
@kromvelua4410
@kromvelua4410 2 жыл бұрын
@@frontend-pashtet Можем в ДС это все обсудить, у меня есть ещё вопросы.
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
@@kromvelua4410 можем. Залетай на сервер. Там могут и другие участники помочь со сложностями разобраться discord.gg/sbHnmUphMC
@sket9791
@sket9791 2 жыл бұрын
Он не обьктно ориентированный, верно?
@sket9791
@sket9791 2 жыл бұрын
Переменная, сразу классом становится, точнее структурой
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
Думаю, можно сказать, что объектноориентированный. Классы есть, наследование есть. Не такой набор ООП как в матёрых языках, но это и норм. Это ведь простой язык. Хорошо, что его не перегрузили фичами. Кстати, вчера вышло новое видео про ООП в годо. Как раз можешь глянуть по этой теме.
@T3mak
@T3mak 2 жыл бұрын
​@@frontend-pashtet а инкапсуляция и полиморфизм имеются?)
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
@@T3mak имеются, но модификаторов доступа и интерфейсов, например, нет. Вот я делал видео про ООП элементы Наследование скриптов / ООП в Godot Engine kzbin.info/www/bejne/gHmck4Fsd9Bjrac
@T3mak
@T3mak 2 жыл бұрын
@@frontend-pashtet и хорошо, что нет. Самые мутные темы, в C# можно голову сломать, пока поймёшь, где, как, когда и зачем использовать (хотя в крупных проектах это полезно, конечно). А видео сейчас гляну 👌🏻
@ИльичьЛенин-й5ш
@ИльичьЛенин-й5ш 3 жыл бұрын
я правильно понял , если "has_fire_resist": будет ложь , то урон все равно будет урезан , тут важно наличие строчки "has_fire_resist" в словаре ?
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Да, ты правильно все понял. В видео ошибка. Там должно быть unit.get("has_fire_resist"). Если ключа не будет, то вернется null и все будет работать как надо. Можно еще написать unit.get("has_fire_resist", false). Второй аргумент это значение, которое вернется, если ключ не найден. Но null нас тут тоже устраивает, Молодец! Отлично заметил.
@foxvicrot3457
@foxvicrot3457 Жыл бұрын
что значит возвращение? Где можно узнать об этом подробнее, чтобы не запутаться
@scorpyon7988
@scorpyon7988 2 жыл бұрын
А функцию в функции нельзя делать?
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
Функцию внутри функции объявить (создать) нельзя, но использовать в других функциях можно. Надеюсь, ответил.
@iliiakozhan5163
@iliiakozhan5163 2 жыл бұрын
func FONK -> void return дикий фооооонк!
@ВадимСеров-р4н
@ВадимСеров-р4н Жыл бұрын
Не понял где задаётся, что swardsman это unit?
@FreeGamesFGames
@FreeGamesFGames 6 ай бұрын
при передаче данных на 13 строке
@Елизавета-с5ы4х
@Елизавета-с5ы4х Жыл бұрын
func calculate_fire_damage(unit, base_damage): return [base_damage, base_damage / 2.0][unit.has('has_fire_resist')]
@Елизавета-с5ы4х
@Елизавета-с5ы4х Жыл бұрын
Функция написана в одну строчку, но работает так же
@generimposter
@generimposter Жыл бұрын
Ну все я понял то что гдскрипт я никогда не выучу.
Гениальное изобретение из обычного стаканчика!
00:31
Лютая физика | Олимпиадная физика
Рет қаралды 4,8 МЛН
Твоя первая игра на Godot
1:34:34
Фронтенд Паштет
Рет қаралды 89 М.
Всё об указателях в C++ за 20 минут
20:00