Движение рисунка по диагонали в DosBox
надо заставить что бы картинка двигалась по диагонали после нажатии нужных кнопок
.model small
.data
combined db 27,'[0;1;43m','use WASD to move [ ]$',27,'[0m$'
draw_0 db 27,'[0m ',27,'[0;1;36;46m________',27,'[0m $'
draw_1 db 27,'[0m ',27,'[0;1;36;46m| _ |',27,'[0m$'
draw_2 db 27,'[0m ',27,'[0;1;36;46m|_____|.||',27,'[0m$'
draw_3 db 27,'[0m ',27,'[0;1;31;45m () () ',27,'[0m $'
posX db 5
posY db 5
.code
CLEAR:
MOV AH, 0
MOV AL, 2
INT 10h
mov AH, 2
mov BH, 0
mov DH, 1
mov DL, 1
int 10H
mov ah,9h
lea dx,combined
int 21h
RET
SETPOS:
mov AH, 2
mov BH, 0
mov DH, posY
mov DL, posX
int 10h
RET
DRAW:
call SETPOS
mov ah,9h
lea dx,draw_0
int 21h
add posY,1;
call SETPOS
mov ah,9h
lea dx,draw_1
int 21h
add posY,1;
call SETPOS
mov ah,9h
lea dx,draw_2
int 21h
add posY,1;
call SETPOS
mov ah,9h
lea dx,draw_3
int 21h
sub posY,3;
RET
PRESS_KEY:
; настройка окна (режим 80х25)
call CLEAR
call DRAW
; --- установка курсору в рядок 1, стовпець 19
MOV AH, 2
MOV BH, 0
MOV DH, 1
MOV DL, 19
INT 10H
MOV AH, 1 ; ожидаем нажание клавиши
INT 21H
CMP AL, 0 ; ? 0
JZ PRESS_KEY
CMP AL, 77h ; ?
JE GO_UP
CMP AL, 61h ; ?
JE GO_LEFT
CMP AL, 73h ; ?
JE GO_DOWN
CMP AL, 64h ; ?
JE GO_RIGHT
CMP AL, 78h ; ?
JE BYE
JMP PRESS_KEY ;
GO_UP:
sub posY,1
JMP PRESS_KEY
GO_LEFT:
sub posX,1
JMP PRESS_KEY
GO_DOWN:
add posY,1
JMP PRESS_KEY
GO_RIGHT:
add posX,1
JMP PRESS_KEY
.startup
; подготовка переменных
mov ax,@data
mov ds,ax;
mov es,ax;
JMP PRESS_KEY
BYE:
.exit
end
