有时,编写游戏时会遇到这样的尴尬场面:
比如说俄罗斯方块游戏,既要计算游戏时间(计时),又要通过键盘操控方块下落。
问题是,计时一般用的是
min:=0; sec:=0;
write('0:0');
while True do
begin
delay(1000);
inc(sec);
if sec>=60 then begin sec:=0; inc(min); end;
write(min,' : ',sec);
//在这里调节方块
end;
//(咦?难道只有我一个人在用古老而又陈旧的Pascal?)
//(算了,反正也看得懂,delay(x)是延迟x毫秒,inc(x)是将x加一。)
而一执行到delay,整个程序就会停下来等,直到delay执行完毕。
这意味着,这个游戏几乎没有给玩家时间去调整俄罗斯方块……
对于我这种只能用两个背景颜色为红色的空格并在一起当作一个正方形的人来说,
是不可能用更高级的软件同时进行两种操作的,
只有一个没多少函数的Crt单元(函数库)陪伴着我……
于是,我想出了一个"高级"办法:卡电脑法
min:=0; sec:=0;
write('0:0');
while True do
begin
clock:=0; time:=2500000; //(一个较大的数,使正好过去一秒)
if clock>time then
begin
inc(sec);
if sec>=60 then begin sec:=0; inc(min); end;
write(min,' : ',sec);
end
else inc(clock);
//在这里调节方块
end;
这个方法有较大的不足,它会由于程序运行的快慢和其他很多因素相关,
如果程序运行慢(如一个程序中同时运行了好多这样的计时部分)则计时会变慢。
而且调time也怪麻烦的,所以其实…不大适合计时,
不过对于我的小黑屏超低像素的方块游戏已经足够了。
P.S. 你们(Python,C++,Html,Java &blabla)是怎么解决的?
有心人可以回复一下