Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Сергей

Pages: 1 ... 9 10 [11]
151
Как насчет нее? http://ru.wikipedia.org/wiki/Тернарная_условная_операция
Очень удобно, не надо лишних условий и временных переменных городить. Постоянно юзаю.

Пример:

Code: [Select]
$value = (($some_bool = 1) | ($second_bool = 1))  ? "Yes" : " No"

152
Oraven, да, ты прав, это объявление лишнее. Забыл удалить.
Кстати, интерпретатор на эту скобку не ругнулся. Я её не заметил вообще.  ???
Обновил.

153
Удобство же. Так сказать функциональный "сахар". Реализация не думаю что прям такая сложная, sin и cos же есть.
Примеры для min и max вот так вот сходу привести сложно, но они бы пригодились. floor и ceil и приходится вот такими не очевидными мерами эмулировать.

А вообще запили полноценные пользовательские функции с возвращаемыми значениями, тогда это все можно сторонним инклудом реализовать.

154
Написал свой вариант, более быстрый и оптимизированный.
Как использовать:

Code: [Select]
#include "MOVE2.cms"


$MOVE2_END_X = 2 // Конечная координата X
$MOVE2_END_Y = 2 // Конечная координата Y
$MOVE2_SPEED = 2 // За сколько секунд курсор пройдет путь
GOSUB(MOVE2) // Вызываем подпрограмму

waitms(1000) // Не обязательно

$MOVE2_END_X = 1000
$MOVE2_END_Y = 1000
$MOVE2_SPEED = 0.5 // дробные числа работают
GOSUB(MOVE2)

...

Т.е. подключаем инклуд, задаем координаты и скорость через глобальные переменные и вызываем подпрограмму MOVE2. Быстро и просто, код не засоряется лишним мусором. Все переменные в своем именном пространстве, можно не беспокоится что что-то где-то совпадет.

UPD: исправил скобку и лишнее объявление переменных.

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

Для начала:
atan2($x, $y) - Для вычисление угла между точками. Использование: $angle = atan2($x1-$x2, $y1-$y2)
tan($angle) - Тангенс. Косинус и синус есть, а без тангенса куда?
atan($value) - Обратный тангенс. Как в лучших языках Европы.
acos($value) - Обратный косинус.
asin($vlaue) - Обратный синус.

C тригонометрическими разобрались. Теперь алгебраические:
abs($value) - Модуль числа. Очень удобно вычислить его одной функцией.
floor($value, $prec) - Округляет число вниз. round есть, а floor нету, как же так? $prec - точность как и в round($value, $prec).
ceil($value, $prec) - Округляет число вверх. Тоже в дополнение к round. $prec - точность.
min($value1, $value2[, ...]) - Возвращает самое маленькое число из всех переданных аргументов.
max($value1, $value2[, ...]) - Возвращает самое большое число из всех переданных аргументов.

Необязательные функции, наличие которых не критично, но хотелось бы:
pow($value, $exponent) - Возведение числа в степень.
nthrt($value, $n) - $n-ный корень числа. Вроде как и не нужен, но если вдруг понадобится то придется ужасные велосипеды городить.
ln($value) - Натуральный логарифм. Не знаю зачем он тут может пригодится, но во многих языках есть.

Так же в добавок ко всему этому хотелось бы в файле констант по умолчанию видеть:
PI - Число пи.

Необязательно:
PI_2 - Половина числа пи.
SQRT2 - Квадратный корень из двух. Используется достаточно часто, хоть можно вычислять напрямую с помощью функции sqrt.
SQTR1_2 - Квадратный корень из 1/2. Ещё может быть вычислен как sin(45). Из той же оперы.

156
Оформили бы это в подпрограмму.

Кстати, подпрограммы можно сувать в инклуды и оттуда их вызывать?
Это ведь можно было бы целые библиотеки запиливать! Хотя, судя по справке, инклуд просто останавливает родительский скрипт, выполняется, и затем включает родительский скрипт обратно.
Если бы вместо этого препроцессор сначала собирал все в один большой файл, то можно было бы библиотеки делать.

И у вас скрипты передвигают курсор со скоростями по осям. При этом относительная скорость между точками будет больше чем скорость перемещения. Это приводит к тому, что если курсор двигается не ровно под 45 градусов, то до одной оси он дойдет быстрее. Конечно это работает, но выглядит не очень круто. Лучше бы сделать чтобы он двигался с одинаковой скоростью по ровно линии.
Смотрите на рисунок, там немного попытался разъяснить к чему я.

Хотя чтобы узнать угол между точками нужна фун-я atan2, а тут её нет. Только базовые sqrt, sin и cos. Надо ждать от автора расширенной поддержки математических функций.

UPD: Подпрограммы из инклудов нормально вызываются, это я туплю.

157
Использование / Re: Гнев Богов
« on: October 17, 2012, 09:40:36 PM »
Кстати, не забудь поставить кол-во цветов в скрине. Чтобы небольшое изменение тона в иконке не продало что не нужно.

158
Конечно увеличилось, ведь для перемещения нужно время! ;D Или ты хочешь какой-нибудь асинхронный метод для этого? Сложно подобное будет автору реализовать.

Кстати, раз уж написал, то поделись инклудом! Все, думаю, тебе спасибо скажут.  ::)

159
Архив / Re: Ошибка в справке
« on: October 17, 2012, 02:22:05 AM »
Ещё в справке на странице "Начало" ошибка, ссылка "Приложение 1 (коды клавиш) " не работает, ведет на несуществующую страницу.

Pages: 1 ... 9 10 [11]