Суббота, 20 Апреля 2024, 11:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Проверка объекта
Проверка объекта
SalahAdDinДата: Понедельник, 22 Августа 2011, 10:04 | Сообщение # 21
постоянный участник
Сейчас нет на сайте
Quote (LunarPixel)
SalahAdDin, GM спокойно даст это скомпилировать, т.к. все числа в подобных условиях воспринимаются как true или false. Но если использовать эти числа в выражениях, то они приобретают свои истинные свойства.

Такое выражение не несет за собой никаких действий, следовательно результат выполнения будет всегда одинаков и его можно опустить. Истинное свойство тут только одно 0.5 является 0.5, так же как 1 является 1 и так далее.
Quote (LunarPixel)
Т.е. если сравнивать с чем то 0.5, то он будет числом, а если просто указать в выражении 0.5, то оно будет true. Так же выражение !0.5 будет означать "Не истинно".

На самом деле не истинно, а все множество чисел от имнус бесконечности до 0.5 и от 0.5 до плюс бесконечности. Но опять же такие сравнения не имеют смысла, потому как не влекут за собой никаких противопоставляющих.

Quote (LunarPixel)
SalahAdDin, Какая тебе разница кто как учится?! Так хочется по умничать что ли!?

М..? smile
Ты когда идешь по улице, и видишь что человек кидает мусор а тротуар проходишь мимо, а я подхожу и показываю где урна. Вот прямо так хочется.

Quote (SalahAdDin)
т.к. все числа в подобных условиях воспринимаются как true или false

Я не уверен на все сто, но чей-то мне кажется что тут просто идет сравнение "число == число", отсюда и истина.


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета


Сообщение отредактировал SalahAdDin - Понедельник, 22 Августа 2011, 10:04
LunarPixelДата: Понедельник, 22 Августа 2011, 10:16 | Сообщение # 22
старожил
Сейчас нет на сайте
SalahAdDin, я тебе не говорю про смысл, есть он или нет для тебя, мне все равно. Я говорю про факты, а факты таковы, что все обособленные числа в условиях интерпретируются, как true или false. О чем спор?! smile

Quote (SalahAdDin)
Ты когда идешь по улице, и видишь что человек кидает мусор а тротуар проходишь мимо, а я подхожу и показываю где урна.

хех, хорошо, конечно, сказано, ещё раз по умничал. Вот только не в тему. Человек учится, как ему нравится, это его личное дело в его личном пространстве. К тому же, в том, что он написал, ошибки нет, ГМ вполне воспринимает такой синтаксис. smile


SalahAdDinДата: Понедельник, 22 Августа 2011, 10:40 | Сообщение # 23
постоянный участник
Сейчас нет на сайте
Quote (LunarPixel)
SalahAdDin, я тебе не говорю про смысл, есть он или нет для тебя, мне все равно. Я говорю про факты, а факты таковы, что все обособленные числа в условиях интерпретируются, как true или false. О чем спор?!

Да спора нет собственно. Просто твои замечания исходят из этого:
Quote (SalahAdDin)
С точки зрения логики это вообще идиотизм.

Так о чем спор? smile
Quote (LunarPixel)
хех, хорошо, конечно, сказано, ещё раз по умничал. Вот только не в тему. Человек учится, как ему нравится, это его личное дело в его личном пространстве. К тому же, в том, что он написал, ошибки нет, ГМ вполне воспринимает такой синтаксис.

Ну почему если ты не говоришь на языке школьников то сразу все говорят "ты умничаешь"?
Человек бросает мусор где ему нравится, это его личное дело. Есть же дворники, которые за ним уберут, да? Надеюсь параллель достаточно толстая?

А еще есть мнение, что человек, намеренно игнорирующий все правила здравого смысла и логики, да и вообще плюющий на общепринятые правила кодинга или скриптинга называется быдлокодер, и требует искоренения как класс. Инфа не 100%.


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета
LunarPixelДата: Понедельник, 22 Августа 2011, 11:10 | Сообщение # 24
старожил
Сейчас нет на сайте
Я не понимаю зачем ты это пишешь и чего ты добиться пытаешься?! В ГМ такие правила. Да, я согласен, что это не совсем логично смотрится, но это есть и это факт. А ты этого факта, очевидно, не знал. smile

Эх... не буду тратить свое время на эту бессмыслицу, да и флуд уже развели. Просто не нужно навязывать свое мнение, хамить и указывать человеку, что делать, это его личное дело, пока это дело никому не мешает и никого не касается. smile И если уж говорить про логику, то все твои аналогии абсолютно нелогичны. smile


ApatiДата: Понедельник, 22 Августа 2011, 12:07 | Сообщение # 25
заслуженный участник
Сейчас нет на сайте
Quote (SalahAdDin)
Дробь должна быть результатом выполнения функции. Если результат 0.5 - вернуть истину, иначе - ложь.

Оператор сравнения не прокатит за функцию?
Quote (LunarPixel)
Т.е. если сравнивать с чем то 0.5, то он будет числом, а если просто указать в выражении 0.5, то оно будет true. Так же выражение !0.5 будет означать "Не истинно".

Quote (LunarPixel)
все обособленные числа в условиях интерпретируются, как true или false

Запомни, в ГМЛ нет значений true и false. Есть только константы (переменные не меняющие значения) true=1 и false=0.
Оператор If принимает ЧИСЛО, и если оно меньше 0.5, то условие считается не выполненным, а если >=0.5, то выполненным.
Оператор сравнения же возвращает 1 или 0:
Code
    a= 0.5==1;
     show_message(a);   
     a= 1==1;
     show_message(a);  


Quote (SalahAdDin)
Такое выражение не несет за собой никаких действий, следовательно результат выполнения будет всегда одинаков и его можно опустить.

бла бла бла, это был ПРИМЕР, демонстрирующий, что сравнение разных чисел приводит к невыполнению условия.
И я прекрасно знаю, что такое условие всегда будет иметь один результат и в if такое пихать бессмысленно.
LunarPixelДата: Понедельник, 22 Августа 2011, 12:46 | Сообщение # 26
старожил
Сейчас нет на сайте
Apati, может немного некорректно выразился, но об этом я и толкую. Если указать число, то ГМ это спокойно воспримет и определит выражение как истинное или ложное, а если использовать сравнение, то число уже не влияет на истинность или ложность, на это влияет оператор сравнения (то о чем писал Йакуд). Суть от этого особо не меняется, это два разных условия и оба они будут работать. smile

SalahAdDinДата: Понедельник, 22 Августа 2011, 13:03 | Сообщение # 27
постоянный участник
Сейчас нет на сайте
Quote (LunarPixel)
В ГМ такие правила.

Это не правила, это вольности. Просто возможность есть, но это не правило.
Quote (LunarPixel)
Да, я согласен, что это не совсем логично смотрится, но это есть и это факт. А ты этого факта, очевидно, не знал.

Я бы просто не додумался до такой степени извратить код. И это факт. То что это разрешено, не значит что это нужно или хоть как нибудь полезно.
Quote (LunarPixel)
И если уж говорить про логику, то все твои аналогии абсолютно нелогичны.

Они просто немного глубже, чем ты копал smile
Quote (Apati)
Оператор сравнения не прокатит за функцию?

Прокатит. Сравнивать все что не равно единице с единицей очень продуктивно. Индусы бы от зависти удавились, столько воды можно было бы добавить в код увеличив вес не напрягаясь о багах. Да-да, очень прокатит.
Quote (Apati)
Запомни, в ГМЛ нет значений true и false. Есть только константы (переменные не меняющие значения) true=1 и false=0.
Оператор If принимает ЧИСЛО, и если оно меньше 0.5, то условие считается не выполненным, а если >=0.5, то выполненным.
Оператор сравнения же возвращает 1 или 0:

Мальчишка, ты не внимательно читаешь. Пробуй еще. Есть ли в твоем примере что-то что противоречит моим словам?
И можно ли твой код записать так:
a=0
show_message(a);
a=1
show_message(a);
Смысл твоих танцев с бубном остается для меня загадкой.

Quote (Apati)
бла бла бла, это был ПРИМЕР, демонстрирующий, что сравнение разных чисел приводит к невыполнению условия.
И я прекрасно знаю, что такое условие всегда будет иметь один результат и в if такое пихать бессмысленно.

Тоесть ты все таки подтверждаешь что это глупость, впрочем о чем я твержу уже вторую страницу.


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета
ApatiДата: Понедельник, 22 Августа 2011, 13:10 | Сообщение # 28
заслуженный участник
Сейчас нет на сайте
Quote (SalahAdDin)
Смысл твоих танцев с бубном остается для меня загадкой.

Это тоже был пример, показывающий что возвращает оператор сравнения.
Quote (SalahAdDin)
Тоесть ты все таки подтверждаешь что это глупость

С точки зрения программирования - да, это быдлокод. С точки зрения демонстрации особенностей поведения языка - почему бы и нет?
SalahAdDinДата: Понедельник, 22 Августа 2011, 13:20 | Сообщение # 29
постоянный участник
Сейчас нет на сайте
Quote (Apati)
Это тоже был пример, показывающий что возвращает оператор сравнения.

А теперь посмотри внимательно что делал Йакуд, и ты поймешь где ты облажался. Типичный уход от изначальной темы, где спорить не с чем в тему которая никому не нужна, но где можно поюлить. То что ты мне пытаешься обьяснить очевидно, и я даже не думал спорить, но все равно я говорил не об этом. Ты прекрасно это знаешь.
Quote (Apati)
С точки зрения программирования - да, это быдлокод. С точки зрения демонстрации особенностей поведения языка - почему бы и нет?

С точки зрения программирования то что какой-то язык позволяет делать глупости абсолютно не значит что ты непременно должен их делать. Под любым предлогом. Радует уже то что ты согласен с принадлежностью такого кода.


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета
ApatiДата: Понедельник, 22 Августа 2011, 13:44 | Сообщение # 30
заслуженный участник
Сейчас нет на сайте
Quote (SalahAdDin)
То что ты мне пытаешься обьяснить очевидно, и я даже не думал спорить

Тебе я пытался объяснить только то, что данные коды предназначены для демонстрации, а не для реального программирования.
Пример с возвращениями оператора присваивания предназначен был для LunarPixel'а.
И только первый пример со сравнениями чисел был для Йакуда, который недоумевал по поводу:
Quote
Но меня всегда поражала такая особенность, что если значение в условии >= 0.5 то возвращается всегда true и условие выполняется. Но если это же значение сравнивать с true, то вернется ложный результат и условие перейдет на следующий этап..

Quote (SalahAdDin)
С точки зрения программирования то что какой-то язык позволяет делать глупости абсолютно не значит что ты непременно должен их делать. Под любым предлогом.

А вот тут не соглашусь. Копание в "глупостях" позволяет лучше понять язык программирования и освоить его тонкости.
SalahAdDinДата: Понедельник, 22 Августа 2011, 14:04 | Сообщение # 31
постоянный участник
Сейчас нет на сайте
Quote (Apati)
А вот тут не соглашусь. Копание в "глупостях" позволяет лучше понять язык программирования и освоить его тонкости.

Согласен, нужно знать какие глупости существуют, чтобы их не делать в дальнейшем. Но уперто настаивать на том что вот эта фигня вполне нормальная, потому что работает, и не важно что работает она через задницу, и понять что она делает с первого (иногда и с десятого) раза - сложно. Но это уже разговор не о тебе. Заканчиваю флейм.

Добавлено (22.08.2011, 14:04)
---------------------------------------------

Quote (Apati)
Пример с возвращениями оператора присваивания предназначен был для LunarPixel'а.

Я немного потерялся в цитатах, прошу прощения. Точно не мне smile


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета
михаДата: Понедельник, 22 Августа 2011, 15:02 | Сообщение # 32
почти ветеран
Сейчас нет на сайте
Quote
Эх... не буду тратить свое время на эту бессмыслицу, да и флуд уже развели

Присоединяюсь
ЙакудДата: Понедельник, 22 Августа 2011, 16:14 | Сообщение # 33
участник
Сейчас нет на сайте
Ооо даа.. Развели тут спор какой-то. А я всего лишь хотел, чтобы вы не допускали таких "досадных" ошибок, т.к. если какая-либо функция возвращает значения fn >=0.5 && fn != 1, то не стоит сравнивать результат с true. У многих программистов (в частности в ГМЛ) есть небольшая особенность. Они сравнивают результат выполнения функции с "истино/ложно". Небольшой пример:

Code
if(fn()==true)
    ...
else
    ...

В таком случае условие выполнится только при значениях результата выполнения функции равному единице. А если сделать так:
Code
if(fn())
    ...
else
    ...

То условие будет выполнятся при значениях fn() >= 0.5
Данное правило "работает" ТОЛЬКО для GML. А то, о чем вы завели свою дискуссию, не имеет сходства с тем, что я хотел донести. Это все.


"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0


Сообщение отредактировал Йакуд - Понедельник, 22 Августа 2011, 16:15
SalahAdDinДата: Понедельник, 22 Августа 2011, 18:59 | Сообщение # 34
постоянный участник
Сейчас нет на сайте
Quote (Йакуд)
если какая-либо функция возвращает значения fn >=0.5 && fn != 1

Если функция возвращает не булевые и/или пустышку, об этом обязательно будет сказано в справке. Поэтому "досадные" ошибки в основном возникают у таких "самоучек", которые ее в глаза не видели, чем собственно и гордятся.
Если же функция самописная (читай - скрипт), то написавший ее должен как бы сам понимать, что более уместно сравнивать. Этот вариант я вообще не рассматриваю, слишком специфично, да и не об этом мы сейчас.


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Проверка объекта
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг