als wrote: 15 Jun 2021, 11:23procedure CURSOR(x,y:Byte);
вместо Byte то надо INT8 ?
или INT8 тоже вроде "минусовый"...
слушай, что-то я запутался...
ты конечно объяснял это где-то, но то уже найти где это, очень сложно!
Объясни пожалуйста еще раз да я пропишу (и буду прописывать) в модуль(модули) раз и навсегда!
SYSTEM.BYTE - тип нестандартный для Оберона-3, беззнаковый и системный, вмещает {0..255}
Соответственно, для его использования надо импортировать модуль 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, даже сдвиги. Если бы я даже захотел сделать на Обероне иначе, то нижний уровень (Си) мне бы этого просто не позволил.
als wrote: 15 Jun 2021, 12:00is_only1 := ~is_only1;
понимать как
is_only1 := not is_only1;
Ну да.
als wrote: 15 Jun 2021, 13:30Не--е-е-е-е
текст тут надо сплошным выводить! Без всяких понтов типа рамочек!
Да пожалуйста.
Разобрался с кодировками русских букв в XDev? (директива (*$866*) )
als wrote: 15 Jun 2021, 16:46надо все таки выводить графикой, - поле и текстом - кол-во лис!
Можно выводить графикой кол-во лис. Нарисовать десятку.
Видишь, я игру не создавал, а портировал. Могу перенаправить твой вопрос автору оригинала - Савелию Иванкову, зачем он так сделал.