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

VC程序暂停与继续修改

杨政权 发布于 2012-07-04 12:19, 467 次点击
下面这个程序怎样在求出一个解后暂停,然后按键继续或返回主菜单

/*--------------------------------------------------------------*/
/*---------------------八皇后演示-----------------------------*/
/*--------------------------------------------------------------*/
#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;
}
1 回复
#2
Artless2012-07-04 23:39
VC
VB
1