私はC++を初めてお使いです。プレイヤーが終了するまで、コンピュータとプレーヤーの勝利を追跡する方法を理解する助けが必要です。私は変数をグローバルに宣言できると思っていましたが、それが良いのかどうかはわかりません。これは私がこれまで持っていたものです。ここでユーザーが終了するまでコンピューターの勝ちとプレーヤーの勝ちを追跡するには?
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
// function declarations
int computerRoll();
int computerGuess();
void winner(int uGuess, int cGuess, int uSum, int cSum);
int main()
{
// variable declaration
int userSum = 0, userGuess = 0, aiGuess = 0, aiSum = 0, play = 0;
while (true) {
// ask user for sum of 3 dice rolls
cout << "Enter the sum of your 3 dice rolls: ";
cin >> userSum;
cout << "\n\n";
// check for correct user input
while (userSum > 18 || userSum < 3)
{
cout << "\a\a\a Please enter a sum between 3 and 18: ";
cin >> userSum;
cout << "\n\n";
}
//computer guess
aiGuess = computerGuess();
cout << "The computer has guessed " << aiGuess << " For your number";
cout << "\n\n";
// computer rolls dice 3 times
aiSum = computerRoll();
// User guesses the amount that was rolled by the computer
cout << "Please guess the sum of the 3 dice rolls by the computer: ";
cin >> userGuess;
cout << "\n\n";
// check for correct user input
while (userGuess > 18 || userGuess < 3)
{
cout << "\a\a\a Please enter a sum between 3 and 18: ";
cin >> userGuess;
cout << "\n\n";
}
// Program determins winner/ keeps score
winner(userGuess, aiGuess, userSum, aiSum);
// ask user to keep playing or quit
cout << "Enter any number to keep playing. Enter -1 to stop: ";
cin >> play;
cout << "\n\n";
if (play == -1)
{
break;
}
else
{
continue;
}
}
return 0;
}
// simulate the computer rolling 3 dice, get sum
int computerRoll()
{
int srand(time(NULL));
int computerSum = 0;
const int MAX = 3;
int computerArray[MAX];
for (int i = 0; i < 3; i++)
{
// Just ignor the array for now, was just trying something out
computerArray[i] = rand() % (6 + 1);
computerSum += computerArray[i];
}
return computerSum;
}
// simulate the computer guessing the sum of the 3 dice player has rolled
int computerGuess()
{
int srand(time(NULL));
int guess = 0;
guess = rand() % (18 + 1);
return guess;
}
// Get the difference in guesses
void winner(int uGuess, int cGuess, int uSum, int cSum)
{
int userDifference = 0;
int compDifference = 0;
int compWins = 0;
int userWins = 0;
if (uGuess >= cSum)
{
userDifference = uGuess - cSum;
}
else if (uGuess <= cSum)
{
userDifference = cSum - uGuess;
}
if (cGuess >= uSum)
{
compDifference = cGuess - uSum;
}
else if (cGuess <= uSum)
{
compDifference = uSum - cGuess;
}
if (userDifference >= compDifference)
{
cout << "Computer wins!\n\n";
compWins = compWins++;
cout << userWins << " - " << compWins;
cout << "\n\n";
}
else // userDifference < compDifference
{
cout << "You win!\n\n";
userWins = userWins++;
cout << userWins << " - " << compWins;
cout << "\n\n";
}
}
を私はここに、グローバル変数を使用しない理由を見ていない、プログラムはかなり小さいと手続きで、これは大きなプログラムだった場合、それは悪い習慣になりますが、一般にその時点では、あなたはあなたのトラッカーをカプセル化することができます(とにかくできますが、私はこのコードのためのポイントを見ません)とにかくより多くのoopスタイルに移動します。 – George
クラスを作成します。 – deW1
@ deW1私はそれを調べなければならないでしょう。応答ありがとう –