<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            C++ 實現游戲

            時間:2025-07-26 08:35:41 C語言

            C++ 實現2048游戲范例

              《2048》是一款比較流行的數字游戲,最早于2014年3月20日發行。下面是由小編為你精心編輯的C++ 實現2048游戲范例,歡迎閱讀!

              說明:我一開始玩的是IOS APP版的TRHEES,后來才玩的2048,兩者在滑動的規則上有些區別,本人這個版本是這兩者的結合。

              最后,祝試玩愉快!

              界面丑陋,求不笑。

              以下是源代碼:

              復制代碼 代碼如下:

              /*By Reason*/

              #include

              #include

              #include

              #include

              #include

              #include/pic/p>

              #include

              using namespace std;

              /pic/pic/p>

              int pane[4][4];/pic/p>

              int N=1;/pic/p>

              void showpane()/pic/p>

              {

              cout<<setw(46)<<"X2048 by Reason"<<endl;

              cout<<setw(50)<<" |-----------------------|"<<endl;

              for(int i=0;i<=3;i++)

              {

              cout<<setw(24)<<"";

              for(int j=0;j<=3;j++)

              {

              /pic/p>

              if(pane[i][j]==0)

              cout<<setw(2)<<"|"<<setw(4)<<" ";

              else

              cout<<setw(2)<<"|"<<setw(4)<<pane[i][j];

              if(j==3)

              {

              cout<<setw(2)<<"|"<<endl;

              cout<<setw(50)<<" |-----------------------|"<<endl;

              }

              }

              }

              }

              void newgame()/pic/p>

              {

              N=1;

              for(int i=0;i<=3;i++)/pic/p>

              for(int j=0;j<=3;j++)

              pane[i][j]=0;

              srand( (unsigned)time( NULL ) );

              int m=rand()%4;

              int n=rand()%4;

              int p=rand()%4;

              int q=rand()%4;

              pane[m][n]=pane[p][q]=2;

              showpane();

              }

              int if2n(int x)/pic/p>

              {

              int flag=0;

              for(int n=1;n<=11;n++)

              {

              if(x==pow(2,n))

              {

              flag=1;

              if(n>N)

              N=n;

              return flag;

              }

              }

              return flag;

              }

              int upmove()/pic/p>

              {

              int flag=0;

              for(int j=0;j<=3;j++)

              for(int i=0;i<3;i++)

              {

              if(if2n(pane[i][j]+pane[i+1][j])==1)

              {

              pane[i][j]=pane[i][j]+pane[i+1][j];

              pane[i+1][j]=0;

              flag=1;

              }

              }

              return flag;

              }

              int downmove()/pic/p>

              {

              int flag=0;

              for(int j=0;j<=3;j++)

              for(int i=3;i>0;i--)

              {

              if(if2n(pane[i][j]+pane[i-1][j])==1)

              {

              pane[i][j]=pane[i][j]+pane[i-1][j];

              pane[i-1][j]=0;

              flag=1;

              }

              }

              return flag;

              }

              int leftmove()/pic/p>

              {

              int flag=0;

              for(int i=0;i<=3;i++)

              for(int j=0;j<3;j++)

              {

              if(if2n(pane[i][j]+pane[i][j+1])==1)

              {

              pane[i][j]=pane[i][j]+pane[i][j+1];

              pane[i][j+1]=0;

              flag=1;

              }

              }

              return flag;

              }

              int rightmove()/pic/p>

              {

              int flag=0;

              for(int i=0;i<=3;i++)

              for(int j=3;j>0;j--)

              {

              if(if2n(pane[i][j]+pane[i][j-1])==1)

              {

              pane[i][j]=pane[i][j]+pane[i][j-1];

              pane[i][j-1]=0;

              flag=1;

              }

              }

              return flag;

              }

              int testup()/pic/p>

              {

              int flag=0;

              for(int j=0;j<=3;j++)

              for(int i=0;i<3;i++)

              {

              if((if2n(pane[i][j]+pane[i+1][j])==1)&&pane[i+1][j])

              {

              flag=1;

              }

              }

              return flag;

              }

              int testdown()/pic/p>

              {

              int flag=0;

              for(int j=0;j<=3;j++)

              for(int i=3;i>0;i--)

              {

              if((if2n(pane[i][j]+pane[i-1][j])==1)&&pane[i-1][j])

              {

              flag=1;

              }

              }

              return flag;

              }

              int testleft()/pic/p>

              {

              int flag=0;

              for(int i=0;i<=3;i++)

              for(int j=0;j<3;j++)

              {

              if((if2n(pane[i][j]+pane[i][j+1])==1)&&pane[i][j+1])

              {

              flag=1;

              }

              }

              return flag;

              }

              int testright()/pic/p>

              {

              int flag=0;

              for(int i=0;i<=3;i++)

              for(int j=3;j>0;j--)

              {

              if((if2n(pane[i][j]+pane[i][j-1])==1)&&pane[i][j-1])

              {

              flag=1;

              }

              }

              return flag;

              }

              int panemax()/pic/p>

              {

              int max=pane[0][0];

              for(int i=0;i<=3;i++)

              for(int j=0;j<=3;j++)

              if(pane[i][j]>max)

              max=pane[i][j];

              return max;

              }

              int ifwin()/pic/p>

              {

              int flag=0;

              if(panemax()==2048)

              {

              cout<<setw(45)<<"You Win!"<<endl;

              flag=1;

              }

              return flag;

              }

              int ifGameOver()/pic/p>

              {

              int flag=0;

              if(testup()+ testdown() + testleft() + testright() == 0)

              {

              cout<<setw(43)<<"Game Over!"<<endl;

              flag=1;

              }

              return flag;

              }

              void addnewnumberup()/pic/p>

              {

              srand( (unsigned)time( NULL ) );

              int n;

              if(N==1)

              n=1;

              else

              n=(rand()%(N)+1);

              int newnumber=pow(2,n);

              for(int i=3;i>=0;i--)

              for(int j=0;j<=3;j++)

              if(pane[i][j]==0)

              {

              pane[i][j]=newnumber;

              return;

              }

              }

              void addnewnumberdown()/pic/p>

              {

              srand( (unsigned)time( NULL ) );

              int n;

              if(N==1)

              n=1;

              else

              n=(rand()%(N)+1);

              int newnumber=pow(2,n);

              for(int i=0;i<=3;i++)

              for(int j=0;j<=3;j++)

              if(pane[i][j]==0)

              {

              pane[i][j]=newnumber;

              return;

              }

              }

              void addnewnumberleft()/pic/p>

              {

              srand( (unsigned)time( NULL ) );

              int n;

              if(N==1)

              n=1;

              else

              n=(rand()%(N)+1);

              int newnumber=pow(2,n);

              for(int j=3;j>=0;j--)

              for(int i=0;i<=3;i++)

              if(pane[i][j]==0)

              {

              pane[i][j]=newnumber;

              return;

              }

              }

              void addnewnumberright()/pic/p>

              {

              srand( (unsigned)time( NULL ) );

              int n;

              if(N==1)

              n=1;

              else

              n=(rand()%(N)+1);

              int newnumber=pow(2,n);

              for(int j=0;j<=3;j++)

              for(int i=0;i<=3;i++)

              if(pane[i][j]==0)

              {

              pane[i][j]=newnumber;

              return;

              }

              }

              int GetDirection()/pic/p>

              {

              int ret = 0;

              do

              {

              int ch = _getch();

              if(isascii(ch))

              continue;

              ch = _getch();

              switch(ch)

              {

              case 72:

              ret = 2; /pic/p>

              break;

              case 75:

              ret = 1; /pic/p>

              break;

              case 77:

              ret = 3; /pic/p>

              break;

              case 80:

              ret = 4; /pic/p>

              break;

              default:

              break;

              }

              } while (ret == 0);

              return ret;

              }

              int main()/pic/p>

              {

              system("color f9");

              int makesure=1;

              while(makesure)

              {

              system("cls");

              newgame();

              while(ifwin()+ifGameOver()==0)

              {

              int c=GetDirection();

              switch(c)

              {

              case 2:

              if(testup()==1)

              {upmove();

              addnewnumberup();

              system("cls");

              showpane();

              }

              break;

              case 4:

              if(testdown()==1)

              {

              downmove();

              addnewnumberdown();

              system("cls");

              showpane();

              }

              break;

              case 1:

              if(testleft()==1)

              {

              leftmove();

              addnewnumberleft();

              system("cls");

              showpane();

              }

              break;

              case 3:

              if(testright()==1)

              {

              rightmove();

              addnewnumberright();

              system("cls");

              showpane();

              }

              break;

              default:

              break;

              }

              }

              cout<<setw(43)<<"你的最后成績為:"<<panemax()<<endl;

              cout<<setw(60)<<"若要重新開始游戲請輸入1,若要結束請輸入0。"<<endl;

              cin>>makesure;

              while(makesure!=1&&makesure!=0)

              {

              cout<<"輸入不正確,請重新輸入!"<<endl;

              cin>>makesure;

              }

              }

              cout<<"再見!"<<endl;

              system("pause");

              return 0;

            【C++ 實現游戲】相關文章:

            C++實現一維向量旋轉算法10-17

            c++利用windows函數實現計時范例11-02

            C++實現自頂向下的歸并排序算法12-21

            c和c++中實現函數回調的方法01-18

            C++實現自底向上的歸并排序算法03-14

            堆排序算法及用C++實現基于最大堆的堆02-12

            C++如何實現二叉樹葉子節點個數計算10-15

            C++ this指針詳解08-28

            C++類的轉換02-11

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院