作者在 2008-08-25 17:53:21 发布以下内容
/*key 80 下 72 上 77 右 75 左*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <stdlib.h>
#include <conio.h>
int num[9];
int setp=0;
int setp=0;
start(){
int i;
int a,b;
randomize();
for(i=0;i<8;i++) num[i]=i+1;
num[8]=0;
for(i=0;i<100;i++)
{
a=random(8);
b=(a+2)%8;
chage(a,b);
}
game();
}
int i;
int a,b;
randomize();
for(i=0;i<8;i++) num[i]=i+1;
num[8]=0;
for(i=0;i<100;i++)
{
a=random(8);
b=(a+2)%8;
chage(a,b);
}
game();
}
chage(int a,int b){
int temp=num[a];
num[a]=num[b];
num[b]=temp;
}
int temp=num[a];
num[a]=num[b];
num[b]=temp;
}
game(){
int i,j;
clrscr();
for(i=0;i<=2;i++)
{
gotoxy(1,i+1);
for(j=0;j<=2;j++)
if(0==num[j+i*3]) printf(" ");
else printf("%d ",num[j+i*3]);
}
gotoxy(10,2);
printf("setp: %d",setp);
setp++;
}
int i,j;
clrscr();
for(i=0;i<=2;i++)
{
gotoxy(1,i+1);
for(j=0;j<=2;j++)
if(0==num[j+i*3]) printf(" ");
else printf("%d ",num[j+i*3]);
}
gotoxy(10,2);
printf("setp: %d",setp);
setp++;
}
scass(){
int i;
int right=1;
for(i=0;i<8;i++) right=right&&(num[i]==(i+1));
return right;
}
int i;
int right=1;
for(i=0;i<8;i++) right=right&&(num[i]==(i+1));
return right;
}
nullnum()
{
int i;
for(i=0;i<=8;i++) if(num[i]==0) return i;
}
{
int i;
for(i=0;i<=8;i++) if(num[i]==0) return i;
}
casekey(){
char key;
int pos;
for(;;){
pos=nullnum();
if(27==(key=getch())) break;
if(80!=key && 72!=key && 77!=key && 75!=key) continue;
switch(key){
case 80:
if(pos>=3) chage(pos,pos-3);
break;
case 72:
if(pos<=5) chage(pos,pos+3);
break;
case 77:
if(pos%3!=0) chage(pos,pos-1);
break;
case 75:
if(pos%3!=2) chage(pos,pos+1);
break;
}
game();
if(scass()) {gotoxy(1,5);printf("YOU WIN...\ncontinue?");
if(getch()==27) break;
setp=0;start();casekey();
}
}
}
char key;
int pos;
for(;;){
pos=nullnum();
if(27==(key=getch())) break;
if(80!=key && 72!=key && 77!=key && 75!=key) continue;
switch(key){
case 80:
if(pos>=3) chage(pos,pos-3);
break;
case 72:
if(pos<=5) chage(pos,pos+3);
break;
case 77:
if(pos%3!=0) chage(pos,pos-1);
break;
case 75:
if(pos%3!=2) chage(pos,pos+1);
break;
}
game();
if(scass()) {gotoxy(1,5);printf("YOU WIN...\ncontinue?");
if(getch()==27) break;
setp=0;start();casekey();
}
}
}
main(){
start();
casekey();
}
start();
casekey();
}