随机骰子游戏

c++ Dice Game With Random

本文关键字:游戏 随机      更新时间:2023-10-16

先掷m个骰子。去掉6,把剩下的骰子加起来得到r_1。现在掷剩下的骰子,去掉6,把剩下的骰子加起来得到r_2;继续这样做,直到所有的骰子显示6(你没有剩下)。你的分数是S = r_1 + r_2 +…+ r_t, t是掷出的次数。如果S> 5 m,你赢,否则你输。

代码:

#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`

你不应该一直掷所有骰子:

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);

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