RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2424267 views

Aleks Versus Moderator 23.05.2015 07:36 (10 years ago)

Талер,
можешь воспользоваться библиотечкой easy.math.

Талер,
приведи конкретную задачу, тогда я объясню, как она решается с помощью множителя.

До тех пор, мне добавить нечего, всё написано по приведённой ссылке.

пожалуйста!
Задача:
вычислить растояние между двумя ячейками.
(не квадрат расстояния, а расстояние)

Axil,
это не задача, это часть задачи. Задачей является то, для чего нужно вычислять расстояние.

Тут чуть выше задавали вопрос про время, у меня возник такой же… воспользовался советом Storm’a сделав дополнительную локацию “Статус” и там задал время:

время=время+5 
дни=время/(24*60) 
часы=(время-дни*24*60)/60 
минуты=время-часы*60-дни*24*60

Как сделать отображение месяцев и дней недели? чтобы выглядело примерно так - 3 февраля Понедельник 23:57 ?
Опять же - если возможность отображать минуты, если они менее 10 с нулём спереди? т.е время - не 23:5, 23:05 ?

DaRkNeSSxSiTH,

! Инициализация при старте игры.
$month_name[] = 'января'
$month_name[] = 'февраля'
...
$month_name[] = 'декабря'

$weekday_name[] = 'Понедельник'
$weekday_name[] = 'Вторник'
...
$weekday_name[] = 'Воскресенье'

! Вычисляем текущий месяц.
month = (days/30) MOD 12
month_day = days MOD 30 + 1

! Вычисляем текущий день недели.
weekday = days MOD 7

! Добавляем ноль к минутам, если требуется.
$min = IIF(min < 10, '0' + STR(min), STR(min))

! Выводим дату и время.
'<<month_day>> <<$mohtn_name[month]>> <<$weekday_name[weekday]>> <<hour>>:<<$min>>'

у меня получилось что -то такое

$month_name[1] = 'января' 
$month_name[2] = 'февраля'
$month_name[3] = 'марта'
$month_name[4] = 'апреля'
$month_name[5] = 'мая'
$month_name[6] = 'июня'
$month_name[7] = 'июля'
$month_name[8] = 'августа'
$month_name[9] = 'сентября'
$month_name[10] = 'октября'
$month_name[11] = 'ноября'
$month_name[12] = 'декабря'
month = (days/30) MOD 12 
month_day = days MOD 30 + 1 
$weekday_name[1] = 'Понедельник'
$weekday_name[2] = 'Вторник'
$weekday_name[3] = 'Среда'
$weekday_name[4] = 'Четверг'
$weekday_name[5] = 'Пятница'
$weekday_name[6] = 'Суббота'
$weekday_name[7] = 'Воскресение'
weekday = days MOD 7
время=время+2 
days=время/(24*60) 
hour=(время-days*24*60)/60 
min=время-hour*60-days*24*60 
$min = IIF(min < 10, STR(min), '0' + STR(min))
деньги = 1000
clr 
p 'Деньги:<<деньги>> рублей
Время: '<<month_day>> <<$mohtn_name[month]>> <<$weekday_name[weekday]>> <<hour>>:<<$min>>'

Что я не так делаю?

DaRkNeSSxSiTH,
1. Ты проставил индексы элементам массива, а индексы элементов массива в моём коде должны начинаться с нуля. У тебя они начинаются с единицы.

Сделай запись как в моём коде, без указания индекса, тогда они будут нумероваться с нуля. Или просто перепиши индексы, для месяцев от 0 до 11, для дней недели от 0 до 6.

2. Сначала должно быть вычислено общее количество дней (переменная “days”), а потом уже зависящие от неё значения “месяц” (”month”), “число месяца” (”month_day”), “день недели” (”weekday”).

У тебя наоборот. Потому и не работает.

Сделал по-другому

showinput 0
USEHTML = 1
время=время+2
min=время-hour*60-days*24*60 
$min = IIF(min < 10, STR(min), '0' + STR(min))
hour=(время-days*24*60)/60 
days=время/(24*60)
weekday = days MOD 7
month = (days/30) MOD 12 
month_day = days MOD 30 + 1  
$month_name[0] = 'января' 
$month_name[1] = 'февраля'
$month_name[2] = 'марта'
$month_name[3] = 'апреля'
$month_name[4] = 'мая'
$month_name[5] = 'июня'
$month_name[6] = 'июля'
$month_name[7] = 'августа'
$month_name[8] = 'сентября'
$month_name[9] = 'октября'
$month_name[10] = 'ноября'
$month_name[11] = 'декабря'
$weekday_name[0] = 'Понедельник'
$weekday_name[1] = 'Вторник'
$weekday_name[2] = 'Среда'
$weekday_name[3] = 'Четверг'
$weekday_name[4] = 'Пятница'
$weekday_name[5] = 'Суббота'
$weekday_name[6] = 'Воскресение'
деньги = 1000
clr 
p 'Деньги:<<деньги>> рублей
Время: '<<month_day>> <<$mohtn_name[month]>> <<$weekday_name[weekday]>> <<hour>>:<<$min>>'

Не работает… Может я тебя как-то не так понял и не правильно изменил… Я новичёк и только только разбираюсь в программе…

DaRkNeSSxSiTH,
Позовете меня тогда, когда будет готов верный код

Как сделать чтобы на выбраный предмет в инвентаре можно было кликнуть еще раз?
Нужно либо как-то убрать выбор, или перерисовать окно предметов.
можно сделать так:
DELOBJ ‘предмет’
ADDOBJ ‘предмет’
работать будет как надо, но тогда этот предмет добавится в конец списка, а это плохо.
$SELOBJ = ‘’ не работает

Axil:

Как сделать чтобы на выбраный предмет в инвентаре можно было кликнуть еще раз?
Нужно либо как-то убрать выбор, или перерисовать окно предметов.
можно сделать так:
DELOBJ ‘предмет’
ADDOBJ ‘предмет’
работать будет как надо, но тогда этот предмет добавится в конец списка, а это плохо.
$SELOBJ = ‘’ не работает

А индексы для чего?

DaRkNeSSxSiTH,
сначала у тебя должен рассчитываться параметр “days”, потом зависящий от него “hour”, потом в свою очередь зависящий от “hour” параметр “min”. А у тебя всё наоборот.

Oliver:

А индексы для чего?

А как узнать индекс выделенного предмета? $SELOBJ возвращает имя, а не индекс.

переделал так…

время=время+2
days=время/(24*60)
hour=(время-days*24*60)/60 
min=время-hour*60-days*24*60 
$min = IIF(min < 10, STR(min), '0' + STR(min))
weekday = days MOD 7
month = (days/30) MOD 12 
month_day = days MOD 30 + 1  
$month_name[0] = 'января' 
$month_name[1] = 'февраля'
$month_name[2] = 'марта'
$month_name[3] = 'апреля'
$month_name[4] = 'мая'
$month_name[5] = 'июня'
$month_name[6] = 'июля'
$month_name[7] = 'августа'
$month_name[8] = 'сентября'
$month_name[9] = 'октября'
$month_name[10] = 'ноября'
$month_name[11] = 'декабря'
$weekday_name[0] = 'Понедельник'
$weekday_name[1] = 'Вторник'
$weekday_name[2] = 'Среда'
$weekday_name[3] = 'Четверг'
$weekday_name[4] = 'Пятница'
$weekday_name[5] = 'Суббота'
$weekday_name[6] = 'Воскресение'
деньги = 1000
clr 
p 'Деньги:<<деньги>> рублей'
'Время: <<month_day>> <<$mohtn_name[month]>> <<$weekday_name[weekday]>><<hour>>:<<$min>>'

Log in or Register to post comments.