├── README.md └── Game_21Points.cpp /README.md: -------------------------------------------------------------------------------- 1 | # Game_21points 2 | C++ 3 | Game:21points 4 | -------------------------------------------------------------------------------- /Game_21Points.cpp: -------------------------------------------------------------------------------- 1 | /************************************************** 2 | ************ 3 | ************ 4 | ************ 模拟21点扑克牌游戏 5 | ************ 6 | ************ 7 | ***************************************************/ 8 | 9 | #include 10 | #include 11 | #include 12 | using namespace std; 13 | class CCard 14 | { 15 | public: 16 | CCard(); 17 | void FirstPlayTwo(); //最初两张牌 18 | int GetNumber(); //返回牌数 19 | int GetPip(); //返回点数 20 | void DisplayPip(); //依次全部显示牌面点数 21 | void DisplayPip(int); //除了第一张牌,依次全部显示牌面点数(针对计算机牌的显示) 22 | void TurnPlay(); //出一张牌 23 | void Win(); 24 | void Lose(); 25 | void Draw(); 26 | int SetGamble(int); //设置赌本,赌本不够返回-1 27 | int GetMoney(); 28 | void DisplayInfo(); //打印必要的信息 29 | int GetCurrentCard(); //返回当前牌点 30 | private: 31 | int naPip[5]; //一共5张牌 32 | int nNumber; //发了多少张牌 33 | int nDollar; //有多少钱 34 | int nGamble; //赌注 35 | int nWin; //赢局数 36 | int nLose; //输局数 37 | int nDraw; //平局数 38 | 39 | }; 40 | 41 | CCard::CCard() 42 | { 43 | nNumber=0; 44 | nDollar=100; 45 | for(int i=0;i<5;i++) 46 | naPip[i]=0; 47 | nGamble=0; 48 | nWin=nLose=nDraw=0; 49 | } 50 | 51 | int CCard::GetMoney(void) 52 | { 53 | return nDollar; 54 | } 55 | 56 | void CCard::DisplayInfo() 57 | { 58 | cout<<"您一共玩了"<=10) 100 | nPip+=10; 101 | else 102 | nPip+=naPip[i]; 103 | } 104 | return nPip; 105 | } 106 | 107 | void CCard::DisplayPip() 108 | { 109 | for(int i=0;i21) 137 | cout<<"爆了!\n"; 138 | else 139 | cout<<"牌面点数:"<21) 152 | cout<<"爆了!\n"; 153 | else 154 | cout<<"赌本:$"<21&&player.GetPip()>21)||cpu.GetPip()==player.GetPip()) 182 | { 183 | cout<<"\n\n平局!\n"; 184 | cout<<"计算机数据:\t"; 185 | cpu.DisplayPip(); 186 | cout<<"牌面点数:"<21)||(player.GetPip()&&player.GetPip()<=21)) 192 | { 193 | cout<<"\n\n恭喜您,您赢了!!\n"; 194 | cout<<"计算机数据:\t"; 195 | cpu.DisplayPip(); 196 | cout<<"牌面点数:"<>chChoice; 230 | if((chChoice=='Y'||chChoice=='y')) 231 | { 232 | if(player.GetNumber()<5) 233 | { 234 | player.TurnPlay(); 235 | cout<<"您要的这张牌是:"<21) 237 | blPlayer=0; 238 | } 239 | else 240 | { 241 | cout<<"对不起,您已经要了5次牌了。不能再要牌了!"; 242 | blPlayer=0; 243 | } 244 | } 245 | } 246 | if((chChoice=='N'||chChoice=='n')) 247 | blPlayer=0; 248 | if(cpu.GetPip()<16&&cpu.GetNumber()<5) 249 | { 250 | cpu.TurnPlay(); 251 | cout<<"计算机要牌,牌点是:"<>chChoice; 274 | while(chChoice=='Y'||chChoice=='y') 275 | { 276 | do 277 | { 278 | cout<<"您现在有赌本:$"<>nMoney; 281 | blLogic=player.SetGamble(nMoney); 282 | if(blLogic) 283 | cout<<"您的赌本不够,请重新下注!\n"; 284 | } 285 | while(blLogic); 286 | PlayTurn(cpu,player); 287 | cout<<"是否继续21点游戏(Y/N)?\n"; 288 | cin>>chChoice; 289 | } 290 | player.DisplayInfo(); 291 | cout<<"\n\n您是明智的,赌博是不好的!回去好好学习去~!\n"<