注册 登录
编程论坛 VC++/MFC

VC程序暂停与继续修改

杨政权 发布于 2012-07-04 12:54, 479 次点击

 下面这个程序怎样在求出一个解后暂停,然后按键继续或返回主菜单
 
/*--------------------------------------------------------------*/
 /*---------------------八皇后演示-----------------------------*/
 /*--------------------------------------------------------------*/
 #include <graphics.h>
 #include <cstdio>
 #include <string.h>
 #include <stdlib.h>
 /*******************************定义全局变量*****************************/
 char map[8][8];        //棋
 IMAGE img[4];        //保存图片
 int d[8],e[15],f[24],i,n;
 /**********************************定义函数*****************************/
 void load(void)    //加载图片
 {
     loadimage(&img[0], "图片\\黑空.jpg");
     loadimage(&img[1], "图片\\白空.jpg");
     loadimage(&img[2], "图片\\白子黑空.jpg");
     loadimage(&img[3], "图片\\白子白空.jpg");
 }
 void try1(int i)
 {
 for (int j=1;j<=8;j++)
 if (d[j-1]==0&&e[i+j-2]==0&&f[i-j+7]==0) /*如果第i列第j行为空*/
 {d[j-1]=1;e[i+j-2]=1;f[i-j+7]=1;/*占用第i列第j行*/
 if((j-1+i-1)%2==0)
 putimage((j-1)*60,(i-1)*60,&img[2]);/*显示皇后图形*/
 else
 putimage((j-1)*60,(i-1)*60,&img[3]);
 Sleep(50);/*延时*/
 if(i<8)
 try1(i+1);
 else
 {
     n++;
     char s[100];
     sprintf(s, "%d",n);
     outtextxy(600,001,s);
 }
 d[j-1]=0;e[i+j-2]=0;f[i-j+7]=0;
 if((j-1+i-1)%2==0)
 putimage((j-1)*60,(i-1)*60,&img[0]);/*消去皇后,继续寻找下一组解*/
 else
 putimage((j-1)*60,(i-1)*60,&img[1]);
 Sleep(500);
 }
 }
 void print(void)    //画棋盘
 {   
    int x, y;
     i=0;
     for(x = 0; x < 8; x++)
         for(y = 0; y < 8; y++)
                     if((x + y) % 2)
                         putimage(60 * y, 60 * x, &img[1]);
                     else
                         putimage(60 * y, 60 * x, &img[0]);
     outtextxy(480,001,"当前解的序号为:");
 }
 int measure4(void)    //主函数
 {
     initgraph(640, 480);
     load();
     setbkcolor(LIGHTGREEN);
     cleardevice();
     print();
     try1(1);
     Sleep(1000);
 
    closegraph();
     return 1;
 }
0 回复
1