首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嗨-瞧,游戏有点曲折。

嗨-瞧,游戏有点曲折。
EN

Stack Overflow用户
提问于 2015-10-15 19:11:54
回答 2查看 796关注 0票数 1

卡在这个C++作业上了。这是一个典型的Hi游戏,其中一个随机数是通过计算机从1-100生成的,几个N个玩家必须猜出这个数字。球员的人数是3-5人.如果输入小于/大于数字,则下一个播放器的范围将相应更改(例如,如果秘密号码为10,播放机1输入5,则下一个播放器显示的范围为5-100而不是1-100)。

问题是,赋值要求游戏的G数(其中G>= N,玩家的数目)被玩。游戏的数量,不像玩家的数量,如果没有限制的话(所以只要比玩家的数量多就可以了)。更重要的是,每一场比赛都必须从一个不同的编号玩家开始(例如,第一场比赛从玩家1开始,然后是玩家2....Player N,而第2场比赛开始于玩家2,玩家3....Player N,回到玩家1)。

他们不断地输入猜测,直到一个人得到秘密号码,然后记录该特定球员的得分。

我如何编码得分记录与球员号码改变每一场比赛?我是个初学者被困了一整天..。我把我所有的都附上去了。注意*:只使用if,if- Only,while,do-while,for,断开,语句继续和切换。

代码语言:javascript
运行
复制
#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;
}
EN

回答 2

Stack Overflow用户

发布于 2015-10-15 19:18:38

因为这是作业,我不会给你密码。然而,这是您应该从这里开始的逻辑。

您需要在程序本身的执行过程中存储这些数据吗?如果程序关闭后需要保存分数,则需要使用文件。查一下C++文件IO

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

由于这是家庭作业,到目前为止,你在课堂上和书中都会被教授写这个程序所需要的一切。参考你的教科书,如果你真的被困住了,就去找你的教授谈谈--这就是他在那里的目的。

票数 1
EN

Stack Overflow用户

发布于 2015-10-15 19:28:12

也许我不太了解你。

制作牌桌,然后选择回合顺序。然后,您可以保存玩家的得分状态,并开始新的游戏与新的命令,以污水处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33156617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档