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

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

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

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

Күн бұрын

Пікірлер: 45
@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 жыл бұрын
Ляяяя тернарный оператор рабочий получился кайф , спасибо человеку в коментариях за пример. И автору за курс👍, хоть у меня и бомбило пару раз когда понять немог
@ytroMdnAkciR
@ytroMdnAkciR Жыл бұрын
Ещё из курсов по питону помню, что при ретурнах можно не использовать else, ибо сам ретурн завершает работу функции
@neoddis_official
@neoddis_official 2 жыл бұрын
сделай видео урок по audiostreamplayer и если выйдет расскажи все о нем, к примеру расскажи как сделать так чтобы музыка играла не прирываясь в 2 сценах но если мы открываем 3 сцену то она заканчивалась и в 3 сцене начиналась другая песня
@Опятьработа-л3т
@Опятьработа-л3т 2 ай бұрын
СПАСИБО ДЯДЯ
@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
@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 3 ай бұрын
@@frontend-pashtet я также нашёл решение через base_damage = base_damage / 2.0 в if и без else, return base_damage
@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# только потому что на нем можно найти работу и он в других движках востребован. Знание одного языка достаточно просто транслируются в знание другого. Если будут вопросы, можешь писать в дискорде.
@minimalstory
@minimalstory 3 жыл бұрын
пили дальше)
@kamillayesa
@kamillayesa 3 жыл бұрын
Где же это видео было во время моей учебы? Оно бы неплохо помогло бы с разработкой индивидуального проекта в колледже
@frontend-pashtet
@frontend-pashtet 3 жыл бұрын
Спасибо за комментарий. Мне важно понимать, каким получился материал. И такие комментарии очень ценны. Надеюсь, оно еще кому-нибудь поможет.
@nomuraut8446
@nomuraut8446 2 жыл бұрын
Что за колледж?
@kromvelua4410
@kromvelua4410 Жыл бұрын
Идентификатор "swordsman" не обьявлен в текущей области. Как решить это?
@frontend-pashtet
@frontend-pashtet Жыл бұрын
Необходимо объявить переменную с этим именем. Через var swordsman
@kromvelua4410
@kromvelua4410 Жыл бұрын
@@frontend-pashtet так она у меня есть, объект то записывается в переменную, я все делал как на видео, а потом попробовал сделать как в клиенте тут, и его код сработал , а мой абсолютно идентичный не робит....
@kromvelua4410
@kromvelua4410 Жыл бұрын
@@frontend-pashtet Можем в ДС это все обсудить, у меня есть ещё вопросы.
@frontend-pashtet
@frontend-pashtet Жыл бұрын
@@kromvelua4410 можем. Залетай на сервер. Там могут и другие участники помочь со сложностями разобраться discord.gg/sbHnmUphMC
@ИльичьЛенин-й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 нас тут тоже устраивает, Молодец! Отлично заметил.
@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# можно голову сломать, пока поймёшь, где, как, когда и зачем использовать (хотя в крупных проектах это полезно, конечно). А видео сейчас гляну 👌🏻
@Lavokast
@Lavokast Жыл бұрын
Курс хороший но я бы дал базовый набор команд как перемещения вывод картинок и тд
@foxvicrot3457
@foxvicrot3457 11 ай бұрын
что значит возвращение? Где можно узнать об этом подробнее, чтобы не запутаться
@iliiakozhan5163
@iliiakozhan5163 2 жыл бұрын
func FONK -> void return дикий фооооонк!
@scorpyon7988
@scorpyon7988 2 жыл бұрын
А функцию в функции нельзя делать?
@frontend-pashtet
@frontend-pashtet 2 жыл бұрын
Функцию внутри функции объявить (создать) нельзя, но использовать в других функциях можно. Надеюсь, ответил.
@ВадимСеров-р4н
@ВадимСеров-р4н Жыл бұрын
Не понял где задаётся, что swardsman это unit?
@FreeGamesFGames
@FreeGamesFGames 5 ай бұрын
при передаче данных на 13 строке
@Елизавета-с5ы4х
@Елизавета-с5ы4х 11 ай бұрын
func calculate_fire_damage(unit, base_damage): return [base_damage, base_damage / 2.0][unit.has('has_fire_resist')]
@Елизавета-с5ы4х
@Елизавета-с5ы4х 11 ай бұрын
Функция написана в одну строчку, но работает так же
@generimposter
@generimposter Жыл бұрын
Ну все я понял то что гдскрипт я никогда не выучу.
SLIDE #shortssprintbrasil
0:31
Natan por Aí
Рет қаралды 49 МЛН
Как Ходили родители в ШКОЛУ!
0:49
Family Box
Рет қаралды 2,3 МЛН
UFC 287 : Перейра VS Адесанья 2
6:02
Setanta Sports UFC
Рет қаралды 486 М.
How to program in Godot - GDScript Tutorial
58:10
Brackeys
Рет қаралды 874 М.
Предел развития НЕЙРОСЕТЕЙ
18:53
Onigiri
Рет қаралды 200 М.
Делаю СВОЮ ИГРУ в GODOT уже ПОЛ ГОДА
8:10
Vaskoteg | разработка игр
Рет қаралды 2,6 М.
«Осень». Самая большая загадка Windows XP
14:36
Девять десятых
Рет қаралды 1,5 МЛН
SLIDE #shortssprintbrasil
0:31
Natan por Aí
Рет қаралды 49 МЛН