Я делаю игру в сборке с игрой, являющейся объектом персонажа (в данном случае это символ «Х»), чтобы уклониться от падения 0 и 1. Мои падающие объекты идеальны, единственная проблема, с которой я сталкиваюсь, заключается в том, что если кто-то должен был удерживать направление влево или вправо, мои падающие предметы останавливаются, чтобы разместить новую позицию объекта игрока. Я использую библиотеку irvine для таких процессов, как readkey, которая получает ввод с клавиатуры почти во всем остальном, на 100% меня. Я не уверен, почему он останавливает все, чтобы завершить строку кода, которая выполняется только при первом прохождении цикла печати. Любая помощь приветствуется. Ниже я отправлю код. Ибо сейчас он работает на бесконечном цикле, который разбивается, если вы попадаете в объект.Сборка Игра персонажа, замедляющая мою игру
;******* proc to make it easier to reprint the rain;Kilian Proc
print PROC
mov esi,0
mov count, 0; intilize as zero to reset the print proc
PrintAll:
mov ecx, count
mov ebx , 0
cmp esi,4
je four
jmp end4
four:
mov esi , 4
end4:
inLoop2:
mov dl,xArray[ebx]
mov dh,yArray[ebx]
call Gotoxy ;Moves cursor to the position of rain
mov al,rainArray[ebx]
call WriteChar ;Rewrite rain
push ecx
cmp ebx, 0
je xmov
jmp endx
xmov:
call ReadKey ; looks for keyboard input
call RightIf
call LeftIf
endx:
pop ecx
call fall
cmp ecx, 0
jne decrease
jmp endD
decrease:
dec ecx
endD:
inc ebx
cmp ebx, esi
ja endinLoop
jmp inLoop2
endinLoop:
mov eax , 105
call delay
call clrscr
mov dh,23d ;move cursor to character's current position ********* Added to this version by Killian edited by John
mov dl , beginX
call Gotoxy
mov al,'X' ;move X into al *********
call WriteChar ;print it **********
call Crlf
xor al,al ;clear
cmp ecx, 0
je random
mov ebx, 0
jmp inLoop2
random:
mov eax, 5
call RandomRange
mov ebx, eax
cmp ebx , 0
je Increase
jmp PrintAll
Increase:
cmp esi, 4
je PrintAll
inc count
inc esi
jmp PrintAll
EndPrint:
ret
print ENDP
Эта часть кода выполняет весь тяжелый подъем, проблема здесь где-то. Если вы хотите, чтобы увидеть полный код, который вы можете пойти сюда Git Repo
Nevermind Я решил, что проблема понравилась этому сообществу; D –
Если вы нашли свое решение, отправьте его как ответ, чтобы другие могли его найти :) – cubrr
Чтобы устранить эту проблему, я переместил вызовы в ReadKey, RightIf и LeftIf вниз под областью, где я снова печатаю «X». Это исправило проблему довольно хорошо. Я поставлю код ниже. –