С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Добавил движение вверх/вниз. Вывод танка по OR.
drbars, Вот так правильнее
Надо клешинг именьшать
С уважением,
Jerri / Red Triangle.
Щас буриме сотворим
С уважением,
Jerri / Red Triangle.
А насколько важен для игры вывод спрайтов с максимально возможной скоростью? Неужто вывод 6 танчиков съест фрейм? Может, стоит уже дальше двигаться?
Собсна, тред про полезные процедуры, я внесу свои 5 копеек. Процедура опроса кнопок. По таблицам кнопок опрашивает клавиатуру и выдает байт напралений в kempston-формате
Я использую такие таблицы кодов (поддержка sinclair 1,2, qaopm+space, cursor keys)Код:right: equ #01 left: equ #02 down: equ #04 up: equ #08 fire: equ #10 pool_keyborad_as_joystick: ; in: nothing ; out: ; d - pressed directions in kempston format ld a,#fe ; check for CAPS SHIFT in a,(#fe) rra ld hl,KeyMapping.key_table - 1 ; selection of appropriate keyboard table jr c,.no_cs ld hl,KeyMapping.cs_key_table - 1 ; hl - keyboard table (zero-limited) .no_cs: ld d,#00 ; clear key flag ld c,#0fe ; low address of keyboard port .loop: inc hl ; next key ld b,(hl) ; high byte of port address from table inc b ; end of table check dec b ret z inc hl ; going to key mask in a,(c) ; reading half-row state or (hl) ; inc hl ; going to key flag inc a ; a = half-row state or mask. if #ff - current key isn't pressed ld a,d jr z,.loop ; key isn't pressed or (hl) ; result or key flag ld d,a ; store it jr .loop
Код:; key table format ; 1st byte - high byte of keyboard half-row address ; 2nd byte - inverted key mask (e.g. outer key - #fe, next key - #0fd etc) ; 3rd byte - direction bit key_table: db #0ef, #0fe, fire ;0 db #0ef, #0fd, up ;9 db #0ef, #0fb, down ;8 db #0ef, #0f7, right ;7 db #0ef, #0ef, left ;6 db #0f7, #0fe, left ;1 db #0f7, #0fd, right ;2 db #0f7, #0fb, down ;3 db #0f7, #0f7, up ;4 db #0f7, #0ef, fire ;5 db #0df, #0fe, right ;p db #0df, #0fd, left ;o db #0fb, #0fe, up ;q db #0fd, #0fe, down ;a db #07f, #0fb, fire ;m db #07f, #0fe, fire ;space db #000 cs_key_table: db #0ef, #0fe, fire ;0 db #0ef, #0fb, right ;8 db #0ef, #0f7, up ;7 db #0ef, #0ef, down ;6 db #0f7, #0ef, left ;5 db #000
Добавил обработчик клавиатуры с переопределением клавиш
графику надо поправить
правильный размер танка - 3*3 3*4
С уважением,
Jerri / Red Triangle.
Да там надо всё иначе делать вообще. Процедурка вывода танка должна уметь за край экрана рисовать, т.к. во время игрового процесса оттуда может выехать танк врага. А за (X,Y) координаты спрайта нужно взять правый нижний угол этого спрайта.
Если делать как я предложил, глобальными координатами и окном игровой проекции. Кстати динамично должно получится... Препятствия в лабиринте сделать можно тайлами 16х16px. Анализируем игровую проекцию и если было смещение быстро стеком рисуем сначала тайлы, потом танки... скролл проще по 16px сделать.
Тайлы которые рисуются в ирговой проекции стоят атрибутную карту, по ней проверяем препятствия.
В идеале, сырой движок должен выглядеть так: тестовая локация обрамлённая тайлами по периметру. Внутри хаотично катают танки... и мы перемещаемся среди них, игровое окно двигается (можно разными способами сделать).
Думаю есть шанс за фрейм уложиться даже со скроллом.
Последний раз редактировалось drbars; 05.08.2013 в 23:25.
drbars, элементы 24х24 иначе танк некрасивый будет
С уважением,
Jerri / Red Triangle.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)