带有扭曲的 Hi-lo 游戏

Posted

技术标签:

【中文标题】带有扭曲的 Hi-lo 游戏【英文标题】:Hi-lo game with a twist 【发布时间】:2015-10-15 19:11:54 【问题描述】:

卡在这个 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;

【问题讨论】:

wins[playerID]++,基本上。一个整数数组,每个玩家都有一个条目,计算他们赢了多少次。 如果你不希望使用数组,你可以做丑陋的。制作 5 个变量,player1wins,player2wins 并使用 switch case 来增加它们。 哦,这太有意义了!谢谢,我想我现在知道了! 【参考方案1】:

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

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

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

由于这是家庭作业,到目前为止,您将在课堂和书中学到编写此程序所需的一切。参考您的教科书,如果您真的遇到困难,请与您的教授谈谈 - 这就是他的目的。

【讨论】:

您好,感谢您的快速回复 - 但我还没有学到任何东西,所以我不确定如何使用这些数组,但会研究它。是的,我很快会和他谈谈,但我想我会尝试外部资源,因为现在是凌晨 3 点! 啊,好吧,我为您的研究工作鼓掌!关于这个项目,祝你一切顺利。为了将来参考,这类问题通常不被认为最适合该网站......它们通常被关闭和/或被否决。请参阅this link,了解有关如何提出一个好的 *** 问题的大量优秀信息。【参考方案2】:

也许我没听懂你的意思。

制作玩家表,然后选择回合顺序。然后您可以保存玩家得分状态并以新的回答顺序开始新游戏

【讨论】:

以上是关于带有扭曲的 Hi-lo 游戏的主要内容,如果未能解决你的问题,请参考以下文章

带有listentcp的扭曲IRCClient

使用带有扭曲的javascript找到最大总和

带有 python 扭曲服务器的 Qt C++ tcp 客户端

检测 TCP 何时拥塞 python 扭曲套接字服务器

使用带有扭曲位置的slick.js的缩略图滑块

在 WSGI 容器中使用扭曲的词