带有扭曲的 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(用于在一个对象中存储多条信息)、vector 或 array(用于存储连续的片段信息,例如每次播放或存储一组玩家),或用于一些更复杂设置的自定义类/对象。这不是我能帮你决定的事情。您需要逐一查看并做出决定。
由于这是家庭作业,到目前为止,您将在课堂和书中学到编写此程序所需的一切。参考您的教科书,如果您真的遇到困难,请与您的教授谈谈 - 这就是他的目的。
【讨论】:
您好,感谢您的快速回复 - 但我还没有学到任何东西,所以我不确定如何使用这些数组,但会研究它。是的,我很快会和他谈谈,但我想我会尝试外部资源,因为现在是凌晨 3 点! 啊,好吧,我为您的研究工作鼓掌!关于这个项目,祝你一切顺利。为了将来参考,这类问题通常不被认为最适合该网站......它们通常被关闭和/或被否决。请参阅this link,了解有关如何提出一个好的 *** 问题的大量优秀信息。【参考方案2】:也许我没听懂你的意思。
制作玩家表,然后选择回合顺序。然后您可以保存玩家得分状态并以新的回答顺序开始新游戏
【讨论】:
以上是关于带有扭曲的 Hi-lo 游戏的主要内容,如果未能解决你的问题,请参考以下文章