Вы изменяете значение внутренней копии аргумента, переданного функциям.Если вы хотите, чтобы изменение было выполнено для внешней переменной, замените определения функций так, чтобы они взяли ссылки: int& score
.
Также обратите внимание, что rand() % 7
даст вам значение в диапазоне [0, 6].Кости имеют значения в диапазоне [1, 6], вместо них следует использовать 1 + rand() % 6
.
* Обновление: *
Это можно сделать с помощью ссылок C ++:
int computer(int& compscore)
{
...
compscore += diceRoll;
...
}
int var = 0;
computer( var );
Для этого объявления функция принимает фактическую переменную var
в качестве аргумента, а изменения, сделанные в compscore
внутри функции, отражаются в переменной var
как compscore
иvar
для этого конкретного вызова являются просто псевдонимами к той же переменной.
В C тот же эффект достигается с помощью указателей:
int computer(int* compscore)
{
...
*compscore += diceRoll;
...
}
int var = 0;
computer( &var );
Этот вызов функции дает ему адреспеременная, которая должна быть изменена.Для общего использования можно предположить, что первая реализация, использующая ссылки, автоматически сгенерирует решение компилятором, аналогичное этому последнему фрагменту.