私はPascalの初心者で、小さなWINgraphゲームに取り組んでいます。ゲームのある時点で、キャラクター(ブロック)は横になる必要があります(ブロックは元の高さの半分になります)。矢印キーを押しながらこれを実行したいのですが、実装方法が実際には機能していません。私が抱えているもう1つの問題は、キーを同時に読み取る方法がわからないことです(たとえば、右に走ってジャンプするときに必要になります)。
それが私がそれを書き込もうとした方法です:
procedure joystick;
begin
key:=readkey;
case key of
#0:begin
key:=readkey;
case key of
#80:with block do
begin
y1:=y2-100; //make it get half of its height
repeat
moveblock; //these are the drawing routines.
moveball; //they are in another procedure, which is the 'main loop'
collisioncheck;
draw; //i expected the code to run inside here with the block's
alternateball; //height changed, and as soon as the arrow key gets released
updateGraph(updateNow); //it should go back to the 'main loop'
killball;
delay(10);
until keypressed = false; //<--thats what i think is not working
y1:=y2-200; //this would make the block get normal again
end;
end;
end;
end;
キーが押されている間はコードが正常に実行され、リリースされるとすぐにブロックは通常の高さになり、プログラムはメインループに基づいて実行されますが、この手順の範囲外です。
キーを保持することを除いて、すべてが機能しています。