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 關注
- 99 瀏覽
添加回答
舉報