基于c++的猜拳游戏.docx

上传人:b****3 文档编号:5055226 上传时间:2022-12-12 格式:DOCX 页数:10 大小:17.25KB
下载 相关 举报
基于c++的猜拳游戏.docx_第1页
第1页 / 共10页
基于c++的猜拳游戏.docx_第2页
第2页 / 共10页
基于c++的猜拳游戏.docx_第3页
第3页 / 共10页
基于c++的猜拳游戏.docx_第4页
第4页 / 共10页
基于c++的猜拳游戏.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于c++的猜拳游戏.docx

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

基于c++的猜拳游戏.docx

基于c++的猜拳游戏

#include之五兆芳芳创作

#include

#include

usingnamespacestd;

voidshow(intinput)

{

switch(input)

{

case1:

cout<<("出的是石头!

");

break;

case2:

cout<<("出的是铰剪!

");

break;

case3:

cout<<("出的是布!

");

break;

default:

;

}

}

voidcompare(intinputPlay,intinputComputer)

{

if(inputPlay==1&&inputComputer==2||inputPlay==2&&inputComputer==3||inputPlay==3&&inputComputer==1)

{

cout<<("\n玩家胜!

\n");

}

elseif(inputPlay==inputComputer)

{

cout<<("\n平局!

\n");

}

else

{

cout<<("\n电脑胜!

\n");

}

}

intmain()

{

cout<<"欢送您玩石头-剪子-布游戏(游戏作者:

张龙)版本1.0\n"<

cout<<"请公道安插时间,切勿沉迷于游戏!

\n"<

cout<<"游戏说明:

数字1代表石头数字2代表剪子数字3代表布\n"<

charisGoOn;

intinputPlay;

intinputComputer;

cout<<("猜拳游戏\n");

cout<<("游戏说明:

\n\n");

cout<<("数字1代表石头数字2代表剪子数字3代表布\n");

srand(time(NULL));

do

{

cout<<("\n请输入您要猜的:

\n");

cin>>inputPlay;

if(inputPlay>=0&&inputPlay<=3)

{

cout<<("您");

show(inputPlay);

inputComputer=rand()%3;

cout<<("电脑");

show(inputComputer);

compare(inputPlay,inputComputer);

}

else

{

cout<<("您输入有错误!

\n");

cout<<("\n数字1代表石头数字2代表剪子数字3代表布\n");

}

cout<<"\n您需要持续么?

(y/n)";

cin>>isGoOn;

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

cout<<"欢送下次再玩!

";

system("pause");

}

#include

#include

usingnamespacestd;

intwin_or_loss(int);//判断输赢的子函数

voidbaoshi(time_t&);//给出当前系统时间的子函数

voidkeep_window_open();//让程序运行完毕后,窗口不立马消失

intmain()

{

time_tthe_time_1,the_time_2;

charq;

intwin(0),loss(0),ping(0);

doublegailv(0),sum(0);

cout<<"欢送您玩石头-剪子-布游戏(游戏作者:

张龙)版本1.1\n"<

cout<<"请公道安插时间,切勿沉迷于游戏!

\n"<

baoshi(the_time_1);

cout<<"游戏说明:

数字1代表石头数字2代表剪子数字3代表布\n"<

do{

cout<<"\n请问您一共想要玩几回猜拳游戏,请输入大于0的正整数(建议您至少玩十次):

"<

doubletimes;

//输入的次数必须为大于0的正整数,不成为0,正数,浮点数,字符或是字符串,如果出现不法输入,下面代码是用来处理这些不法输入

while(!

(cin>>times))

{

cout<<"您的输入不正当,必须为一个数字,请重新输入:

"<

cin.clear();

cin.sync();

}

if(times<=0)

{

cout<<"您的输入不正当,必须为正整数!

\n"<

cin.clear();

cin.sync();

q='y';

continue;

}

elseif(times!

=int(times))

{

cout<<"您的输入不正当,必须为正整数!

\n"<

cin.clear();

cin.sync();

q='y';

continue;

}

//游戏正式开始

for(inti=0;i

{

cout<<"\n请输入您打算猜的拳(用数字123代替,数字1代表石头数字2代表剪子数字3代表布)"<

while

(1)

{

doublet;

cin>>t;

if(cin.bad())

{

cerr<<"Sorry,出现了系统毛病,请重新运行游戏!

\n"<

return1;

}

//用来处理不法输入

if(cin.fail())

{

cerr<<"Sorry!

请您必须输入一个正当的数字(1or2or3)"<

cout<<"请输入您打算猜的拳(用数字123代替)"<

cin.clear();

cin.sync();

continue;

}elseif(t!

=1&&t!

=2&&t!

=3)

{

cerr<<"Sorry!

请您必须输入一个正当的数字(1or2or3)\n"<

cout<<"请输入您打算猜的拳(用数字123代替)\n"<

cin.clear();

cin.sync();

continue;

}else

{

cout<<"第"<

if(t==1)

cout<<"您猜的拳是:

石头"<

elseif(t==2)

cout<<"您猜的拳是:

铰剪"<

else

cout<<"您猜的拳是:

布"<

intn=win_or_loss(t);

if(n==0)

++ping;

elseif(n>0)

++win;//统计赢的次数

else

++loss;//统计输的次数

break;

}

}

if(i==times-1)

cout<<"您的猜拳次数已经达到您所设定的"<

}

cout<<"请问是否还要持续本游戏(Y/other)"<

cin>>q;//在玩够开始自己所设的次数后,如果仍然打算持续,则输入'y'

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

//对整个游戏进程做一个完整统计

sum=win+loss+ping;

gailv=win/sum;

cout<<"\n本次游戏您一共猜拳:

"<

cout<<"其中一共胜利:

"<

cout<<"其中一共输了:

"<

cout<<"其中一共打平:

"<

cout<<"您的胜率为:

"<

cout<<"您的败率为:

"<

cout<<"您的打平的几率为:

"<<(1-loss/sum-gailv)*100<<"%"<

if(sum<10)

cout<<"由于您猜拳的次数小于10次,不具有统计学意义,所以您与电脑到底谁厉害,无法评判,请大侠重新来过!

\n"<

elseif(gailv<0.4)

cout<<"您真是个菜鸟,持续努力哦!

\n"<

else

cout<<"大侠好厉害啊,竟然赢了电脑,佩服佩服!

\n"<

baoshi(the_time_2);

cout<<"本次游戏您一共破费了:

"<

keep_window_open();

return0;

}

//游戏焦点代码,判断输赢

intwin_or_loss(intt)

{

time_tthe_time;

structtm*tm_ptr;

intrec_sec;

//电脑的猜拳最好的办法是设定一组完全的随机数,但是一般很难设计出完全的随机数,因此想了一个很巧妙的办法,取玩游戏时的系统时间的秒,按照当前的秒,电脑给出相应猜出的拳

//这样用一种相对比较随机的办法,即使玩游戏的人知道了随机数的纪律,也很难完全获胜

the_time=time((time_t*)0);

tm_ptr=gmtime(&the_time);

rec_sec=tm_ptr->tm_sec;

intans;

//switch中主要分了三种情况,第一种是60以内的素数,然后又添加了几个其他的,凑够20;第二种是能被3除开的,然后再添加几个凑成20个;剩下的为第三种

switch(rec_sec)

{

case2:

case8:

case5:

case7:

case11:

case13:

case17:

case19:

case23:

case29:

case31:

case37:

case41:

case43:

case47:

case53:

case59:

case22:

case38:

case56:

cout<<"电脑游戏程序的猜的拳是:

石头"<

ans=1;

break;

case0:

case3:

case6:

case9:

case12:

case15:

case18:

case21:

case24:

case27:

case30:

case33:

case36:

case39:

case42:

case45:

case48:

case51:

case54:

case57:

cout<<"电脑游戏程序的猜的拳是:

剪子"<

ans=2;

break;

default:

cout<<"电脑游戏程序的猜的拳是:

布"<

ans=3;

break;

}

if(t==ans)

{

cout<<"您这次和电脑打了一个平手!

"<

return0;

}

switch(t)

{

case1:

if(ans==2)

{

cout<<"祝贺您!

您这次赢了电脑!

\n"<

return1;

}

else

{

cout<<"哈哈!

输给电脑了!

再接再厉!

"<

return-1;

}

break;

case2:

if(ans==3)

{

cout<<"祝贺您!

您这次赢了电脑\n"<

return1;

}

else

{

cout<<"哈哈!

输给电脑了!

再接再厉!

"<

return-1;

}

break;

case3:

if(ans==1)

{

cout<<"祝贺您!

您这次赢了电脑\n"<

return1;

}

else

{

cout<<"哈哈!

输给电脑了!

再接再厉!

"<

return-1;

}

break;

}

}

inlinevoidkeep_window_open()

{

cin.clear();

cout<<"Pleaseenteracharactertoexit\n";

charch;

cin>>ch;

return;

}

inlinevoidbaoshi(time_t&timeval)

{

(void)time(&timeval);

cout<<"当前北京时间为:

"<

return;

}

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

当前位置:首页 > 法律文书 > 辩护词

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

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