1 回答

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;
}
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报