测品娱乐
您的当前位置:首页基于C++的21点游戏

基于C++的21点游戏

来源:测品娱乐
/*游戏名称:21点益智游戏

创作团队:软日1010班游戏设计小组(之一) 负责人:陈振涛 时间:2011—05—06 */

#include #include\"Poker.h\" #include\"Player.h\"

#include \"com_player.h\" #include//////洗牌 #include #include #include #include

#include/////////////用于文件存在性检测 using namespace std; //using ios::in; //using ios::out; //using ios::app;

extern int Poker_num=0;

extern vectorpoke;///////////////生命为全局变量,不可初始化 //extern const char *const_person;

void creat_Poker(Poker * name); void set_Poker(Poker *p); void re_play(Poker * name); char de_cin();

void output_information(Player &p1,const char*pp);

bool input_information (Player &p,const char *pp,string mima); //bool new_output_information(Player & p,const char * pp);

int main() { creat_Poker(&poke[0]);//返回指针,,创建扑克 set_Poker(&poke[0]);//返回指针,洗牌 // for(int jp=0;jp民// }//////////////////////////////用于展示一幅完整的扑克 char dd; int ii=0;//////////////专用的循环变量 char new_name[32]; string name1; string mima1=\"aa\"; string mima2=\"bb\"; fstream in_out; vectorpoke(52,0); com_player compture_one; Player person_one; cout<<\"新用户?(Y/N)\"<>name1; //int ii=0; cout<(new_name); if(!access(const_person,0)) { cout<<\"存在性检测结果:\"<}///////c存在返回0不存在返回一u else

{ cout<<\"恭喜您,该用户可用\"<>mima1; cout<<\"确认密码\"<>mima2; if(mima1!=mima2) cout<<\"不匹配,重新输入\"<>name1; int ii=0; for(ii=0;iinew_name[ii]=name1[ii]; } //new_name[ii]='.'; //new_name[ii+1]='t'; //new_name[ii+2]='x'; //new_name[ii+3]='t'; new_name[ii]='\\0'; cout<<\"输入密码\"<>mima1; const char* const_person1=const_cast(new_name); bool de_new=input_information(person_one,const_person1,mima1); if(de_new) { cout<<\"用户信息匹配成功开始游戏\"<while(compture_one.cget_sum()<15) { compture_one.cPoker_push(); re_play(&poke[0]); //getchar(); }

compture_one.cshow_first(); for (;;) { person_one.show_Poker(); char de_player; cout<<\"是否要牌(Y/N)\"<////////////////发牌阶段、//////////////////////// cout<<\"电脑\";

compture_one.cshow_Poker(); cout<person_one.show_Poker();

cout</////////////////k开始判断胜负、、、、、、、、、、、、、、

if(person_one.get_sum_int()>21&&compture_one.cget_sum()<22) { cout<<\"电脑胜利\"<else if(person_one.get_sum_int()<22&&compture_one.cget_sum()>21) { cout<<\"玩家胜利\"<}

else if(person_one.get_sum_int()>21&&compture_one.cget_sum()>21) { cout<<\"平分秋色\"<compture_one.cget_sum()) { cout<<\"玩家胜利\"<//////////////胜负已经定更新用户信息//////////////

person_one.rename_change();

output_information(person_one,new_name);

cout<<\"信息成功更新,存储信息已为最新\"<cout<<\"是否继续?(Y/N)\"<dd=de_cin();

if(dd=='y'||dd=='Y') { cout<}while(dd=='y'||dd=='Y');

cout<<\"谢谢游戏,再见\"<///////////////////////////////////////////////

///////////洗牌

void set_Poker(Poker *p) { //cout<<\"洗牌\"<//////初始化扑克

void creat_Poker(Poker * name) { for(int j=0;j<52;j++) { name[j].hua=j/13+3; name[j].num=j%13+49;//转换成为字符型 //if(name[]) switch(name[j].num) { case '1':name[j].num='A';

break; case ':':name[j].num='1'; break; case ';':name[j].num='J'; break; case'<':name[j].num='Q'; break; case '=':name[j].num='K'; break; } } }

void re_play(Poker * name) { // cout<<52-Poker_num<<\"当前扑克张数\"<51) { set_Poker(name); }

}///////////////扑克用完之后的处理,每次发牌都会检验扑克是否用完 char de_cin() { char de; do{ cin>>de; if(!(de=='n'||de=='N'||de=='Y'||de=='y')) cout<<\"输入有误重新输入\"</////////////////输入用户信息。来源:文件///////////

bool input_information(Player &p,const char*pp,string mima ) { //cout<//cout<<\"成功性检测吧读取\"<>p.name>>p.mima>>p.score>>p.rename; if(p.mima==mima) { decide=1; //break; } else { decide=0; } input.close(); return decide;////返回真值说明用户名匹配成功 }

///////////////////写入用户信息,目标用户文件/////////// void output_information(Player & p,const char * pp) { //Player p;

// cout<///////////新用户用户名合法性检测 //

//////////关与游戏升级,计划在2.0版本加入密码保护功能,3,0版本争取写出图形界面啊、//////////////

头文件三个

// Poker.h: interface for the Poker class. //

//////////////////////////////////////////////////////////////////////

#if !defined(AFX_POKER_H__6288609E_E8DA_4234_982B_1321FCC9FC06__INCLUDED_) #define AFX_POKER_H__6288609E_E8DA_4234_982B_1321FCC9FC06__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000 //#include #include class Poker { char num; char hua; public: Poker(char num=0,char hua=0); void show(); int getnum(); friend void creat_Poker(Poker * name); virtual ~Poker(); };

#endif

// !defined(AFX_POKER_H__6288609E_E8DA_4234_982B_1321FCC9FC06__INCLUDED_) // Player.h: interface for the Player class. //

//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PLAYER_H__26240C16_0DED_48BE_AE3E_E4FACBC7B7E9__INCLUDED_)

#define AFX_PLAYER_H__26240C16_0DED_48BE_AE3E_E4FACBC7B7E9__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000 #include #include\"Poker.h\" #include #include using namespace std; using std::string; class Player { string name; string mima; string rename; unsigned int score; vectorhand_Poker; public: Player(string name=\" \// Player(Player & a ); void show_in();//输出信息 void show_Poker();//输出扑克 void rename_change();//适时改变称号 int get_sum_int();//得到点数之和 void set_new(string name=\"0\设置新成员 void Poker_push();//拿牌 void Player_win(); friend bool input_information (Player &p,const char *pp,string mima); friend void output_information(Player &p,const char*pp); friend bool new_output_information(Player & p,const char * pp); void delete_all(); virtual ~Player(); };

#endif

// !defined(AFX_PLAYER_H__26240C16_0DED_48BE_AE3E_E4FACBC7B7E9__INCLUDED_)

// com_player.h: interface for the com_player class. //

//////////////////////////////////////////////////////////////////////

#if !defined(AFX_COM_PLAYER_H__AB2B96C5_874D_47A0_ADEF_8FFD6E9F9049__INCLUDED_) #define

AFX_COM_PLAYER_H__AB2B96C5_874D_47A0_ADEF_8FFD6E9F9049__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000 #include #include\"Poker.h\" using namespace std; class com_player { vectorchand_Poker; public: com_player(); void cshow_Poker(); int cget_sum(); void cPoker_push();//拿牌 void cshow_first(); void delete_all(); virtual ~com_player(); };

#endif

// !defined(AFX_COM_PLAYER_H__AB2B96C5_874D_47A0_ADEF_8FFD6E9F9049__INCLUDED_) 原文件

// Poker.cpp: implementation of the Poker class. //

//////////////////////////////////////////////////////////////////////

#include \"Poker.h\" #include using namespace std;

////////////////////////////////////////////////////////////////////// // Construction/Destruction

//////////////////////////////////////////////////////////////////////

Poker::Poker(char num,char hua) { this->num=num; this->hua=hua;

}

void Poker::show() { cout<int Poker::getnum() {

// char num1=num;//////当前时刻一只可以当做一 switch(num) { case 'A':return num-; break; case 'J': case 'Q': case 'K': case '1': return 10; break; default: return num-48; break; } }

Poker::~Poker() { }

// Player.cpp: implementation of the Player class. //

//////////////////////////////////////////////////////////////////////

#include \"Player.h\" #include\"Poker.h\" #include using namespace std;

//extern int Poker_num;/////全局变量声明

////////////////////////////////////////////////////////////////////// // Construction/Destruction

//////////////////////////////////////////////////////////////////////

extern int Poker_num; extern vectorpoke;

Player::Player(string name,string mima,int score,string rename) { this->name=name; this->mima=mima; this->score=score;

}/////////////////////////////构造函数 /*Player::Player(Player & a ) { name=a.name; mima=a.mima; rename=a.rename; score=a.score; hand_Pocker=a.Pocker; }////浅复制就好,不必深复制*/

void Player::show_in() { cout<<\"用户名:\\"<}///////////////////输出手牌,每次回合结束调用 void Player::rename_change() { if(score<30) rename=\"菜鸟\"; else if(score<70) rename=\"新手\"; else if(score<100) rename=\"高手\"; else rename=\"大师\";

}///////////////////////////根据分数及时调整称号,每次加分后调用 int Player::get_sum_int() { int sum=0; for(int jpl=0;jpl{ sum+=hand_Poker[jpl].getnum(); } return sum; }

///////////////////////////////得到现在用户手牌点数之和,回合结束调用 void Player::set_new(string name,string mima,int score) { this->name=name; this->mima=mima; this->score=score; rename_change();

}////////////////////////////////设定人物,开始游戏时又得到的信息确定调用 void Player::Poker_push() { hand_Poker.push_back(poke[Poker_num]); cout<<\"玩家要牌\"<void Player::Player_win() { cout<<\"得到三分\"<void Player::delete_all() { hand_Poker.clear();

}//////////游戏结束清空所有手牌 Player::~Player() { }

// com_player.cpp: implementation of the com_player class. //

//////////////////////////////////////////////////////////////////////

#include \"com_player.h\" #include #include\"Poker.h\" extern int Poker_num;

extern vectorpoke(52); using namespace std;

////////////////////////////////////////////////////////////////////// // Construction/Destruction

//////////////////////////////////////////////////////////////////////

com_player::com_player() { }

void com_player::cshow_Poker() { for (int ci1=0;ci1void com_player::cPoker_push() { //poke[Poker_num].show(); chand_Poker.push_back(poke[Poker_num]); cout<<\"电脑拿牌\"<int com_player::cget_sum() { int csum_temp=0; for (int ci2=0;ci2void com_player::delete_all() { chand_Poker.clear(); }

void com_player::cshow_first() { cout<<\"电脑展示一张手牌\"; chand_Poker[0].show(); cout<<\"结束\"<}

com_player::~com_player() { }

因篇幅问题不能全部显示,请点此查看更多更全内容