Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 21

Тема: ><> Aqua-battle <><

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию ><> Aqua-battle <><

    Самое время порыбачить.
    Возник вопрос по этой игрухе.
    Каким образом проверить одновременное нажатие клавиш для движения по диагонали? (ADSW)
    Думаю проверять 254 порт и параллельно inkey-символ,но громоздко получается.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	AQUA.JPG 
Просмотров:	312 
Размер:	18.1 Кб 
ID:	24065  

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всегда создавал под кемпстон и с этим проблем не было.
    А вот как же быть с клавой?

  4. #3
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    если на бейсике, то in #xxFE и выделять биты. inkey только для одной кнопки.

  5. #4
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а можно по подробнее,именно для ASDW ?
    И желательно не в HEX а в DEC,это ж sinclair-Basic.

  6. #5
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    241
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию цитата из "Программирование в машинных кодах и на языке АССЕМБЛЕРА"

    "Так, например, порт 254 (FE) служит для связи процессора
    с клавиатурой, магнитофоном, звуковым динамиком и телеэкраном.
    Для примера рассмотрим содержимое байта данных, поступаю-
    щих или выдаваемых по этому порту.

    ПОРТ FE (ВВОД)
    ┌───┬───┬───┬───┬───┬───┬───┬───┐
    │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │
    └───┴─┬─┴─┬─┴───┴───┴───┴───┴─┬─┘
    │ └─────────┬─────────┘
    А │
    Б
    А. Шестой бит указывает на наличие сигнала на магнитофон-
    ном разъеме EAR (вход в компьютер). 1 - нет сигнала, 0 есть
    сигнал.
    Б. Младшие пять битов определяют какая из пяти клавиш каж-
    дого полуряда клавиатуры была нажата. Бит равен нулю, если кла-
    виша была нажата и 1, если нет.


    Для тех, кто не имеет книги Виккерса, напомним, как зада-
    ются адреса портов при опросе клавиатуры.
    1. Мы указали, что 16-разрядная адресная шина (от А0 до
    А15) указывает на адрес внешнего порта.
    2. Порт FE задается состоянием адресных линий А0...А7. При
    этом А0 - включена, А1...А7 - выключены:
    1111 1110
    Об остальных адресных линиях А8...А15 мы пока не говорим.
    3. В то же время, мы указали, что клавиши полуряда опраши-
    ваются по пяти битам данных, поступающим с этого порта
    (D0...D5).
    4. При этом адресные линии А8...А15 могут указывать о ка-
    ком именно полуряде идет речь.
    Клавиатура "Спектрума" имеет 40 основных клавиш. Они
    разбиты на 8 полурядов по 5 клавиш в каждом.
    ┌────────────────────┬───────────────────┐
    3 │ 1................5 │ 6...............0 │ 4
    ├────────────────────┼───────────────────┤
    2 │ Q................T │ Y...............P │ 5
    ├────────────────────┼───────────────────┤
    1 │ A................G │ H...........ENTER │6
    ├────────────────────┼───────────────────┤
    0 │ C.SHIFT..........V │ B...........SPACE │7
    └────────────────────┴───────────────────┘

    Этим полурядам соответствует следующее состояние адресных
    линий А8...А15.
    ┌───────────────┬───────────────┐
    3 │ 1111 0111 = 247 │ 1110 1111 = 239 │ 4
    ├───────────────┼───────────────┤
    2 │ 1111 1011 = 251 │ 1101 1111 = 223 │ 5
    ├───────────────┼───────────────┤
    1 │ 1111 1101 = 253 │ 1011 1111 = 191 │ 6
    ├───────────────┼───────────────┤
    0 │ 1111 1110 = 254 │ 0111 1111 = 127 │ 7
    └───────────────┴───────────────┘
    Таким образом, для опроса произвольного полуряда адрес его
    порта равен:
    256*(255-2^n) + 254
    └──────┬────────┘ └─┬─┘
    │ │

    А8...А15 А0...А7
    Здесь n - номер полуряда.
    Например, опросить клавиши от 1 до 5 можно следующей ко-
    мандой из Бейсика:
    PRINT IN (256*(255-2^3)+254) или проще:
    PRINT IN 63486
    Младшие пять битов того байта, который поступает с этого
    порта, указывают, какая именно клавиша была нажата. При этом
    следует помнить:
    - самый младший бит соответствует внешней клавише полуря-
    да;
    - при нажатой клавише соответствующий ей бит выключается,
    т.е. если ни одна клавиша не была нажата, то все пять младших
    битов включены, и Вы получите 255.

    "


    Итого,
    (IN 64510) - даст нам состояние полуряда клавиатуры Q-T
    (IN 65022) - состояние полуряда A-G
    но выделить из них отдельные клавиши будет сложновато, из-за того, что в бейсике нет побитных логических операций.

    Как вариант, примерно так:
    LET k1=INT ((IN 64510)/2)
    IF (k1- INT(k1/2)*2)=0 THEN клавиша W нажата

    LET k2=IN 65022
    LET t=INT (k2/2)
    IF (k2-t*2)=0 THEN клавиша A нажата
    LET k2=t: LET t=INT (k2/2)
    IF (k2-t*2)=0 THEN клавиша S нажата
    LET k2=t: LET t=INT (k2/2)
    IF (k2-t*2)=0 THEN клавиша D нажата

  7. #6
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    мне со всего этого нужно было только:
    Цитата Сообщение от weiv Посмотреть сообщение
    (IN 64510) - даст нам состояние полуряда клавиатуры Q-T
    (IN 65022) - состояние полуряда A-G

  8. #7
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чего же она не работает по диагонали?
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	dump.JPG 
Просмотров:	260 
Размер:	93.1 Кб 
ID:	24109  

  9. #8
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    a1=64510
    a2=65022

    ---------- Post added at 16:43 ---------- Previous post was at 16:41 ----------

    В смысле комбинации A+W, D+W
    по идее,она ж сперва проверяет одну за тем вторую букву,не выходя из подпрограммы.

    ---------- Post added at 16:44 ---------- Previous post was at 16:43 ----------

    то есть ступеньками должно двигаться...

    ---------- Post added at 16:44 ---------- Previous post was at 16:44 ----------

    по идее...

    ---------- Post added at 16:44 ---------- Previous post was at 16:44 ----------

    Но не хотит...

    ---------- Post added at 16:45 ---------- Previous post was at 16:44 ----------

    210 строка к перемещению не относится.

    ---------- Post added at 16:46 ---------- Previous post was at 16:45 ----------

    хотелось бы это покомпактнее сделать,для быстродействия

  10. #9
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    241
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Во-первых, бит магнитофона может быть и 0.
    Во-вторых, если a1=64510, a2=65022, перепутаны адреса портов полурядов.
    А так, по идее, A+W и D+W должны работать.

  11. #10
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вложения Вложения

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Last Battle (.tap .z80)
    от OZR в разделе Игры
    Ответов: 13
    Последнее: 16.10.2019, 18:11
  2. Секреты Last Battle
    от captain cobalt в разделе Игры
    Ответов: 9
    Последнее: 18.03.2017, 05:08
  3. DOORS\AQUA KERNEL•7
    от breeze в разделе Оси
    Ответов: 77
    Последнее: 05.02.2013, 16:36
  4. Battle Ships BG
    от ZEman в разделе Игры
    Ответов: 13
    Последнее: 31.03.2007, 13:23
  5. Ответов: 30
    Последнее: 25.02.2006, 17:35

Ваши права

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