我正在尝试用Pascal创建一个简单的游戏。它使用控制台。游戏的目标是在60秒内收集尽可能多的“苹果”。游戏结构是一个简单的无限循环。每次迭代,你都可以一举一动。这就是问题 - 在你移动之前(readKey
),时间可以随心所欲地传递。例如,用户可以在10秒后按键!有没有办法计算时间?我需要程序知道何时用户播放(按键前后),所以我不知道如何防止用户“作弊”。
这是我游戏的简单结构:
begin
repeat
{* ... *}
case ReadKey of
{* ... *}
end;
{* ... *}
until false;
end.
完整代码:http://non.dagrevis.lv/junk/pascal/Parad0x/Parad0x.pas。
据我所知,有两种可能的解决方案:
...但我不知道如何在循环中使用它们。
答案 0 :(得分:6)
检查this link。可能会为您提供一些有用的信息。并here is和你要求的一样。 here's您正在寻找的内容(与下面的代码相同)。
var hours: word;
minutes: word;
seconds: word;
milliseconds: word;
procedure StartClock;
begin
GetTime(hours, minutes, seconds, milliseconds);
end;
procedure StopClock;
var seconds_count : longint;
c_hours: word;
c_minutes: word;
c_seconds: word;
c_milliseconds: word;
begin
GetTime(c_hours, c_minutes, c_seconds, c_milliseconds);
seconds_count := c_seconds - seconds + (c_minutes - minutes) * 60 + (c_hours - hours) * 3600;
writeln(inttostr(seconds_count) + ' seconds');
end;
begin
StartClock;
// code you want to measure
StopClock;
end.