基于C++的21点游戏.docx

上传人:b****5 文档编号:6277420 上传时间:2023-01-05 格式:DOCX 页数:21 大小:19.63KB
下载 相关 举报
基于C++的21点游戏.docx_第1页
第1页 / 共21页
基于C++的21点游戏.docx_第2页
第2页 / 共21页
基于C++的21点游戏.docx_第3页
第3页 / 共21页
基于C++的21点游戏.docx_第4页
第4页 / 共21页
基于C++的21点游戏.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于C++的21点游戏.docx

《基于C++的21点游戏.docx》由会员分享,可在线阅读,更多相关《基于C++的21点游戏.docx(21页珍藏版)》请在冰豆网上搜索。

基于C++的21点游戏.docx

基于C++的21点游戏

/*游戏名称:

21点益智游戏

创作团队:

软日1010班游戏设计小组(之一)

负责人:

陈振涛

时间:

2011—05—06

*/

#include

#include"Poker.h"

#include"Player.h"

#include"com_player.h"

#include//////洗牌

#include

#include

#include

#include

#include/////////////用于文件存在性检测

usingnamespacestd;

//usingios:

:

in;

//usingios:

:

out;

//usingios:

:

app;

externintPoker_num=0;

externvectorpoke;///////////////生命为全局变量,不可初始化

//externconstchar*const_person;

voidcreat_Poker(Poker*name);

voidset_Poker(Poker*p);

voidre_play(Poker*name);

charde_cin();

voidoutput_information(Player&p1,constchar*pp);

boolinput_information(Player&p,constchar*pp,stringmima);

//boolnew_output_information(Player&p,constchar*pp);

intmain()

{

creat_Poker(&poke[0]);//返回指针,,创建扑克

set_Poker(&poke[0]);//返回指针,洗牌

//for(intjp=0;jp

//{

//poke[jp].show();

民//}//////////////////////////////用于展示一幅完整的扑克

chardd;

intii=0;//////////////专用的循环变量

charnew_name[32];

stringname1;

stringmima1="aa";

stringmima2="bb";

fstreamin_out;

vectorpoke(52,0);

com_playercompture_one;

Playerperson_one;

cout<<"新用户?

(Y/N)"<

dd=de_cin();

if(dd=='y'||dd=='Y')

{

for(;;)

{

cout<<"创建新角色输入用户名,密码"<

cin>>name1;

//intii=0;

cout<

for(intii=0;ii

{

new_name[ii]=name1[ii];

}

cout<<"ii"<

new_name[ii]='.';

new_name[ii+1]='t';

new_name[ii+2]='x';

new_name[ii+3]='t';

new_name[ii+4]='\0';

cout<

constchar*const_person=const_cast(new_name);

if(!

access(const_person,0))

{

cout<<"存在性检测结果:

"<

cout<<"对不起,该用户名已存在,请重新注册"<

continue;

}///////c存在返回0不存在返回一u

else

{

cout<<"恭喜您,该用户可用"<

//break;

}

//cout<

//if(!

new_output_information(person_one,const_person))

//break;

//else

//continue;

cout<<"请输入密码"<

for(;mima1!

=mima2;)

{

cout<<"输入密码"<

cin>>mima1;

cout<<"确认密码"<

cin>>mima2;

if(mima1!

=mima2)

cout<<"不匹配,重新输入"<

}

output_information(person_one,const_person);

break;

}

person_one.set_new(name1,mima1);

}

else

{

for(;;)

{

cout<<"输入用户名"<

cin>>name1;

intii=0;

for(ii=0;ii

{

new_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<<"输入密码"<

cin>>mima1;

constchar*const_person1=const_cast(new_name);

boolde_new=input_information(person_one,const_person1,mima1);

if(de_new)

{

cout<<"用户信息匹配成功开始游戏"<

break;

}

else

cout<<"对不起,用户名或密码错误重新输入"<

}

}/////////////////////////////////////////////////////游戏开始阶段玩家信息初始化工做//////////////////////////////////////

do{

cout<<"游戏开始"<

compture_one.cPoker_push();

re_play(&poke[0]);

compture_one.cPoker_push();

re_play(&poke[0]);////开始阶段每人两张牌

person_one.Poker_push();

re_play(&poke[0]);

person_one.Poker_push();

re_play(&poke[0]);

//////////////////////////////////////游戏开始阶段没人两张牌?

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

while(compture_one.cget_sum()<15)

{

compture_one.cPoker_push();

re_play(&poke[0]);

//getchar();

}

compture_one.cshow_first();

for(;;)

{

person_one.show_Poker();

charde_player;

cout<<"是否要牌(Y/N)"<

de_player=de_cin();

if(de_player=='Y'||de_player=='y')

{

person_one.Poker_push();

re_play(&poke[0]);

}

else

break;

}

////////////////发牌阶段、////////////////////////

cout<<"电脑";

compture_one.cshow_Poker();

cout<

cout<

cout<<"玩家";

person_one.show_Poker();

cout<

cout<

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

if(person_one.get_sum_int()>21&&compture_one.cget_sum()<22)

{

cout<<"电脑胜利"<

}

elseif(person_one.get_sum_int()<22&&compture_one.cget_sum()>21)

{

cout<<"玩家胜利"<

person_one.Player_win();

}

elseif(person_one.get_sum_int()>21&&compture_one.cget_sum()>21)

{

cout<<"平分秋色"<

}

else

{

if(person_one.get_sum_int()>compture_one.cget_sum())

{

cout<<"玩家胜利"<

person_one.Player_win();

}

elseif(person_one.get_sum_int()==compture_one.cget_sum())

{

cout<<"平分秋色"<

}

else

cout<<"玩家失败"<

}

//////////////胜负已经定更新用户信息//////////////

person_one.rename_change();

output_information(person_one,new_name);

cout<<"信息成功更新,存储信息已为最新"<

compture_one.delete_all();

person_one.delete_all();

person_one.show_in();

//getchar();

cout<<"是否继续?

(Y/N)"<

dd=de_cin();

if(dd=='y'||dd=='Y')

{

cout<

cout<

cout<<"新的回合"<

cout<

cout<

}

}while(dd=='y'||dd=='Y');

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

return0;

}

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

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

voidset_Poker(Poker*p)

{

//cout<<"洗牌"<

for(intkp=0;kp<52;kp++)

srand(time(0));

intt=0;

Pokertemp;

for(intip=0;ip<52;ip++)

{

t=rand()%52;

temp=p[ip];

p[ip]=p[t];

p[t]=temp;

}

Poker_num=0;//////重置当前牌数

}

//////初始化扑克

voidcreat_Poker(Poker*name)

{

for(intj=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;

}

}

}

voidre_play(Poker*name)

{

//

cout<<52-Poker_num<<"当前扑克张数"<

if(Poker_num>51)

{

set_Poker(name);

}

}///////////////扑克用完之后的处理,每次发牌都会检验扑克是否用完

charde_cin()

{

charde;

do{

cin>>de;

if(!

(de=='n'||de=='N'||de=='Y'||de=='y'))

cout<<"输入有误重新输入"<

}while(!

(de=='n'||de=='N'||de=='Y'||de=='y'));

returnde;

}

/////////////////输入用户信息。

来源:

文件///////////

boolinput_information(Player&p,constchar*pp,stringmima)

{

//cout<

fstreaminput;

booldecide;

input.open(pp,ios:

:

in);

//cout<<"成功性检测吧读取"<

if(!

input.good())/////////此时打开成功返回1

{

cout<<"文件打开失败,退出程序"<

exit(-1);/////////////////////文件打开失败退出程序

}

input>>p.name>>p.mima>>p.score>>p.rename;

if(p.mima==mima)

{

decide=1;

//break;

}

else

{

decide=0;

}

input.close();

returndecide;////返回真值说明用户名匹配成功

}

///////////////////写入用户信息,目标用户文件///////////

voidoutput_information(Player&p,constchar*pp)

{

//Playerp;

//cout<

fstreamin_out;

in_out.open(pp,ios:

:

out);

//cout<<"成功性检测吧xiechu"<

if(!

in_out.good())/////////此时打开成功返回1

{

cout<<"文件打开失败,退出程序"<

exit(-1);/////////////////////文件打开失败退出程序

}

else

{

in_out<

cout<<"信息保存成功"<

}

in_out.close();

}

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

//

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

头文件三个

//Poker.h:

interfaceforthePokerclass.

//

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

#if!

defined(AFX_POKER_H__6288609E_E8DA_4234_982B_1321FCC9FC06__INCLUDED_)

#defineAFX_POKER_H__6288609E_E8DA_4234_982B_1321FCC9FC06__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

//#include

#include

classPoker

{

charnum;

charhua;

public:

Poker(charnum=0,charhua=0);

voidshow();

intgetnum();

friendvoidcreat_Poker(Poker*name);

virtual~Poker();

};

#endif//!

defined(AFX_POKER_H__6288609E_E8DA_4234_982B_1321FCC9FC06__INCLUDED_)

//Player.h:

interfaceforthePlayerclass.

//

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

#if!

defined(AFX_PLAYER_H__26240C16_0DED_48BE_AE3E_E4FACBC7B7E9__INCLUDED_)

#defineAFX_PLAYER_H__26240C16_0DED_48BE_AE3E_E4FACBC7B7E9__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

#include

#include"Poker.h"

#include

#include

usingnamespacestd;

usingstd:

:

string;

classPlayer

{

stringname;

stringmima;

stringrename;

unsignedintscore;

vectorhand_Poker;

public:

Player(stringname="",stringmima="",intscore=0,stringrename="");

//Player(Player&a);

voidshow_in();//输出信息

voidshow_Poker();//输出扑克

voidrename_change();//适时改变称号

intget_sum_int();//得到点数之和

voidset_new(stringname="0",stringmima="0",intscore=0);//设置新成员

voidPoker_push();//拿牌

voidPlayer_win();

friendboolinput_information(Player&p,constchar*pp,stringmima);

friendvoidoutput_information(Player&p,constchar*pp);

friendboolnew_output_information(Player&p,constchar*pp);

voiddelete_all();

virtual~Player();

};

#endif//!

defined(AFX_PLAYER_H__26240C16_0DED_48BE_AE3E_E4FACBC7B7E9__INCLUDED_)

//com_player.h:

interfaceforthecom_playerclass.

//

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

#if!

defined(AFX_COM_PLAYER_H__AB2B96C5_874D_47A0_ADEF_8FFD6E9F9049__INCLUDED_)

#defineAFX_COM_PLAYER_H__AB2B96C5_874D_47A0_ADEF_8FFD6E9F9049__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

#include

#include"Poker.h"

usingnamespacestd;

classcom_player

{

vectorchand_Poker;

public:

com_player();

voidcshow_Poker();

intcget_sum();

voidcPoker_push();//拿牌

voidcshow_first();

voiddelete_all();

virtual~com_player();

};

#endif//!

defined(AFX_COM_PLAYER_H__AB2B96C5_874D_47A0_ADEF_8FFD6E9F9049__INCLUDED_)

原文件

//Poker.cpp:

implementationofthePokerclass.

//

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1