你好,我写了一个C++的,在VS上完美运行,希望能够帮到你。
#include
#include
#include
#include
/*定义全局变量*/
int puzz[9]; // 九格游戏数组
int i=0,j,k; // i 初始化界面的提示语,j 获取空格位置,k 移动次数
int space; // 空缺位置
/*自定义函数原型*/
void interface(); // 界面,包括打印充填矩形和数字
void change(int a,int b); // 交换
void press(); // 按键
void start() ; // 初始化和判断是否胜利
void start() // 初始化和判断是否胜利
{
int a,b,c;
int star[22]={300,120,320,160,360,160,320,200,340,240,300,200,260,240,280,200,240,160,280,160,300,120};
k=0;
for(a=0;a<8;a++)
puzz[a]=a+1;
puzz[8]=0;
interface();
for(c=0;c<100;c++) // 随机打乱顺序
{
a=rand()%9;
b=(a+2)%8; // 关于有无解问题,搞不清楚,引用的
change(a,b);
}
while(1)
{
interface();
for(a=0;a<8;a++)
if(puzz[a]!=a+1)
break;
if(a==8)
{
drawpoly(11,star); // 五角星
setcolor(1); // 文本“SUCCESSFUL”颜色
setfillstyle(1,4); // 五角星填充色
floodfill(300,150,15); // 五角星内一点
outtextxy(260,180,"SUCCESSFUL!!");
getch();
start();
}
for(j=0;j<=8;j++)
if (puzz[j]==0)
break;
space=j;
press();
}
}
void interface() // 界面,包括打印充填矩形和数字
{
clearviewport(); // 清楚屏幕图形
setbkcolor(6); // 设置背景色
setfillstyle(2,2); // 矩形块颜色
if(puzz[0]!=0)
bar(160,60,240,140);
if(puzz[1]!=0)
bar(260,60,340,140);
if(puzz[2]!=0)
bar(360,60,440,140);
if(puzz[3]!=0)
bar(160,160,240,240);
if(puzz[4]!=0)
bar(260,160,340,240);
if(puzz[5]!=0)
bar(360,160,440,240);
if(puzz[6]!=0)
bar(160,260,240,340);
if(puzz[7]!=0)
bar(260,260,340,340);
if(puzz[8]!=0)
bar(360,260,440,340);
gotoxy(25,7);
if(puzz[0]!=0)
printf("%d",puzz[0]);
gotoxy(38,7);
if(puzz[1]!=0)
printf("%d",puzz[1]);
gotoxy(50,7);
if(puzz[2]!=0)
printf("%d",puzz[2]);
gotoxy(25,13);
if(puzz[3]!=0)
printf("%d",puzz[3]);
gotoxy(38,13);
if(puzz[4]!=0)
printf("%d",puzz[4]);
gotoxy(50,13);
if(puzz[5]!=0)
printf("%d",puzz[5]);
gotoxy(25,19);
if(puzz[6]!=0)
printf("%d",puzz[6]);
gotoxy(38,19);
if(puzz[7]!=0)
printf("%d",puzz[7]);
gotoxy(50,19);
if(puzz[8]!=0)
printf("%d",puzz[8]);
if(i==0)
{
printf("\n\n\n\n\n\t\tPress any key to dare ");
getch();
}
gotoxy(60,4); // 打印移动次数
printf("%d th",k);
i+=1;
return;
}
int main()
{
int gdriver=VGA,gmode=VGAHI;
initgraph(&gdriver,&gmode,"c:\\tc30\\BGI");
srand((unsigned)time(NULL)); // 播种子
clearviewport(); // 清屏
printf("\n\n\t\t\t/////////////////////////////\n");
printf("\n");
printf("\t\t\t\tPUZZLE GAME\n");
printf("\n");
printf("\t\t\t/////////////////////////////\n");
printf("\n\n\n\n\n\n\tPress any key to start game");
printf("\n\n\tPress Esc to exit\n\n\t");
if(getch()==27)
{
clrscr();
clearviewport();
printf("\n\n\n\t\t\t//////////////////////////////////\n");
printf("\n\t\t\t\tSee you next time\n");
printf("\n\t\t\t//////////////////////////////////\n");
printf("\n\n\n\n\n\t\t\tPress any key to exit ");
getch();
closegraph();
return 0;
}
start();
return 0;
}