这次我用我该死的自己写了一个程序,但我只是想确保我做得对,如果有人有任何建议要改进它
a)定义并实现由以下UML图描绘的Die类,为一个骰子(骰子的单数)创建一个ADT,其中面部显示的值介于1和die上的numberOfFaces之间。定义一个双参数构造函数,默认值为6个面,1个面值。定义并实现roll()方法,通过生成1和numberOfFaces之间的随机数并将该数字存储在faceValue中来模拟骰子的滚动。提供一个存取器来返回模具的面值和print()方法来打印模具的面值。
b)使用composition来设计一个由两个六面Die对象组成的PairOfDice类。使用main()函数创建一个驱动程序,将PairDice对象滚动1000次,然后计算出显示的蛇眼(即两个)和盒子车(即两个六个)的数量。
die.h
#ifndef DIE_H
#define DIE_H
class die {
private:
int numberOfFaces;
int faceValue;
public:
die();
die(int, int);
int roll();
void print();
};
#ENDIF
die.cpp
#include "die.h"
#include<iostream>
#include<ctime>
#include<random>
using namespace std;
die::die()
{
numberOfFaces=6;
faceValue=1;
}
die::die(int numOfFaces, int faceVal)
{
numberOfFaces=numOfFaces;
faceValue=faceVal;
}
int die::roll()
{
faceValue=rand()%numberOfFaces;
return faceValue;
}
void die::print()
{
cout << faceValue << endl;
}
pairOfDice.h
#include "die.h"
#ifndef PAIROFDICE_H
#define PAIROFDICE_H
class pairOfDice :
public die
{
private:
die die1;
die die2;
int value1;
int value2;
int total;
public:
pairOfDice();
int roll();
};
#endif
pairOfDice.cpp
#include "pairOfDice.h"
pairOfDice::pairOfDice()
:die(6,1)
{
value1=1;
value2=1;
total=value1+value2;
}
int pairOfDice::roll()
{
value1=die::roll();
value2=die::roll();
total=value1+value2;
return total;
}
的main.cpp
#include"pairOfDice.h"
#include<iostream>
using namespace std;
int main()
{
int rolls=0, total=0, snakeEyes=0, boxCars=0;
pairOfDice dice;
while(rolls<1000)
{
total = dice.roll();
if(total==2)
snakeEyes++;
else if(total==6)
boxCars++;
else
rolls++;
}
cout << rolls << " " << snakeEyes << " " << boxCars << endl;
system("pause");
return 0;
}