最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)推箱子小項(xiàng)目

 更新時(shí)間:2021年08月02日 11:45:28   作者:王也枉不了  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)推箱子小項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)推箱子小項(xiàng)目的具體代碼,供大家參考,具體內(nèi)容如下

代碼:

#include <bits/stdc++.h>
#include<conio.h>
using namespace std;
const int MAXN =10;
class GM
{ int x=1,y=1; //x縱坐標(biāo) ,y橫坐標(biāo)
  int count =0;
 public:
 char map[MAXN][MAXN];
 GM();
 int RUN();
 int check(int x1,int y1,int t,int C);//檢查
 void Display(); //打印
 void Show();
 void Start();
 };
 void GM::Start()
 {
    while(1)
  {
     Show();
  int h;
  cin>>h;
  if(h==521)
  { 
     Display();
 while(1) {

   int h=RUN();
   if(h==-1){system("cls");
   cout<<"I LOVE YOU!";
   system("pause");
    exit(0);
   }
   else if(h==4)
   { system("cls");
     GM k;
     k.Start(); 
   }
   else Display();
   }
 
  }
  else
  {system("cls");
   
    cout<<"輸錯(cuò)了再試一次(521)";
  }
  }
 }
 void GM::Show()
{
cout<<"__________________________"<<endl;
cout<<"|       WXK&&WSN(共1關(guān))   |"<<endl;
cout<<"|    游戲規(guī)則:           |"<<endl;
cout<<"|     &:人    O:箱子     |"<<endl;
cout<<"|     H:墻    *:目的地   |"<<endl;
cout<<"|    操作說(shuō)明 Q:退出     |"<<endl;
cout<<"|     W:上    S:下        |"<<endl;
cout<<"|     D:右    A:左        |"<<endl;
cout<<"|    開(kāi)始輸入:521        |"<<endl;
cout<<"|_________________________|"<<endl;
}
  void GM:: Display() //打印
 { system("cls");
 cout<<"Count:"<<count<<"/ 2"<<endl;
   for(int i=0;i<10;i++)
    {
        for(int j=0; j<10;j++)
        if(map[i][j]!='0')
            cout<<map[i][j];
          else cout<<" ";
        cout<<endl;
    }
 }
GM::GM() //初始化地圖
{
 fill(map[0],map[0]+MAXN*MAXN,'0');
 for(int i=0;i<MAXN;i++)
 {
   map[0][i]='H';
    map[i][0]='H';
     map[MAXN-1][i]='H';
      map[i][MAXN-1]='H';
 } 
 map[2][2]='O';
 map[6][2]='O';
 map[1][1]='P';
 map[1][3]='H';
 map[2][3]='H';
 map[3][3]='H';
 map[2][5]='H';
 map[6][4]='H';
 map[5][4]='H';
 map[7][4]='H';
 map[3][5]='H';
 map[3][6]='H';
 map[3][8]='H';
 map[4][8]='H';
 map[6][5]='*';
 
}

int GM::check(int x1,int y1,int t,int L)
{  int M=0,N=0;
  if(t==1)
  { M=L;
    N=0;
  }
  else if(t==-1)
  {
    M=0;
    N=L;
  }
if(map[x1][y1]=='H'||(map[x1][y1]=='O'&&(map[x1-M][y1+N]=='H'||map[x1-M][y1+N]=='O')))//有箱子但是會(huì)被主檔和直接是墻
return -1;
else if(map[x1][y1]=='O'&&map[x1-M][y1+N]!='H')//當(dāng)有箱子且不會(huì)被墻檔
{ if(map[x1-M][y1+N]=='*')
return 3;
  return 1;
}
else if(map[x1][y1]!='H'&&map[x1][y1]!='*')return 2;
}
int GM::RUN()
{ 
 char ch =getch();
 int t =1,L=1;//t判斷上下還是左右,L判斷加減
 if(ch =='a'||ch=='d'||ch=='A'||ch=='D')t=-1;
 if(ch=='a'||ch=='s'||ch=='A'||ch=='S')L=-1;
 if(ch=='Q'||ch=='q')return 4;

 if(t==1&&check(x-L,y,t,L)==1)//往上或下有箱子了話
 {
   map[x][y]='0';
 x-=L;
 map[x][y]='P';
 map[x-L][y]='O';
 }
 else if(t==1&&check(x-L,y,t,L)==2)//往上或者往下能走了話
 {
   map[x][y]='0';
   x-=L;
   map[x][y]='P';
 }
  else if(t==1&&check(x-L,y,t,L)==3)
 {   map[x][y]='0';
   x-=L;
   map[x][y]='P';
   if(count==2)
  return -1;
 }
 else if(t==-1&&check(x,y+L,t,L)==1)//往左或右有箱子了話
 {
   map[x][y]='0';
 y+=L;
 map[x][y]='P';
 map[x][y+L]='O';
 }
  else if(t==-1&&check(x,y+L,t,L)==2)//往左或者往右能走了話
 {
   map[x][y]='0';
  y+=L;
   map[x][y]='P';
 }
  else if(t==-1&&check(x,y+L,t,L)==3)
 {   map[x][y]='0';
  y+=L;
   map[x][y]='P';
   count++;
   if(count==2)
  return -1;
 }
}
int main() {
system("color E4");
  GM k; 
  k.Start();

}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++ map詳解

    C++ map詳解

    下面小編就為大家?guī)?lái)一篇淺談c++中的map。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-10-10
  • 關(guān)于C++中虛擬繼承的一些總結(jié)分析

    關(guān)于C++中虛擬繼承的一些總結(jié)分析

    虛擬繼承在一般的應(yīng)用中很少用到,所以也往往被忽視,這也主要是因?yàn)樵贑++中,多重繼承是不推薦的,也并不常用
    2013-09-09
  • C語(yǔ)言內(nèi)存泄露很嚴(yán)重的解決方案

    C語(yǔ)言內(nèi)存泄露很嚴(yán)重的解決方案

    這篇文章主要介紹了C語(yǔ)言內(nèi)存泄露很嚴(yán)重的解決方案,預(yù)防內(nèi)存泄漏問(wèn)題有多種方法,比如加強(qiáng)代碼檢視、工具檢測(cè)和內(nèi)存測(cè)試等,下面文章總結(jié)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • C/C++函數(shù)參數(shù)聲明解析int?fun()?與?int?fun(void)?的區(qū)別講解

    C/C++函數(shù)參數(shù)聲明解析int?fun()?與?int?fun(void)?的區(qū)別講解

    C++中int fun()和int fun(void)的區(qū)別在于函數(shù)參數(shù)的聲明方式,前者默認(rèn)允許任意參數(shù),而后者表示沒(méi)有參數(shù),通過(guò)清晰的實(shí)例源代碼,詳細(xì)解釋了它們?cè)诤瘮?shù)聲明和調(diào)用中的不同之處,這篇文章介紹了C/C++函數(shù)參數(shù)聲明int?fun()與int?fun(void)的差異,需要的朋友可以參考下
    2024-01-01
  • C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)指針的使用

    C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)指針的使用

    這篇文章主要介紹了C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)指針的使用,下面文章將讓我們掌握指針的概念和用法、指針與數(shù)組之間的關(guān)系、指針指向的指針、如何使用指針變量做函數(shù)參數(shù)等更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • 一文帶你掌握C++中的移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)

    一文帶你掌握C++中的移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)

    這篇文章主要為大家詳細(xì)介紹了C++中的移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們深入掌握C++有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C/C++ 中的預(yù)處理器指令及用法詳解

    C/C++ 中的預(yù)處理器指令及用法詳解

    本文介紹了C/C++預(yù)處理器指令的用途和示例,包括包含頭文件、定義宏、條件編譯、取消宏定義和#pragma指令等,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • C++ Boost Chrono實(shí)現(xiàn)計(jì)時(shí)碼表流程詳解

    C++ Boost Chrono實(shí)現(xiàn)計(jì)時(shí)碼表流程詳解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • 淺談C++內(nèi)存管理基礎(chǔ)知識(shí)

    淺談C++內(nèi)存管理基礎(chǔ)知識(shí)

    這篇文章主要為大家介紹了C++的內(nèi)存管理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • C++超詳細(xì)探究new/delete的使用

    C++超詳細(xì)探究new/delete的使用

    這篇文章主要介紹了C++中new與deleted關(guān)鍵字的使用,new在動(dòng)態(tài)內(nèi)存中為對(duì)象分配空間并返回一個(gè)指向該對(duì)象的指針;delete接受一個(gè)動(dòng)態(tài)對(duì)象的指針, 銷毀該對(duì)象, 并釋放與之關(guān)聯(lián)的內(nèi)存
    2022-07-07

最新評(píng)論

綦江县| SHOW| 盈江县| 固始县| 彭山县| 潼南县| 和平县| 宝丰县| 富锦市| 司法| 巴彦县| 伽师县| 外汇| 呼和浩特市| 郑州市| 吉水县| 左权县| 文化| 安平县| 永福县| 巴林左旗| 保定市| 扶风县| 靖西县| 香河县| 德庆县| 闸北区| 乐山市| 南涧| 烟台市| 山丹县| 宁国市| 吉木乃县| 连平县| 克拉玛依市| 神农架林区| 景德镇市| 黄浦区| 丹东市| 洪雅县| 建水县|