类滚动骰子程序

时间:2013-11-13 04:17:11

标签: c++

我需要使用类Dice编写用于滚动骰子的C程序。主要要求是我需要使用这个main,编辑它:

int main()
{
      Dice* ptrDice;
             ???
      for (int i = 0; i < 5; i++)
      {
           ????                // roll the 5 dice
           ????                // print the outcome
      }
}

我在这里无法获得如何使用指针。任何人都可以帮忙吗?!

这是我的代码,但它不起作用:(

#include <iostream>
#include <iomanip>
#include <cstdlib>

using namespace std;

class Dice{
  public:
    Dice();
    int getNums();
    void Roll();
  private:
    int nNums;
};

Dice::Dice(){
    nNums=5;
}
int Dice::getNums()
{
    return nNums;
}
void Dice::Roll()
{
    nNums = rand()%6 + 1;
}

int main()
{
      Dice* ptrDice = new Dice;
      ptrDice -> getNums();
      for (int i = 0; i < 5; i++)
      {
       getNums[i] = rand()%6 + 1;                // roll the 5 dice
       cout << "You rolled: ";
       cout << ptrDice->getNums() << setw(4);
       cout << endl;                             // print the outcome
      }
}

我的主要麻烦是使用那个ptrDice并在main函数中打印它,我猜!

1 个答案:

答案 0 :(得分:1)

你使这变得比它需要的更复杂。

一个简单的Dice对象不需要数据成员,只需要一个成员函数。如果你正在使用rand()函数,构造函数应该使用srand(seed)为随机数生成器播种。 Roll()函数应该返回作为int滚动的数字。您根本不需要getNums()函数,只会在定义类时返回5。

class Dice() {
public:
    int roll() { return rand() % 6 + 1; }
};

...

int main() {
    Dice* ptrDice = new Dice;
    for (int i=0; i<5; i++) {
        cout << "You rolled" << ptrDice->roll() << '\n';
    }
    delete ptrDice;
}

您可以扩展此类以模拟具有任意数量边的多个骰子。然后你可以使用整数数据成员来保留骰子的数量和它们的边数。