【发布时间】:2021-05-20 12:19:23
【问题描述】:
我正在尝试创建一个数字猜谜游戏,其中用户输入他们想要猜测的数字整数以及这些整数的范围 1 到 (m)。然后计算机随机生成该范围内的数字供用户猜测。用户猜测直到他们得到所有数字正确例如:
输入数字整数:4 输入从 1 到 (m) 的整数范围:6 输入猜测:2 3 1 4 你的3个猜测是正确的。再猜 输入猜测:2 3 1 6 正确的。你想再玩一次吗?
我现在得到的输出是:
输入数字整数:4
输入从 1 到 (m) 的整数范围:6
输入您在 1 到 6 范围内选择的 4 的猜测值:2 3 1 4
此 game.cpp、game.h 和 driver.cpp 共有三个文件。如果您发现我的代码有其他问题,请告诉我。这是我用 C++ 编写的第一个程序。
//game.cpp
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include "Game.h"
#include <iostream>
#include <iomanip>
#include <vector>
//---------------------------------------------------------------------------------------------
// generateNumbers: Fucntion to generate numbers between 1 to (m) and
// generate as many has user wanted.
// n: the amount of integers
// m: the max number the user wants
// numbers: returns the numbers generated by the computer
//---------------------------------------------------------------------------------------------
std:: vector<int> Game::generateNumbers(int n, int m) {
// Declare array size to generate random numbers based on what is between 1 to (m)
std::vector<int> random_numbers;
int numbers;
// Randomly generate n intgers between 1 to (m)
for (int i = 0; i < n; i++) {
numbers = (rand() % m) + 1;
random_numbers.push_back(numbers);
}
return random_numbers;
}
//-----------------------------------------------------------------------------------------------
// guessingGame: See's how many numbers the user got to correct until they win the game.
// n: the amount of integers
// m: the max number the user wants
//-----------------------------------------------------------------------------------------------
void Game::guessingGame(int n, int m) {
// Declare variables
std::vector<int> pointer;
int correct_answers = 0;
// Set inputGuess equal to a vector which is teh size of n
std::vector<int> inputGuess;
inputGuess.resize(n);
pointer = generateNumbers(n, m);
// Get user guesses integers
for (int i = 0; i < n; i++) {
std::cin >> inputGuess[i];
}
// See if the user guesses and computers answers match up
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (pointer[i] == inputGuess[j]) {
correct_answers++; //counts how many numbers the user got correct
}
}
}
}
// driver.cpp
#include <iostream>
#include "Game.h"
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <iomanip>
#include <vector>
int main()
{
//Declare variables
Game guess;
int n; // number of integers
int m; // max value for integers
int guesses;
std::vector<int> userNumbers;
std::srand(static_cast<unsigned int>(time(nullptr))); // Intialize random number
// Prompt the user to enter integers and range
// Have user enter number of integers they want
std::cout << "Enter the Number of the Integers (n): ";
std::cin >> n;
// Have user enter the range if integers between 1 to m
std::cout << "Enter the Number of Each Integers from 1 to (m): ";
std::cin >> m;
// guesses from user are not correct then user needs to keep guessing
while (userNumbers.size() != n) {
std::cout << "Enter your guesses for the " << n << " " << "in the range from 1 to " << m << " " << "that you have been selected: ";
for (int i = 0; i < n; i++) {
userNumbers.push_back(n);
guess.guessingGame(n,m);
}
}
// If the user has guessed the correct numbers and would like to play again
if (userNumbers.size() == n) {
std::cout << "You are correct! Play Again?";
}
// If numbers guessed not correct then display how many are correct
else {
std::cout << sizeof(userNumbers) << "of your guesses are correct." << std::endl;
}
};
// game.h
#include <vector>
class Game {
public:
// Get what numbers the users have guessed are correct
std::vector<int> getNumbers() {
return correct_number;
}
// Generate random numbers between the range set by user
std:: vector<int> generateNumbers(int n, int m);
// Begin the guessing game
void guessingGame(int n, int m);
private:
std::vector<int> correct_number; // numbers that are correct
std::vector<int> input_guess;
};
【问题讨论】:
标签: c++