PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
FoxHunt на P_EMUL2021 http://pc01.lviv.ua/forum/viewtopic.php?f=20&t=402 |
Page 2 of 2 |
Author: | als [ 15 Jun 2021, 15:26 ] |
Post subject: | Re: FoxHunt на P_EMUL2021 |
Attachment:
PROCEDURE Menu;Ну как-то приблизительно так Code: PROCEDURE Menu; VAR key: byte; BEGIN REPEAT m.CLS;// m.PUTCHAR(m.ClrScr); (* Clear screen *) m.CURSOR(7, 9); m.PUTSTR('F O X H U N T !'+#0); m.CURSOR(5, 11); m.PUTSTR('1. ИГРАТЬ'+#0); m.CURSOR(5, 12); m.PUTSTR('2. ПОМОЩЬ'+#0); m.CURSOR(5, 13); m.PUTSTR('3. НАСТРОЙКИ'+#0); m.CURSOR(0, 19); m.PUTSTR('АВТОР ИДЕИ: А. НЕСЧЕТНЫЙ, 1985'+#0); m.CURSOR(0, 20); m.PUTSTR('ZX - РЕАЛИЗАЦИЯ BY YPRIT , 2020'+#0); m.CURSOR(0, 21); m.PUTSTR('РК86 - ПОРТ BY OLEG N.CHER, 2021'+#0); m.CURSOR(0, 22); m.PUTSTR('ПК-01"Львов" - ПОРТ BY ALS, 2021'+#0); REPEAT // m.RANDOMIZE(seed); INC(seed); key := m.GETKEY; UNTIL (key >=$31 {'1'}) and (key <=$33 {'3'}); Beep; // m.CURSOR(22, SHORT(ORD(key) - 38)); // m.PUTSTR(7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX // +7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX+7FX); // m.WAIT(1000); (* Delay *) CASE key OF {'2'}$32:Help; {'3'}$33:Settings; ELSE END; UNTIL key = $31; END;/// Menu; |
Author: | als [ 15 Jun 2021, 16:46 ] |
Post subject: | Re: FoxHunt на P_EMUL2021 |
НЕ! Ты знаешь. надо все таки выводить графикой, - поле и текстом - кол-во лис! соответственно мне её по своему надо переписывать "поглядывая" на твои исходники! да и если поле 11х11 (странно почему не 10х10 или то ты максимально возможное ) то колво лис должно быть не более 9! чтобы одним числом указывать! Ну пока пока пауза и сосредоточусь по другому это всё делать! Буду делать пробы графики... с текстом... кубики... и т.д. |
Author: | Zorko [ 17 Jun 2021, 06:50 ] |
Post subject: | Re: FoxHunt на P_EMUL2021 |
Quote: procedure CURSOR(x,y:Byte); SYSTEM.BYTE - тип нестандартный для Оберона-3, беззнаковый и системный, вмещает {0..255}вместо Byte то надо INT8 ? или INT8 тоже вроде "минусовый"... слушай, что-то я запутался... ты конечно объяснял это где-то, но то уже найти где это, очень сложно! Объясни пожалуйста еще раз да я пропишу (и буду прописывать) в модуль(модули) раз и навсегда! Соответственно, для его использования надо импортировать модуль SYSTEM. Так сделано, чтобы его не юзали где попало и почём зря. Ну да это долгий разговор. INT8 тип несистемный, вмещает {-128..127}. Прямое использование и смешивание этих типов в выражениях неявно вычисляется в пределах типа INT16 (со знаком). Это стандартный подход Си, чтобы не терять разрядов при вычислениях (например: (255+1)*3 не приведёт к 0*3, т.к. переполнение не случится. Так сделано по многим причинам. Но это же и проблема для слабых процов. Я к тому, что смешивать в выражении типы SYSTEM.BYTE и INT8 ты конечно можешь, но результат надо вмещать в тип INT16, а если его надо присвоить типу SYSTEM.BYTE, то возможны потери разрядов (логично). То же самое с INT8, поэтому в Обероне традиционно применяется встроенная операция усечения SHORT, пример: int8 := SHORT(int16 + int16 + byte); Здесь SHORT даёт понять, что вероятна потеря разрядов. Кстати, в Ofront'е+ есть возможность внедрить в код проверки на выход за пределы разрядности. Притом этот код не обязательно отладочный, он может остаться и в рабочей программе. Для надёжности. Но это конечно не про восьмибитки. Ты юзай SYSTEM.BYTE там, где допускаются беззнаковые байты, особенно для системных нужд. Я его активно юзаю в качестве параметров для системных функций. Здесь явный SHORT не нужен, поэтому код не смотрится загромождённым. А тип INT8 нужен там, где нужно хранить числа со знаком. Но все вычисления всё равно происходят в рамках INT16, даже сдвиги. Если бы я даже захотел сделать на Обероне иначе, то нижний уровень (Си) мне бы этого просто не позволил. Quote: is_only1 := ~is_only1; Ну да.понимать как is_only1 := not is_only1; Quote: Не--е-е-е-е Да пожалуйста.текст тут надо сплошным выводить! Без всяких понтов типа рамочек! Разобрался с кодировками русских букв в XDev? (директива (*$866*) ) Quote: надо все таки выводить графикой, - поле и текстом - кол-во лис! Можно выводить графикой кол-во лис. Нарисовать десятку.Видишь, я игру не создавал, а портировал. Могу перенаправить твой вопрос автору оригинала - Савелию Иванкову, зачем он так сделал. |
Author: | Zorko [ 17 Jun 2021, 07:04 ] |
Post subject: | Re: FoxHunt на P_EMUL2021 |
Quote: Типы Типа strings255 в Обероне нет. Можно определить:char ? Byte ? string255 ? в процедурах procedure PUTCHAR(ch:char); procedure CURSOR(x,y:Byte); procedure PUTSTR(s:string255); С таким проблем в Обероне не будет ? Можна такие типы в входящими в процедуры применять ? и т.д. Code: IMPORT SYSTEM; TYPE string255ptr = POINTER TO ARRAY 256 OF CHAR; (* это указатель! *) string255 = ARRAY 256 OF CHAR; (* это строка! *)Вах, сейчас опять скажешь, что я пытаюсь тебя запутать. Ты, в общем, учитывай, что если в PUTSTR будет параметр-чисто строка, то будет и операция копирования строки, т.е. переброса её из одного куска памяти в другой. А если указатель - то такой операции не будет. Так что юзай тут указатель. У нас есть такой системный тип, я тебе показал как он описывается выше. Он совместим по передаче параметров с любой строкой. CHAR и BYTE - да, такие же, как в Дельфи. Code: Type INT8=Byte; (* Неа. INT8 = -128..127; или Shortint, раз он -128..127 signed 8-bit *) INT16=Word; (* Неа. INT16 = -32768..32767; или Smallint, раз он -32768..32767 signed 16-bit *) Quote: А тогда к какому типу у обероне приравнивать дельфийский Word ? В Обероне такого типа нет.Quote: ...что можна прописать аналогами и как из того что может очень пригодится ? Ну есть ещё INT32 и INT64, но зачем они. Смысла нет.Quote: "repeat .... until" - в Обероне без проблем ? В таком виде как написано в FoxHunt.dpr Да.в процедуре PrintField; ? Quote:
А что это за.... Да.Flag = 1CX; (* 9X, 0BX, 1EX *) Fox = 1DX; (* 9X, 0EX, 1EX *) Это равносильно Flag = $1C; Fox = $1D; Quote:
вот еще дельфя не понимает Нет. Индексы в Обероне всегда от 0. Надо так:field, number: ARRAY Xm, Ym OF INT8; opened, marked: ARRAY Xm, Ym OF BOOLEAN; т.е. в дельфе надо указывать как-то так: field, number: ARRAY[1..Xm,1..Ym]OF INT8; opened, marked: ARRAY[1..Xm,1..Ym] OF BOOLEAN; Это верно ? Code: field, number: ARRAY[0..Xm-1,0..Ym-1]OF INT8; opened, marked: ARRAY[0..Xm-1,0..Ym-1] OF BOOLEAN; Quote:
Понятное дело всё равно будут разные "приколы" типа Ну наверное.в IF .... THEN .... ELSE ... END; что если в дельфи несколько команд после "THEN" и/или "ELSE" то надо в "BEGIN... END;", а Обероне это вроде как по другому.... с одним "END;" без всяких "THEN BEGIN" и "ELSE BEGIN"... Но согласись что для портации, переброски из Дельфи в оберон, это всё такие мелочи.... что и разговаривать не стоит за них! Возможно, стоит потом написать препроцессор, переводящий одно в другое. |
Author: | als [ 17 Jun 2021, 10:54 ] |
Post subject: | Re: FoxHunt на P_EMUL2021 |
Попытки FoxHunt писать с расчётом "переброски" (компиляции в ЛВТ) на XDev прекращены! Далее, коль уже начал FoxHunt, буду писать её с расчётом "переброски" (компиляции в ЛВТ) на МАДЛ01! |
Author: | DenVW [ 19 Mar 2024, 12:31 ] |
Post subject: | Re: FoxHunt на P_EMUL2021 |
Понимаю вашу ситуацию. Позвольте мне предложить вам план действий для реализации вашей идеи. 1. **Понимание FoxHunt для РК86:** Вам нужно изучить игру FoxHunt для РК86, чтобы понять её основные механизмы, функциональность и структуру программы. 2. **Понимание P_EMUL2021:** Изучите возможности и ограничения P_EMUL2021, а также его совместимость с программами, написанными для РК86. Проведите тестирование на простых программах, чтобы понять, как он взаимодействует с кодом и какие функции поддерживает. 3. **Адаптация FoxHunt для P_EMUL2021:** Попробуйте запустить игру FoxHunt в P_EMUL2021. Возможно, вам придется внести некоторые изменения в код, чтобы он корректно работал в среде эмулятора. Это может включать в себя исправление синтаксических ошибок, обновление вызовов API и т. д. 4. **Тестирование и отладка:** После адаптации кода FoxHunt для P_EMUL2021, тщательно протестируйте его, чтобы убедиться, что игра работает правильно и не возникает непредвиденных ошибок. Проведите отладку, если необходимо. 5. **Перенос в XDev:** Когда игра успешно работает в P_EMUL2021, вы можете попытаться скомпилировать её в XDev для ПК-01. Проведите тестирование в XDev, чтобы убедиться, что игра работает корректно и стабильно. 6. **Окончательная компиляция:** После успешного тестирования в XDev вы можете провести окончательную компиляцию игры и получить готовый к запуску ЛВТ-файл. 7. **Обратная связь:** Поделитесь своими результатами и опытом с сообществом. Это поможет другим пользователям лучше понять, как использовать P_EMUL2021 для разработки программ для ПК-01. |
Page 2 of 2 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |