看流星社区

 找回密码
 注册账号
查看: 4982|回复: 11

关于吃药延时的思路

[复制链接]

该用户从未签到

发表于 2011-4-5 10:11:45 | 显示全部楼层 |阅读模式
我想问,在VB里怎么去实现吃药的延时啊??
不然会出现重复吃药浪费的现象

该用户从未签到

发表于 2011-4-5 10:11:52 | 显示全部楼层
等1秒吃1颗

该用户从未签到

发表于 2011-4-5 10:11:59 | 显示全部楼层
我在VB里是添加一个时钟控件来检查人物的血是否少于设定的值的
可我怎么让时钟延时呢??

该用户从未签到

发表于 2011-4-5 10:12:08 | 显示全部楼层
你可以建立一个子程序来实行吃药,在程序首添加一个逻辑变量和if 判断 ,  
如果 该 逻辑变量设置为真,执行补血,执行完设置 该 逻辑变量为 假,
如果为假,返回或跳出,
这样你在时钟里调用再多也没关系

该用户从未签到

发表于 2011-4-5 10:12:18 | 显示全部楼层
笨死了你,呵呵, 在 加血 后,加一句 延时 1500毫秒 就好了阿

该用户从未签到

发表于 2011-4-5 10:12:31 | 显示全部楼层
时钟程序
if 当前HP<设定HP
执行加血子程序
sleep(1000) '延迟1秒
end if
end 时钟程序

该用户从未签到

发表于 2011-4-5 10:12:42 | 显示全部楼层
用sleep的话实时性太差,我的解决思路是这样
加个吃血的标志、吃血计数(全局变量),
定时器(假设周期为100ms)
if (hp<设定值) 并且 吃血标志为假 then begin
  吃血
吃血标志为真
end;
if 吃血标志为真 then
begin
吃血计数+1;
if 吃血计数>10 then
begin
  吃血标志为假
吃血计数清零;  
end;
end
else
吃血计数清零;
end;  

定时器循环结束

这样既保证了检测的实时性,也能保证不多吃药,还可以根据网络情况调整吃血的延迟

在定时器内最好不要使用sleep
如果需要较长的定时,比如技能延时30分钟,可以使用GetTickCount

该用户从未签到

发表于 2011-4-5 10:12:54 | 显示全部楼层
最简单最方便最有效的方法就是
对喝血那句绑定一个延时

这样每次加血都会延时 当然是加在喝血后

该用户从未签到

发表于 2011-4-5 10:13:00 | 显示全部楼层
我的思路是用线程来控制
用线程的sleep来延迟时间。

该用户从未签到

发表于 2011-4-5 10:13:14 | 显示全部楼层
参考MSDN
public   static   native   void   sleep(   long   millis   )   
   
Causes   the   currently   executing   thread   to   sleep   
(temporarily   cease   execution)   for   the   specified   number   of   milliseconds.   
The   thread   does   not   lose   ownership   of   any   monitors   
当线程执行sleep时,线程并没有交出所有权,
Sleep会引起程序停滞,如果你延迟的时间较长的话,你的程序将不能够响应延时期间的发生的其他消息,所以程序看起来好像暂时死机。
所以我基本不用sleep,除非是延时10ms以内时,sleep的精度是最高的
我一般用
procedure Delay(MSecs: Longint);
//延时函数,MSecs单位为毫秒(千分之1秒)
var
FirstTickCount, Now: Longint;
begin
FirstTickCount := GetTickCount();
repeat
  Application.ProcessMessages;
  Now := GetTickCount();
until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
用这个函数替代,比sleep效果要好
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-18 11:20

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表