Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср апр 24, 2024 13:06

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 110 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 14:26 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Обещанный код:
Код:
: Close_gate
4 0 DO
16384 IOXSET
5 TICKS
16384 IOXRST
10 TICKS
LOOP
;

: Open_gate
4 0 DO
1 IOXSET
5 TICKS
1 IOXRST
10 TICKS
LOOP
;

: Hide_bridge
6 0 DO
4 IOXSET
5 TICKS
4 IOXRST
10 TICKS
LOOP
28 0 DO
8 IOXSET
5 TICKS
8 IOXRST
10 TICKS
LOOP
;

: Install_bridge
20 0 DO
32 IOXSET
5 TICKS
32 IOXRST
10 TICKS
LOOP
6 0 DO
16 IOXSET
5 TICKS
16 IOXRST
10 TICKS
LOOP
;

VARIABLE status

: Gate_control
0 status !
BEGIN
IOX@ 2 = IF
status 0 = IF
0 status !
Open_gate
Install_bridge
ELSE
1 status !
Close_gate
Hide_bridge
THEN
THEN
AGAIN
;


АПД: Спойлеры-то, оказывается, не работают о_0

Каков был замысел: Комп крутит бесконечный цикл, проверяя, не поступил ли сигнал на контрольный провод. Если сигнал поступил, проверяется статус ворот и моста, (для этого введена переменная) закрывает\открывает их и отправляется на очередной круг, чтобы при следующем сигнале, наоборот, открыть\закрыть. Вот. Все ли я правильно сделал? Слова на открытие\закрытие ворот и моста поодиночке работают, уже проверено. Интересует контрольная прога, последняя которая.

АПД2: Уже нашел ошибку: Блоки кода на срабатывание и несрабатывание второго условия, похоже, нужно поменять местами...

Вот так:
Код:
: Gate_control
0 status !
BEGIN
IOX@ 2 = IF
status 0 = IF
1 status !
Close_gate
Hide_bridge
ELSE
0 status !
Open_gate
Install_bridge
THEN
THEN
AGAIN
;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 14:47 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Tongor
Все таки настоятельно рекомендую привести этот форт к общепринятым стандартам. Иначе он будет "сам в себе", что значительно затруднит его развитие и расширение за счет стандартных библиотек.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 14:51 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Знать бы еще, как... Тут вопрос, скорее к автору мода - Eloraam =)
Я ради интереса залез в архивы с кусками мода - там все упаковано в файлы *.class, и как в них копаться - решительно непонятно.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 14:55 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Tongor писал(а):
16384 IOXSET

а 16-ричные числа не понимает? как-то оно коряво смотрится в DECIMAL

Tongor писал(а):
status 0 = IF

вот тут вобщем-то не нужно сравнение с нулем, т.е нужно просто поменять код в ветках IF и ELSE местами.
И, все-таки, не стоит пренебрегать форматированием текста 8)
а впрочем, выглядит ничего 8)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 15:15 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
В обчем, как бы я ни крутился, мой цикл почему-то не хочет воспринимать изменение переменной, и все время гонит по одному пути. Обидно.

АПД:

mOleg писал(а):
Tongor писал(а):
16384 IOXSET

а 16-ричные числа не понимает? как-то оно коряво смотрится в DECIMAL

HEX понимает, но вот лично мне удобнее DECIMAL, как-то так =)

Tongor писал(а):
status 0 = IF

вот тут вобщем-то не нужно сравнение с нулем, т.е нужно просто поменять код в ветках IF и ELSE местами.
И, все-таки, не стоит пренебрегать форматированием текста 8)
а впрочем, выглядит ничего 8)


Можно поподробнее?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 15:23 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Tongor писал(а):
Можно поподробнее?

ну, действия за 
IF выполняются в случае, если на вершине стека данных лежит число отличное от 0
ELSE действия, если это число равно нулю
THEN

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 15:27 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
Tongor писал(а):
Можно поподробнее?

ну, действия за 
IF выполняются в случае, если на вершине стека данных лежит число отличное от 0
ELSE действия, если это число равно нулю
THEN


Эммм...

Код:
status (<>0) IF
<code1>
ELSE (Выполнится, если статус таки = 0)
<code2>
THEN


Так? Я правильно понял?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 15:36 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Tongor писал(а):
Так?

да

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 16:08 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Я немного модифицировал свой код: Добавил вывод значения переменной до и после смены значения, а также вывод текущего действия. В общем, мой цикл упорно не хочет уходить на второе сравнение, и всегда выполняет блок второго IF, независимо от.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 16:17 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Tongor писал(а):
IOX@ 2 = IF

у меня вот вопрос закрался, вы случайно не второй бит проверить собрались? (в смысле установлен он или нет).
потому как, если именно бит надо проверить, то '=' тут не катит, а надо 'AND':
IOX# 2 AND IF ...

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 16:19 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
Tongor писал(а):
IOX@ 2 = IF

у меня вот вопрос закрался, вы случайно не второй бит проверить собрались? (в смысле установлен он или нет).
потому как, если именно бит надо проверить, то '=' тут не катит, а надо 'AND':
IOX# 2 AND IF ...


Ну вроде того. Это условие того, проходит или нет сигнал по 2 проводу (он на 2 бит записан)

Спасибо за совет, сейчас перепишу и посмотрю.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 16:24 
Не в сети

Зарегистрирован: Ср июл 05, 2006 14:44
Сообщения: 236
Благодарил (а): 0 раз.
Поблагодарили: 7 раз.
проверьте также здесь

status 0 = IF или здесь status (<>0) IF

status это переменная и ее значение узнать надо так status @
а то может быть Вы адрес переменной сравниваете с равенством нулю или не равенством :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 16:32 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
еще вопрос у меня появился.
вы как отлаживаете код?
можно ли с вашей форт-системой работать в консоли?
ваш код:
Tongor писал(а):
: Gate_control
0 status !
BEGIN
IOX@ 2 = IF
status 0 = IF
1 status !
Close_gate
Hide_bridge
ELSE
0 status !
Open_gate
Install_bridge
THEN
THEN
AGAIN
;

я бы все же попытался оформить иначе:
: some ( --> ) 
status IF Open_gate Install_bridge 0 status !
ELSE Close_gate Hide_bridge 1 status !
THEN ;

: sometng ( u --> ) 2 AND IF some THEN ;

: Gate_control ( --> ) 0 status ! BEGIN IOX@ someting AGAIN ;

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 16:48 
Не в сети

Зарегистрирован: Сб ноя 03, 2012 19:13
Сообщения: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Alex писал(а):
проверьте также здесь

status 0 = IF или здесь status (<>0) IF

status это переменная и ее значение узнать надо так status @
а то может быть Вы адрес переменной сравниваете с равенством нулю или не равенством :)


*Facepalm.jpg* Я идиот. Пристрелите меня кто-нибудь, пожалуйста.

Алекс, вы гений. Все заработало так, как надо. Я действительно считывал адрес переменной вместо значения.

mOleg писал(а):
еще вопрос у меня появился.
вы как отлаживаете код?
можно ли с вашей форт-системой работать в консоли?
ваш код:
Tongor писал(а):
: Gate_control
0 status !
BEGIN
IOX@ 2 = IF
status 0 = IF
1 status !
Close_gate
Hide_bridge
ELSE
0 status !
Open_gate
Install_bridge
THEN
THEN
AGAIN
;

я бы все же попытался оформить иначе:
: some ( --> ) 
status IF Open_gate Install_bridge 0 status !
ELSE Close_gate Hide_bridge 1 status !
THEN ;

: sometng ( u --> ) 2 AND IF some THEN ;

: Gate_control ( --> ) 0 status ! BEGIN IOX@ someting AGAIN ;

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


Большое спасибо за совет, я сам над этим думал, но...
Разбивать имело бы смысл, если бы прога была на 15 листов, или один терминал выполнял бы кучу задач. А так он однозадачен, и определенные таким образом слова все равно будут применяться не больше одного раза. А записывать дискеты я еще не научился.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: FORTH в игре, или Red Power 2 Control для Minecraft.
СообщениеДобавлено: Пн ноя 05, 2012 20:51 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Tongor писал(а):
Разбивать имело бы смысл, если бы прога была на 15 листов, или один терминал выполнял бы кучу задач. А так он однозадачен, и определенные таким образом слова все равно будут применяться не больше одного раза. А записывать дискеты я еще не научился.

Дело тут не в количестве применений одного слова, а читабельности определений. Это в значительной степени облегчает понимание кода, его отладку и уменьшает вероятность ошибки. Слово — это прежде всего маленький логический элемент. А то, что его можно применять много раз — лишь дополнительное свойство, но никак не первичное. Слова объединяются во фразы(строка), фразы в предложения (слово), Предложения в абзац(файл, модуль). И так далее.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 110 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 8  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB