1、基于C+的21点游戏/*游戏名称:21点益智游戏创作团队:软日1010班游戏设计小组(之一)负责人:陈振涛时间:20110506*/#include#includePoker.h#includePlayer.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;/生命为全局变量
2、,不可初始化/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
3、* pp);int main() creat_Poker(&poke0);/返回指针,创建扑克 set_Poker(&poke0);/返回指针,洗牌/ for(int jp=0;jppoke.size();jp+)/ / pokejp.show();民/ /用于展示一幅完整的扑克 char dd; int ii=0;/专用的循环变量 char new_name32; string name1; string mima1=aa; string mima2=bb; fstream in_out; vectorpoke(52,0); com_player compture_one; Player p
4、erson_one; cout新用户?(Y/N)endl; dd=de_cin(); if(dd=y|dd=Y) for(;) cout创建新角色输入用户名,密码name1; /int ii=0; coutname1.length()当前长度endl; for(int ii=0;iiname1.length();ii+) new_nameii=name1ii; coutiiiiendl; new_nameii=.; new_nameii+1=t; new_nameii+2=x; new_nameii+3=t; new_nameii+4=0; coutnew_name; const char *
5、const_person=const_cast(new_name); if(!access(const_person,0) cout存在性检测结果:endl; cout对不起,该用户名已存在,请重新注册endl;/有大问题! continue; /c存在返回0不存在返回一u else cout恭喜您,该用户可用endl; /break; /coutconst_person; /if(!new_output_information(person_one,const_person) ) / break; / else / continue; cout请输入密码endl; for(;mima1!=m
6、ima2;) cout输入密码mima1; cout确认密码mima2; if(mima1!=mima2) cout不匹配,重新输入endl; output_information(person_one,const_person); break; person_one.set_new(name1,mima1); else for(;) cout输入用户名name1; int ii=0; for(ii=0;iiname1.length();ii+) new_nameii=name1ii; /new_nameii=.; /new_nameii+1=t; /new_nameii+2=x; /new_
7、nameii+3=t; new_nameii=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用户信息匹配成功开始游戏endl; break; else cout对不起,用户名或密码错误重新输入endl; /游戏开始阶段玩家信息初始化工做/ do cout游戏开始endl; compture_one.cPoker_push(); re_play(&poke0
8、); compture_one.cPoker_push(); re_play(&poke0);/开始阶段每人两张牌 person_one.Poker_push(); re_play(&poke0); person_one.Poker_push(); re_play(&poke0); /游戏开始阶段没人两张牌?/ while(compture_one.cget_sum()15) compture_one.cPoker_push(); re_play(&poke0); /getchar(); compture_one.cshow_first(); for (;) person_one.show_P
9、oker(); char de_player; cout是否要牌(Y/N)endl; de_player=de_cin(); if(de_player=Y|de_player=y) person_one.Poker_push(); re_play(&poke0); else break; /发牌阶段、/ cout电脑; compture_one.cshow_Poker(); coutcompture_one.cget_sum(); coutendl; cout玩家; person_one.show_Poker(); coutperson_one.get_sum_int(); cout21&co
10、mpture_one.cget_sum()22) cout电脑胜利endl; else if(person_one.get_sum_int()21) cout玩家胜利21&compture_one.cget_sum()21) cout平分秋色compture_one.cget_sum() cout玩家胜利endl; person_one.Player_win(); else if (person_one.get_sum_int()=compture_one.cget_sum() cout平分秋色endl; else cout玩家失败endl; /胜负已经定更新用户信息/ person_one.
11、rename_change(); output_information(person_one,new_name); cout信息成功更新,存储信息已为最新endl; compture_one.delete_all(); person_one.delete_all(); person_one.show_in(); /getchar(); cout是否继续?(Y/N)endl; dd=de_cin(); if(dd=y|dd=Y) coutendl; coutendl; cout新的回合endl; coutendl; coutendl; while(dd=y|dd=Y); cout谢谢游戏,再见e
12、ndl; return 0;/洗牌void set_Poker(Poker *p) /cout洗牌endl; for(int kp=0;kp52;kp+) srand(time(0); int t=0; Poker temp; for(int ip=0;ip52;ip+) t=rand()%52; temp=pip; pip=pt; pt=temp; Poker_num=0;/重置当前牌数/初始化扑克void creat_Poker(Poker * name) for(int j=0;j52;j+) namej.hua=j/13+3; namej.num=j%13+49;/转换成为字符型 /i
13、f(name) switch(namej.num) case 1:namej.num=A; break; case :namej.num=1; break; case ;:namej.num=J; break; case:namej.num=Q; break; case =:namej.num=K; break; void re_play(Poker * name) / cout52-Poker_num当前扑克张数51) set_Poker(name); /扑克用完之后的处理,每次发牌都会检验扑克是否用完char de_cin() char de; do cinde; if(!(de=n|de
14、=N|de=Y|de=y) cout输入有误重新输入endl; while(!(de=n|de=N|de=Y|de=y); return de;/输入用户信息。来源:文件/bool input_information(Player &p,const char*pp,string mima ) /coutpp当前用户endl; fstream input; bool decide; input.open(pp,ios:in); /cout成功性检测吧读取input.good()endl; if(!input.good()/此时打开成功返回1 cout文件打开失败,退出程序p.namep.mima
15、p.scorep.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;/ coutpp当前用户endl; fstream in_out; in_out.open(pp,ios:out ); /cout成功性检测吧xiechu in_out.good()endl; if(!in_out.good()
16、/此时打开成功返回1 cout文件打开失败,退出程序endl; exit(-1);/文件打开失败退出程序 else in_outp.name p.mima p.score p.renameendl; cout信息保存成功 1000#pragma once#endif / _MSC_VER 1000/#include#includeclass Poker char num; char hua;public: Poker(char num=0,char hua=0); void show(); int getnum(); friend void creat_Poker(Poker * name);
17、 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#prag
18、ma once#endif / _MSC_VER 1000#include#includePoker.h#include#includeusing namespace std;using std:string;class Player string name; string mima; string rename; unsigned int score; vectorhand_Poker;public: Player(string name= ,string mima= ,int score=0,string rename= );/ Player(Player & a ); void show
19、_in();/输出信息 void show_Poker();/输出扑克 void rename_change();/适时改变称号 int get_sum_int();/得到点数之和 void set_new(string name=0,string mima=0,int score=0);/设置新成员 void Poker_push();/拿牌 void Player_win(); friend bool input_information (Player &p,const char *pp,string mima); friend void output_information(Player
20、 &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_A
21、DEF_8FFD6E9F9049_INCLUDED_)#define AFX_COM_PLAYER_H_AB2B96C5_874D_47A0_ADEF_8FFD6E9F9049_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000#include#includePoker.husing 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./
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1