签到

05月05日
尚未签到

共有回帖数 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 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知