Цитата Сообщение от AzAtom Посмотреть сообщение
Ещё хорошо бы спектрум-специфические функции реализовать в отдельном модуле, функции работы со спрайтами, с экраном, вывод звука, ввод с клавиатуры. И тогда мы могли бы назвать модули одинаково и можно будет в дельфи компилировать под windows, в турбопаскаль компилировать под DOS, а в ZX Like Pascal компилировать под спектрум и всё это вообще без изменения кода.
Это я изначально не планировал, думал только под Спектрум. Сейчас Oleg N.Cher поругается.

Цитата Сообщение от AzAtom Посмотреть сообщение
Andrew771, можешь расписать принцип работы функции MapSearch?
В мануале описан, цитирую:
MapSearch(<x>,<y>,<id element>,<id condition>,<distance>,<value variable>,<x variable>,<y variable>)

Поиск элемента (значения клетки) на карте вокруг исходной клетки <x>,<y> карты. Параметры карты должны быть предварительно заданы в операторе MapSet.
<x> - горизонтальная координата исходной клетки карты, может быть <arithmetic expression>.
<y> - вертикальная координата исходной клетки карты, может быть <arithmetic expression>.
<id element> - значение элемента (клетки карты), которое необходимо найти, может быть <arithmetic expression>.
<id condition> - условие поиска элемента (0 – равно значению элемента, 1 – не равно значению элемента, 2 – меньше значения элемента, 3 – больше или равно значению элемента), может быть <arithmetic expression>.
<distance> - расстояние в клетках от исходной клетки карты, может быть <arithmetic expression>.
<value variable> - имя переменной типа Byte, в которую запишется количество найденных элементов (если не найдены, то 0).
<x variable> - имя переменной типа Byte, в которую запишется горизонтальная координата ближайшего найденного элемента (если не найдены, то 0).
<y variable> - имя переменной типа Byte, в которую запишется вертикальная координата ближайшего найденного элемента (если не найдены, то 0).
Т.е., поиск определенного значения клетки карты вокруг клетки с координатами x,y на расстоянии distance в прямоугольной области. Можно просто искать конкретное значение клетки, а можно все не равные этому значению, или все клетки с бОльшим значением, или все клетки с меньшим значением. Нужно указать имена переменных <value variable>, <x variable>, <y variable>, куда запишется найденное количество подходящих клеток, удовлетворяющих условию поиска, а также ближайшие к искомой клетке координаты клетки с подходящим значением.
Например, найти вокруг клетки с координатами 12,16 в прямоугольной области 10х10 клеток значение клетки 8:
MapSearch(12,16,8,0,10/2,value,x,y)
После выполнения в value запишется количество найденных клеток со значением 8, а в x,y - ближайшая клетка со значением 8.

- - - Добавлено - - -

Цитата Сообщение от Reobne Посмотреть сообщение
Я-бы посоветовал не перегружать ReadKey таким образом. ReadKey уже описана в мануалах и привычна. Она возвращает была ли нажата и возможно давно отжата клавиша. А нам нужно узнать давится-ли клавиша прямо сейчас. Если не понравилось моё GetKeyState, придумайте новое, может KeyDown?
да, пока думаю. Оптимальное не найдено, но хочется что-то простое.
Имеется буфер с заполненными нажатыми клавишами. Нужно проверить конкретную клавишу, есть ли она там. Всё.