直到某轮的和数等于点数则取胜,若在此前出现和数为7则为负。

题目:游戏规则:每个骰子有6个面,点数分别为1,2,3,4,5,6。游戏者在程序开始时输入一个无符号整数,作为产生随机数的种子。 每次投两次骰子,第一轮如果和数为7或11则为胜,游戏结束;和数为2,3,或12则为负,游戏结束;和数为其他值则将此值作为自己的点数,继续第二轮,第三轮··· #include<iostream> #include<cstdlib> //这个是不是rolldice函数的文件 using namespace std; int rolldice(void); int main() { int gamestatus,sum,mypoint; unsigned seed; cout<<"Please enter an unsigned integer:"; cin>>seed; srand(seed); sum=rolldice(); switch(sum) { case 7: case 11: gamestatus=1; break; case 2: case 3: case 12: gamestatus=2; break; default: gamestatus=0; mypoint=sum; cout<<"point is "<<mypoint<<endl; break; } while(gamestatus==0) { sum=rolldice(); if(sum==mypoint) gamestatus=1; else if(sum==7) gamestatus=2; } if(gamestatus==1) cout<<"player is win\n"; else cout<<"player is loses\n"; } int rolldice(void) { int die1,die2,worksum; die1=1+rand()%6; //这里为什么要这么写?? die2=1+rand()%6; worksum=die1+die2; cout<<"player rolled "<<die1<<'+'<<die2<<'='<<worksum<<endl; return worksum; }

沧海一幻觉
浏览 108回答 1
1回答

慕的地8271018

关于你这里的rand的问题,解释如下:intrand()函数,随机产生一整数&nbsp;&nbsp;rand()%MAX产生[0,MAX)的整数&nbsp;a+rand()%(b-a+1)产生[a,b]之间的整数下面是代码:/*每个骰子有六面,这些面包含1,2,3,4,5,6个点,每次掷两枚骰子,然后计算点数之和。如果第一次的和味7或11,则游戏者获胜。2,3或12,则输。4,5,6,8,9,10则继续,并将这个和作为游戏者获胜所需要的点数,直到赚到该点数是算游戏者胜。如果7次仍未,则输*/#include<iostream>#include<cstdlib>#include<ctime>#include<cassert>#include"Random.H"usingnamespacestd;#defineMIN1#defineSIDE6#defineWIN21intdice::getP(void){srand(time(NULL));intp1=MIN+rand()%SIDE;intp2=MIN+rand()%SIDE;cout<<"\np1="<<p1<<",p2="<<p2<<endl;return(p1+p2);}intrule::judge(intp){assert((p>=2)&&(p<=12))intret;if(p==7||p==11){ret=1//winwhenfirsttime}elseif(p==2||p==3||p==4){ret=-1//lostwhenfirsttime}else{ret=0;}returnret;}intboy::play(void){ruler;diced;intret;while((++time)<=7){intp1=d.getP();intret1=r.judge(p1);if(time==1){if((ret1==1)){cout<<"Congratulations,YouWin!"<<endl;return1;}elseif((ret1==-1)){cout<<"MyGod,YouLost"<<endl;return-1;}}total_+=p1;if(total==WIN){cout<<"Congratulations,YouWin!"<<endl;return1;}}return-1;}&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP