【发布时间】:2019-10-22 17:00:11
【问题描述】:
我是 Pascal 的初学者,我正在开发一个小型 WIngraph 游戏。在游戏的某个时刻,角色(即一个方块)必须躺下(方块的高度为原来的一半)。我希望在按住向下箭头键时发生这种情况,但我实现它的方式实际上并没有奏效。我遇到的另一个问题是我不知道如何同时读取键(例如,在向右跑和跳跃时需要)。
我就是这样写的:
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;
我希望代码在按键被按下时运行良好,并且一旦释放,块应该会达到正常高度,然后程序将根据其主循环运行,但在此过程之外。
一切正常,除了那个拿钥匙的东西。
【问题讨论】:
-
请发布您的实际代码。没有它,我们无法判断您做错了什么。 (这样想——告诉你的汽车修理工,“我的车发出奇怪的声音。它是一辆红色的车,看起来像停在那里的那辆。我的车出了什么问题?”。你会期待答案吗?我希望不会。)我们无法从这里读取您的代码(或您的想法);我们只有您提供给我们的东西。请编辑您的问题并发布您的实际代码;发布时通过根据需要将每行缩进四个(或更多)空格来格式化它,以便它可读,并在您输入的位置下方预览。谢谢。
-
这里是代码:pastebin.com/AqkD90kL
-
快到了。 :-) 首先,您的代码需要here,而不是pastebin。如果由于某种原因 pastebin 已关闭或链接消失,您的问题将变得毫无意义。其次,你发布了太多方式的代码;您只需要在此处发布有关处理密钥的部分。 StackOverflow is not going to read all that - 将其减少到给您带来麻烦的部分,并在此处发布您的问题。我们很想帮助你,但是这里有很多问题,你需要通过提出好的问题来帮助我们。谢谢。 :-)
-
我又改了。很抱歉给您带来不便,如果我再次做错了什么,请告诉我。 ;)
-
您需要对键盘进行比
KeyPressed和ReadKey更全面的控制才能实现您想要的。 This tutorial(Word 文档)关于如何在 Pascal 中制作键盘处理程序可能是一个很好的起点。我怀疑周围肯定有很多现成的单元,也有源代码,但我只设法在俄语中遇到this site(有一些部分是英文),在那里你可以下载带有源代码的工作示例(不是全部他们是你需要的!)。
标签: keyboard pascal freepascal