игра в кости с ++ со случайным

Вы начинаете бросать кости. Удалите 6 и сложите оставшиеся кости, чтобы получить r_1. Теперь бросьте оставшиеся кости, уберите 6 и сложите оставшиеся кости, чтобы получить 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`

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

(Обратите внимание, что когда вы делаете это таким образом, нет необходимости в массиве.)

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector