旋转的高低游戏

时间:2015-10-15 19:11:55

标签: c++

坚持这个C ++任务。这是一个典型的Hi-lo游戏,通过计算机从1-100生成随机数,并且几个N玩家必须猜测该数字。球员数量为3-5名球员。如果输入小于/大于数字,则相应的下一个玩家的范围将变化(例如,如果密码是10,而玩家1输入5,那么下一个玩家显示的范围是5-100而不是1-100)。

问题在于分配需要玩G个游戏(其中G> = N,玩家数量)。游戏数量,与玩家数量不同,如果不受限制(只要它超过玩家数量就可以)。最重要的是,每个游戏必须以不同编号的玩家开始(例如,游戏1从玩家1开始,然后是玩家2 ......玩家N,而游戏2从玩家2开始,玩家3开始....玩家N,回到球员1)。

他们不断输入猜测,直到获得秘密号码,然后记录该特定玩家的分数。

如何在每场比赛改变球员号码的情况下对比分记录进行编码?我是一个初学者,被困了一整天...我已经附上了我拥有的东西。 注*:仅使用 if,if-else,while,do-while,for,break,continue和switch 语句。

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    int N, G;
    cout << "How many players (3-5)?" << endl;
    cin >> N;
    while (N < 3 || N > 5){
        cout << "Number of players must be 3-5! Try again.";
        cin >> N;
    } //Make sure 3-5 players
    cout << "How many games?" << endl;
    cin >> G;
    while (G < N) {
        cout << "At least " << N << "games! Try again.";
        cin >> G;
    }//Make sure G>=N

srand(N * G); //initalizing RNG

int g, secret, x, lo, hi; //repeat for N players for G games, define secret, input x, lower bound and higher bound
for (g = 1; g <= G; g++) {
    secret = rand() % 100 + 1; //secret number is an interger between 1 and 100
    lo = 1;
    hi = 100;
    cout << "Game #" << g << ":";
    while (x != secret) {
        cout << "Player" << (g - 1) % N + 1 << ", make a guess (" << lo << "-" << hi << "):";
        cin >> x; //ask starting player to guess the number...?
        while (x < lo || x > hi) {
            cout << "Guess must be between" << lo << "and" << hi << "Please try again.";
            cin >> x; //ask again if they input not within lo-hi range
        }
        if (x < secret) {
            cout << "Your guess is Lo.";
            lo = x;
            g++; // so that the player number gets updated
        }
        else if (x>secret) {
            cout << "Your guess is Hi.";
            hi = x;
            g++;// so that the player number gets updated
        }
        else {
            cout << "Boom! Player" << (g - 1) % N + 1 << "loses.";      
        }//get out of loop and begin new game, but HOW DO WE SAVE THE SCORE?! :(
    }
}//each game is played

return 0;
}

2 个答案:

答案 0 :(得分:1)

因为这是作业,我不会给你代码。但是,这是你应该开始的逻辑。

您是否需要在程序本身的执行之间存储?如果在程序关闭后需要保存得分 ,则需要使用文件。查看C++ File IO

如果在程序关闭后不需要保存分数,则可以使用在变量范围之外声明的数据结构。要考虑的一些选项是 struct (用于在一个对象中存储多条信息),向量数组(用于存储连续的部分)信息,例如每次播放,或存储一组播放器),或自定义类/对象用于某些更复杂的设置。这不是我可以帮你决定的。您将需要查找每个并做出决定。

由于这是家庭作业,到目前为止,你将在课堂和书中学到所有你需要的东西。参考你的教科书,如果你真的被卡住了,就和你的教授交谈 - 这就是他的目的。

答案 1 :(得分:0)

也许我不理解你。

制作球员表,然后选择轮次顺序。然后你可以保存球员得分状态,并用新的顺序开始新的比赛