【提问】我有一些不懂的= =
pascal吧
全部回复
仅看楼主
level 2
报一平S 楼主
1.如何使用上一次的运行结果
2.如何在输入界面打出汉字(使用输入法)
3.如何在运行程序中使用方向键,并且判断使用完方向键后的光标位置(已查看方向键的Ascall码,均为0{即为空})
4.如何在输出时等待一会,令其判断:在等待中是否有键按下(只需要按的第一个键),如果有则返回按下的是什么键
PS:其实我是在做游戏。。。。。。
2015年03月01日 04点03分 1
level 1
==,我也不知道
2015年03月05日 14点03分 2
level 7
1用文件保存,3用2次readkey。4用keypressed
2015年03月06日 15点03分 3
谢谢,1会了,不过3没看懂,怎么两次使用readkey,而且4的keypressed我试了,只会返回布尔值,不能返回你按了什么键[呵呵]
2015年03月07日 01点03分
level 6
你可以试一试notepad
2015年03月07日 00点03分 4
level 7
https://tieba.baidu.com/p/3537412580?pid=63210960974&cid=0#63210960974
这里我写过一点,如果你能看懂了。那么上面的几个问题都解决了。
2015年03月07日 06点03分 5
可是第二个问题没有。。 不过第四个问题我打出来了(合并第三个问题)。。但是比较长
2015年03月07日 22点03分
level 2
报一平S 楼主
uses crt;
var ch:char; bo:boolean; t:integer;
begin
t:=0;
repeat
inc(t);
bo:=keypressed;
if t=30000 then halt;
until bo;
repeat
ch:=readkey();
ch:=readkey();
writeln(ord(ch));
until ord(ch)=72;
end.
感觉这么长==
2015年03月07日 22点03分 6
level 7
你的代码还得改
2015年03月08日 00点03分 7
level 9
第一个repeat循环吧bo:=keypressed;去掉, 结束改为until keypressed;
2015年03月08日 02点03分 8
level 9
第二个问题 :你直接ctrl +leftshift 在exe窗口切换输入法就行啊 @blaze_freeze
2015年03月08日 02点03分 9
好吧,一直没注意可以在exe中直接用ctrl +leftshift。。一直以为需要用什么特殊的方法。。[汗]
2015年03月08日 12点03分
回复 blaze_freeze :噢噢噢噢噢
2015年03月11日 12点03分
level 7
function getkey(T:longint): integer ;
var ch:char;
begin
if T=0 then // T=0,必须等待输入
begin
ch:=readkey(); //读入一个键
if ord(ch)=0 then exit(256+ord(readkey())) else exit(ord(ch)); //如果=0,那么返回256+再读一个键,以区分普通键和控制键,如果不区分,有可能和有些字符ASCII码相同 。
end
else // 超时等待输入
begin
while (t>0) and (not ketpressed) do // 当时间未完,并且没按键按下时,时间减一,
t:=t-1; delay(1) //延时1MS;
if keypressed then //循环结束后,判断有没有键按下,如果有,读进来。
begin
ch:=readkey();
if ord(ch)=0 then exit(256+ord(readkey())) else exit(ord(ch));
end
else exit(0); //没有按键返回0
end;
end;
主程序调用时,如果要必须输入,那么就是getkey(0);
如果是超时等待,那么就getkey(时间T);
2015年03月08日 03点03分 10
比如一个键读进来是0,72。 那么就返回256+72。 不能直接返回72, 因为'H'的ASCII码也是72, 区分不了。 如果加个256, 就能区分了。
2015年03月08日 03点03分
@yynet123456 那么能不能直接判定读入的72是不是H,不是的话不就也是↑了么。。
2015年03月08日 12点03分
1