c ++随机游戏骰子游戏

时间:2014-03-19 19:32:25

标签: c++ random dice

你从滚动骰子开始。移除6并将剩余的骰子加起来得到r_1。现在滚动剩余的骰子,移除6's并将其余的骰子加起来得到r_2;继续这个直到所有骰子都显示6(你没有剩下)。您的分数是S = r_1 + r_2 + ... + r_t,其中t是卷数。如果S>你赢了5米,否则你输了。

代码:

#include <iostream>
#include <stdio.h>      //  NULL
#include <stdlib.h>     // srand, rand
#include <time.h>       // time
using namespace std;

void cheddar();
void feta();

int main(){
  //cheddar();
  feta();
}

void feta(){
  int count = 1;
  int ri = 0;
  srand(time(0));
  int dice[7];
  int score = 0;
  int m = 7;
  int fiveofm = 5*m;
  int numofdice = 7;
  do{
    cout << count << " & ";
    for(int i=0;i<7;i++){
        dice[i]=rand()%6+1;
    }
    for(int i=0;i<7;i++){
        cout << dice[i] << " & ";
    }
    for(int i=0;i<7;i++){
        if (dice[i] != 6){
            ri += dice[i];
            //score += dice[i];
        }
        if (dice[i] == 6){
            numofdice--;
        }
    }
    cout << ri << endl;
    ri = 0;
    count++;
  }while(numofdice != 0);
  /*
  if (score <= fiveofm){
    cout << "You lose!" << endl;
  }
  else if (score > fiveofm){
    cout << "You win!" << endl;
  }
*/
}

任何帮助将不胜感激。

编辑:

抱歉,在输入问题之前我点击了发送。它要么导致无限循环,要么它没有摆脱6然后从那里生成。它只需要重新输入5个新数字,并保持与之前相同的数字。

例如:

`2 & 3 & 3 & 4 & 1 & 5 & 6 & 18`

`6 & 1 & 1 & 6 & 1 & 4 & 2 & 9`

`5 & 3 & 6 & 6 & 5 & 5 & 4 & 22`

`5 & 3 & 3 & 3 & 3 & 6 & 5 & 22`

`2 & 5 & 5 & 3 & 6 & 5 & 1 & 21`

1 个答案:

答案 0 :(得分:0)

你不应该继续滚动所有骰子:

for(int i=0;i<7;i++)

相反,只重新播放仍在播放的内容:

int m = 7;
int numofdice = m;
do{
  cout << count << " & ";
  for(int i=numofdice-1; i>=0; --i){
    dice[i]=rand()%6+1;
    cout << dice[i] << " & ";
    if (dice[i] == 6){
        numofdice--;
    }
    else{
        ri += dice[i];
        //score += dice[i];
    }
  }
  cout << ri << endl;
  ri = 0;
  count++;
}while(numofdice != 0);

(请注意,当你这样做时,实际上不需要数组。)