测试了一个游戏的代码

来源:互联网 发布:php防止ddos 编辑:程序博客网 时间:2024/06/06 00:22
 <pre name="code" class="cpp">//bug    last line can not swap with n-1//http://www.zhihu.com/question/22547591/ #include<iostream>using namespace std;  int ii=0;int Find( char x,int size,int zeroIndex){    switch (x)    {    case 's': //上移 就是找到零下面的那个数字的位置 也就是序号增加一行 也就是+4        {        if ( zeroIndex<size - 4)        {            return zeroIndex + 4;        }        }        break;    case 'x': //下移        {//        if (zeroIndex<size-4 && zeroIndex>3)        if (  zeroIndex>3)        {            return zeroIndex - 4;        }        }        break;    case 'c':         {        if ( zeroIndex%4!=0 )        {            return zeroIndex - 1;        }        }        break;    case 'z':  //左移 主要是判断空白是否在右边缘        {        if (zeroIndex%4!=3)        {            return zeroIndex + 1;        }        }        break;    default:        break;    }       return -1;}  //交换数组中zero和next的位置void SwapIndex(int *ary,int zero, int next){    if (-1 == next)    {        return ;    }    int t = ary[zero];    ary[zero] = ary[next];    ary[next] = t; } void Update(int *ary, int size,char com){    int zeroIndex = 0; //零的序号    for (int i = 0.; i< size ; i++)    {        if (ary[i] == 0)        {            zeroIndex = i;            break;        }    }         int nextIndex = Find(com,size,zeroIndex); //获取跟零相邻(根据com不同 取上下左右)的那个数字的序号    SwapIndex(ary,zeroIndex,nextIndex); } void Show(int *ary, int size){  ii++;    for (int i  = 0 ; i <size; i++)    {        if(i % 4 == 0) //假设每行4个数字        {            cout<<endl<<endl;        }        if (ary[i]!=0)        {        cout<<"\t"<<ary[i];        }        else        {            cout<<"\t";        }    }    //cout<<endl<<"请输入方向(1234):";   cout<<endl<<"  "<<ii<<endl<<"请输入方向(sxzc):";} bool ProcessCommand(int *ary, int size,  char com){   //    system("cls");    Update(ary,size,com); //更新地图    Show(ary,size); //显示新的地图    return true;}  char GetCommand() //假设只返回4个值 代表四个方向{//int test = 1;char  test='s';cin>>test;//先测试一下return test;}  void Process(int *ary, int size){   /// int com = 0;   char  com='s';    while(ProcessCommand(ary,size,com))    {         com = GetCommand();        } }  int pintu(){    int ary[16]; //数字0 代表空白    for (int i=0;i<16; i++)    {        ary[i] = i;    }    Process(ary,16);    return 0;}

                                             
0 0