如何检测 Pascal 中经过的时间?

2023-12-25

我正在尝试用 Pascal 创建一个简单的游戏。它使用控制台。游戏的目标是在 60 秒内收集尽可能多的“苹果”。游戏结构是一个简单的无限循环。每次迭代,您都可以迈出一步。问题是——在你采取行动之前(readKey),时间可以随心所欲地流逝。例如,用户可以在10秒后按下一个键!有什么办法可以计算时间吗?我需要程序知道when用户播放(按下按键之前和之后),所以我不知道如何防止用户“作弊”。

这是我的游戏的简单结构:

begin
    repeat
        {* ... *}
        case ReadKey of
            {* ... *}
        end;
        {* ... *}
    until false;
end.

完整代码:http://non.dagrevis.lv/junk/pascal/Parad0x/Parad0x.pas http://non.dagrevis.lv/junk/pascal/Parad0x/Parad0x.pas.

据我所知,有两种可能的解决方案:

  1. getTime(从 DOS),
  2. 延迟(来自 CRT)。

...但我不知道如何在我的循环中使用它们。


Check 这个链接 http://www.merlyn.demon.co.uk/pas-wait.htm。可能有一些对您有用的信息。和here is http://www.pascalgamedevelopment.com/archive/index.php/t-3025.html你要求的一样。和here's http://www.delphifaq.com/faq/f110.shtml您正在寻找什么(与下面的代码相同)。

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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测 Pascal 中经过的时间? 的相关文章

随机推荐