共有回帖数  0  个 
	 
	
	
	
     
          
          
               
				
			 
				
					 
 
            
				   - 
						
						
							 
									
  
 #include stdio.h
 #include windows.h
 #include time.h
 
 
 
 
 #define N 3
 
 
 #define UP 72
 #define DOWN 80
 #define LEFT 75
 #define RIGHT 77
 
 
 typedef struct {
 int a[3][3];
 int x;
 int y;
 }node;
 
 
 
 
 void paint(node *p)
 {
 int row,col;
 printf("0相当于空位,移动数字至这个空位,将数字排列成n1 2 3n4 5 6n7 8 0 就赢了!ttt作者:bcoder n");
 printf("┌");
 for (col = 0; col N-1; col++)//输出一行
 printf("—┬");
 printf("—┐n");
 
 
 
 
 for(row=0;rowN;row++)
 {
 printf("│");//输出行号
 for(col=0;colN;col++)
 {
 printf("%2d│",p-a[row][col]);
 }
 
 
 printf("n");
 
 
 if (row  N - 1)
 {
 printf("├");//输出交叉线
 for (col = 0; col  N - 1; col++)//输出一行
 printf("—┼");
 printf("—┤n");
 }
 }
 printf("└");
 
 
 for (col = 0; col  N - 1; col++)//最后一行的横线
 printf("—┴");
 printf("—┘n");
 
 }
 
 
 
 
 
 
 
 void find_xy(node *p){
 int i,j;
 for(i=0;iN;i++)
 for(j=0;jN;j++)
 if(p-a[j]==0)
 {
 p-x=i;
 p-y=j;
 }
 
 
 
 
 
 }
 
 
 void xia(node *p)
 {
 int t;
 find_xy(p);
 if(p-x-1=0)
 {
 t=p-a[p-x][p-y];
 p-a[p-x][p-y]=p-a[p-x-1][p-y];
 p-a[p-x-1][p-y]=t;
 }
 else
 ;
 
 
 
 }
 
 
 void shang(node *p)
 {
 int t;
 find_xy(p);
 if(p-x+1N)
 {
 t=p-a[p-x][p-y];
 p-a[p-x][p-y]=p-a[p-x+1][p-y];
 p-a[p-x+1][p-y]=t;
 }
 else
 ;
 
 
 }
 
 
 void you(node *p)
 {
 int t;
 find_xy(p);
 if((p-y)-1=0)
 {
 t=p-a[p-x][p-y];
 p-a[p-x][p-y]=p-a[p-x][p-y-1];
 p-a[p-x][p-y-1]=t;
 }
 else
 ;
 
 
 
 }
 
 
 void zuo(node *p)
 {
 int t;
 find_xy(p);
 if(p-y+1N)
 {
 t=p-a[p-x][p-y];
 p-a[p-x][p-y]=p-a[p-x][p-y+1];
 p-a[p-x][p-y+1]=t;
 }
 else
 ;
 
 
 }
 
 
 void vin(node *p)
 {
 int i;
 for(i=0;iN*N-1;)
 {
 if(*(*(p-a)+i)==i+1)
 i++;
 else
 break;
 if(i==N*N-1)
 printf("you win !");
 }
 
 
 
 }
 
 
 void srand_num(node *p)
 {
 int i,index,b[N*N];
 
 
 for(i=0;iN*N;i++)
 b=i;
 srand((unsigned)time(0));
 for(i=0;iN*N;)
 {
 index=rand()%9; //生成0~8的不重复随机数
 if(b[index]!=-1)
 {
 *(*(p-a)+i)=b[index];
 b[index]=-1;
 ++i;
 }
 
 }
 
 
 
 
 
 
 }
 
 
 
 
 
 
 void play(node *p)
 {
 int key;
 while(1)
 {
 
 vin(p);
 key=getch();
 
 
 switch(key){
 case UP: shang(p); system("cls"); paint(p); break;
 case DOWN: xia(p); system("cls"); paint(p); break;
 case LEFT: zuo(p); system("cls"); paint(p); break;
 case RIGHT: you(p); system("cls"); paint(p); break;
 default: ; break;
 
 
 
 
 }
 
 
 
 
 
 }
 }
 
 
 void main()
 {
 
 node p;
 srand_num(&p);
 paint(&p);
 printf("n");
 play(&p);
 
 
 
 }
 楼主 2015-06-02 20:17 回复 
 
 
   
             
                  
                  
 
 
 
     
	 
  
	Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
	
	意见反馈 | 
	关于直线 | 
	版权声明 | 
	会员须知