четверг, 6 мая 2010 г.

Большие значить хорошие?


Ребята хочу вам представить самую маленькую игру в мире. Разве вам не интересно? так вот оно. Эту игры вы наверняка играли и в Тетрисе.Ух,какие были времена...
Сюжет и управление
Вы несетесь по трассе на грузовике с двумя прицепами. Слева от вас разделительная полоса, справа обочина укрытая травой. На дороге встречаются люди и деревья (может ямы). Ваша задача: не сбивать людей и не врезаться в деревья (не попадать в ямы).
Управление: стрелки влево-вправо — поворот; Esc — пауза.
Исходный код
******************************************************************************
begin:
; ds указывает на видеопамять
push 0b800H
pop ds
; установить графический режим 40×25
int 10H
; bx = 700H - смещение, по которому находиться грузовик
mov bh, 7H
main_loop:
; Задержка и вывод грузовика на экран
xchg cx, ax ; mov ah, 0
int 1AH
mov [bx], dl
delay:
int 1AH
cmp [bx], dl
je delay
; si - смещение следующего препятствия
xchg ax, si
add al, dl
xchg ax, si
xchg ax, cx ; mov cx, 0
; Получение нажатой клавиши
in al, 60H
cmp al, 77
jnz keytest1
; вправо
inc bx
inc bx
keytest1:
; влево
ja keytest2
dec bx
dec bx
keytest2:
; очистка буфера клавиатуры
mov ah, 0CH
int 21H
; скролл экрана на 1 строчку
mov ax, 0701H
mov dx, 1827H
int 10H
; вывод препятствия
mov [si], ax
; вывод травы и разделительной полосы
mov [di+51], dx
; проверка что перед грузовиком нет препятствий
cmp [bx], dh
ja main_loop
ret

******************************************************************************
Можно ли сделать игру меньше?

Скорее всего — да. Много места занимает прокрутка экрана (8 байт) и задержка (10 байт). Если поменять направление движения (препятствия надвигаться снизу вверх), то скролл можно заменить быстрым выводом символа перевода строки (mov al, 0Ch; int 29h). Задержку можно заменить проверкой состояния двойного слова по адресу 0040:006Сh. Там должен находиться счетчик отсчетов таймера с полуночи (Timer ticks since midnight).

0 коммент.:

Отправить комментарий

Инфо

Моя фотография
Email:nemetli@mail.ru ICQ: 6321988 tel: (+994)519844787
 

Blogger

NewFAQs.blogspot.com © 2010

Все материалы принадлежат владельцу блога