怎样让程序停顿一会.

sr71x71 2003-07-18 08:45:09
各位高手请问怎样才能让一个正在运行的程序(比如:俄罗斯方块)当按一个按钮时停顿,直到按另一个按钮时继续运行?(只须写出使程序停顿和重新运行的代码).
...全文
112 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zihan 2003-07-21
  • 打赏
  • 举报
回复
呵呵,如果你是想停顿的话,建议使用循环,如果要挂起,使用sleep,但是如果你是俄罗斯方块的话,没有必要这样做,你的俄罗斯方块它动肯定是你在控制它动,如果你让他不动,不就停止了吗??程序是你的 ,你肯定可以让他不动了啊!!

如果是dos下的程序,最好使用循环实现
zearbo 2003-07-21
  • 打赏
  • 举报
回复
sleep(n)
nanhui 2003-07-20
  • 打赏
  • 举报
回复
Sleep好像无法实现楼主所要的功能,你怎么知道什么时候又要重新开始呢
用Timer控件和一个全局变量倒是一个好办法
albeta 2003-07-20
  • 打赏
  • 举报
回复
建议这种东西坐在线程里头,不然,可能程序没有反应啊。
  • 打赏
  • 举报
回复
定义一个布尔变量,如果为真就运行,为假就不运行
在你的程序里判断这个布尔变量
当按“暂停”键时这个布尔变量赋值为假,按“继续”键时这个布尔变量赋值为真

BCB俄罗斯方块源程序 http://www.cppfans.com/d_cpp_source/GmSrcTetris.asp
BCB贪吃蛇源程序 http://www.cppfans.com/d_cpp_source/GmSnake.asp
BCB俄罗斯方块源程序 http://www.cppfans.com/d_cpp_source/GmTetrisX.asp
ch_builder 2003-07-20
  • 打赏
  • 举报
回复
建议用Timer,这好象在程序刚开始运行时会起到很好的作用。
Killmyself 2003-07-20
  • 打赏
  • 举报
回复
用timer
Atomictry 2003-07-20
  • 打赏
  • 举报
回复
本来就应该用全局变量和TIMER,两者也没什么差别。
wenyongjie 2003-07-19
  • 打赏
  • 举报
回复
一、延迟:
二、线程
改日给你一个例子,现在在网吧,不方便!
Atomictry 2003-07-19
  • 打赏
  • 举报
回复
你看一下这段小不点程序,看对你有没有启发。
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool pass=true;
int i=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(pass)
{
i++;
Edit1->Text=i;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
pass=false;
}
//---------------------------------------------------------------------------
Atomictry 2003-07-19
  • 打赏
  • 举报
回复
dos下你只要getch()就可以了。:)
shadowstar 2003-07-19
  • 打赏
  • 举报
回复
Sleep只能停顿一段时间,最简单有效的方法就是用设置Timer->Enabled。
bluebear88 2003-07-19
  • 打赏
  • 举报
回复
Timer->Enabled=false;
纯冰糖 2003-07-19
  • 打赏
  • 举报
回复
Sleep(...);可以用在循环中停滞
zywx 2003-07-19
  • 打赏
  • 举报
回复
如果用线程类,就Surspend(),Resume(),
如果用时间控件,就Timer->Enabled=true/false;
sunmedia 2003-07-18
  • 打赏
  • 举报
回复
使用Sleep(n)即可
xu_xinyu 2003-07-18
  • 打赏
  • 举报
回复
在循环中使循环停止。
牧童027 2003-07-18
  • 打赏
  • 举报
回复
Sleep(long);
wincc 说实话,导师开始让我装这个软件的时候并没有意料到会遇到这么多的困难,想想我以前安装UG,PROE的时候,整个流程,那叫一个顺利,而且,鄙人还帮不少人解决过安装中遇到的各种问题...谁知道,上个星期,绝大多数的时间居然都花费在了安装这个软件上。 上上周六开始身体就开始不适了,接着上周一就开始生病,在床上躺了十九个小时(说出来都汗流浃背...),到周二下午的时候总算有些好转。于是,从宿舍床铺上开始转战实验室,准备安装这个软件了,毕竟导师都和我说了快两周了。 下午刚好导师在,于是把他电脑上的2005版copy给了我,总共有三个文件:CD1,CD2,Automation license manager,顺利安装完已经是上周五的事情了,也就是说整整花费了两天半的时间才算搞定。具体的安装过程就不用介绍了,直接说说安装过程中所遇到的问题和解决方法吧。 问题: 1.安装过程如果正常的话,会自动选择三个组件:wincc flexible,runtime,automation license manager,我开始就是按照默认的选择安装的,只是将安装目录改到了D:\program files文件夹下,2CD版的安装过程有时候会在安装到wincc flexible进行到这个过程,即电脑上显示:“extracting graphics to d:\program...”也就是说正在往D盘的相应目录释放文件的时候卡住,即使经过漫长的等待,也毫无作用。 2.正常安装完前面两个组件以后,由于默认的automation license manager是选中安装的,且不可撤销,因此会自动安装这个东西,然而进行到一定的步骤时,会弹出提示“Error...”,提示说里面的文件“Data1.cab”损坏,然后就自动结束安装了。到此,电脑会提示软件安装完成。 3.接着,就安装导师提供给我的第三个文件夹的东西,也就是那个automation license manager文件夹的东西,可惜的是,这个东西每次安装到“staring service...”这个提示界面之后,就会停顿几十秒时间,然后安装过程自动停止,进度回滚,无法安装,提示再选择个时间重新安装,即使电脑重启,做许多的设置更改都无效。最终依然无法安装。 针对以上的3个问题,我是如此解决的: 1.网络上流传着许多3CD版的2005版,我试着下载过,但是下不下来,不发表意见,所以该下面的安装过程还是以这个2CD版为蓝本的,只不过没有用到第三个文件夹,即automation license manager。我用了48个小时,下载了wincc_flexible2007版,然后将其中的automation license manager这个文件夹提取了出来,待用。 2.按照正常的顺序安装2CD版的2005版,当进度到上面第1条所说的问题时,打开任务管理器,会发现里面有个Regasm.exe的进程(具体的名称我现在忘记了,不过貌似是这么拼写的...),然后右键结束掉这个进程,会发现安装会继续进行程,接着提示放入第二张光盘,按照操作来做就OK。 3.按照默认规则还是会自动尝试安装CD2里面的那个License,而接着依然会出错,不要紧,咱们不理它,等它弹出提示说“Data1.cab损坏”,无法继续安装之后,点“确定”,然后等一会儿整个程序都会结束安装。这个时候会提醒重启电脑,不理它,点“以后重启”的选项,然后双击我在第1步中说的2007版里面提取出来的license文件夹里面的setup.exe,OK,一切都会顺利进行,由于2007版包括了简体中文版语言,所以,选择语言的时候,无所谓,随便中文/英文都行。 4.破解了。。。嘿嘿,这个破解应该就不用我来讲了。只要稍微有些安装软件经验的人,都不会有什么问题的。 5.重启之后,就可以运行了。 6.值得提醒的一点是,在正常安装过程中会安装mssqlserver这个东西,如果你发现你的电脑没有这个文件夹“C:\Program Files\Microsoft SQL Server”,那么也不要紧,完成上面第3步之后,打开CD2,找到里面有个MSDE文件夹,手动安装之后,就会有这个SQL Server了。最后重新启动就可以使用了。不过,要正常使用simatic_wincc_flexible的话,还需要启动这个SQL Server的服务(并不是一定要设置为自启动项,需要用wincc_flexible的时候,先手动启动这个SQL的服务即可)。 最后由一点需要说明的是,可能有人会问,我既然下载了2007,为什么不直接安装2007,而要绕这么远去安装2005呢?其实,我本来在2005几次都安装不成功的情况下,刚好下载完了2007,的确已经安装了2007,但是在学习这个软件的过程中,发现网络上根本没有2007的例子和辅导书籍,即使是2007版里面自带的帮助文件,例子都还是用2005的讲解的,连界面都是2005版的,毕竟2007版是今年八月份才发布的,许多服务都还跟不上,而且2007和2005里面的软件版本都不太一样。另外一点是,在2007版中我始终没有找到那个TOOLS工具栏,真是惭愧,这点应该才是我不用2007最大的理由吧。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧