继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

游戏中的多任务执行解决方案

慕桂英4516509
关注TA
已关注
手记 2
粉丝 3
获赞 1

有时,编写游戏时会遇到这样的尴尬场面:
比如说俄罗斯方块游戏,既要计算游戏时间(计时),又要通过键盘操控方块下落。
问题是,计时一般用的是



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)是怎么解决的?

        有心人可以回复一下

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP