为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
沧海一幻觉 2023-03-05 19:15:25
题目:游戏规则:每个骰子有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; }
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

关于你这里的rand的问题,解释如下:
int
rand()函数,随机产生一整数
  rand()%MAX
产生[0,MAX)的整数
 
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"
using
namespace
std;
#define
MIN
1
#define
SIDE
6
#define
WIN
21
int
dice::getP(void)
{
srand(time(NULL));
int
p1
=
MIN+rand()%SIDE;
int
p2
=
MIN+rand()%SIDE;
cout
<<
"\n
p1
=
"
<<
p1
<<
",
p2="
<<
p2
<<
endl;
return
(p1+p2);
}
int
rule::judge(int
p)
{
assert(
(p>=2)
&&
(p<=12)
)
int
ret;
if(
p==7
||
p
==
11)
{
ret
=
1
//
win
when
first
time
}
else
if
(p==2||p==3||p==4)
{
ret
=
-1
//
lost
when
first
time
}
else
{
ret
=
0;
}
return
ret;
}
int
boy::play(void)
{
rule
r;
dice
d;
int
ret;
while(
(++time)<=7
)
{
int
p1
=
d.getP();
int
ret1
=
r.judge(p1);
if(time
==
1)
{
if(
(ret1==1)
)
{
cout
<<
"
Congratulations,
You
Win!"
<<
endl;
return
1;
}
else
if
((ret1
==
-1))
{
cout
<<
"My
God,
You
Lost"
<<
endl;
return
-1;
}
}
total_
+=
p1;
if(total==WIN)
{
cout
<<
"
Congratulations,
You
Win!"
<<
endl;
return
1;
}
}
return
-1;
}

 


查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号