我正在用C ++制作一个小游戏,用户将键入“roll”,程序应在1-6之间生成5个数字。游戏的目标是让所有数字都相同。
我遇到的问题是完全理解如何格式化这样的项目所需的不同算法以及允许通过该语言的不同语法类型。
我是一名学习这门语言的学生,并会感谢任何人愿意提供的任何帮助!
以下代码尚未完成,只是想要一些额外的建议!
代码:
// Random Number Game
// ***
// ***
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
#include <vector>
using namespace std;
using std::cout;
using std::cin;
using std::endl;
using std::string;
int main()
{
// Intro Instruction
cout << "Welcome to Random Number game!\n";
cout << "The objective of this game to get all 5 dice the same number.\n";
// Variables
char roll;
int dice1, dice2, dice3, dice4, dice5;
cout << "To begin the game please type roll. ";
cin >> roll;
srand((unsigned)time(0));
// Stating Low and High Numbers (Dice numbers)
int lowerrange = 1;
int upperrange = 7;
upperrange = 6;
dice1 = rand() % 6;
dice2 = rand() % 6;
dice3 = rand() % 6;
dice4 = rand() % 6;
dice5 = rand() % 6;
if ((roll == 'roll') || (roll == 'Roll'))
{
cout << dice1;
cout << dice2;
cout << dice3;
cout << dice4;
cout << dice5;
}
system("pause");
return 0;
}
答案 0 :(得分:1)
这是一个可能的解决方案 我们的想法是使用一个循环来反复询问用户对#34; roll&#34;骰子,仅出于测试目的,我在这里放了3个骰子,但你可以扩展到5个骰子。
我维护一个boolean
变量,当且仅当所有骰子具有相同的值时,如果情况如此,程序将从循环中断开,并且将打印成功的消息。
#include <iostream>
#include <string>
using namespace std;
int main()
{
// Intro Instruction
cout << "Welcome to Random Number game!\n";
cout << "The objective of this game to get all 5 dice the same number.\n";
string command;
int magic = 0;
do
{
cout << "To begin the game please type roll: ";
cin >> command;
if(command == "roll")
{
int dice1 = rand() % 6 + 1;
int dice2 = rand() % 6 + 1;
int dice3 = rand() % 6 + 1;
cout << "First Dice: " << dice1 << endl;
cout << "Second Dice: " << dice2 << endl;
cout << "Third Dice: " << dice3 << endl;
cout << "Which Dice do you want to keep? : (Enter 1, 2 or 3)" << endl;
int keep_dice;
cin >> keep_dice;
if(keep_dice == 1)
{
magic = dice1;
break;
}
else if(keep_dice == 2)
{
magic = dice2;
break;
}
else if(keep_dice == 3)
{
magic = dice3;
break;
}
}
}
while(true);
cout << "You choose the number: " << magic << ". Roll the other dices until you get for both this number." << endl;
do
{
cout << "Type roll: ";
cin >> command;
if(command == "roll")
{
int dice1 = rand() % 6 + 1;
int dice2 = rand() % 6 + 1;
cout << "First Dice: " << dice1 << endl;
cout << "Second Dice: " << dice2 << endl;
if(dice1 == magic && dice2 == magic)
{
break;
}
}
}
while(true);
cout << "You won !" << endl;
}
替代解决方案:
我的想法是创建一个接受两个参数的函数:num_dice
如果你有5个骰子将是4个要掷出的骰子,如果你有n
骰子这将是{{1} } 等等。
其他参数将是用户将选择的n-1
(使用lucky number
或switch
语句很容易)
然后,您将在函数中使用相同的逻辑重复此操作,直到if
等于n-1 dices
。
此外,认为我的代码可能需要稍微更改,以便第一次所有骰子将发生一次而不是重复,然后使用该功能,您将执行重复&#34 ;工作&#34;
答案 1 :(得分:0)
要检查所有骰子是否相同,请使用以下代码:
int magicValue = dice1;
cout << "You got:" << endl;
cout << "Dice 1: " << dice1 << endl;
cout << "Dice 2: " << dice2 << endl;
cout << "Dice 3: " << dice3 << endl;
cout << "Dice 4: " << dice4 << endl;
cout << "Dice 5: " << dice5 << endl;
if(dice2 == magicValue && dice3 == magicValue
&& dice4 == magicValue && dice5 == magicValue){
cout << "Congratulations! You Win!" << endl;
} else {
cout << "Sorry, try again next time!" << endl;
}
这样做是将magicValue设置为dice1并检查所有其他骰子变量是否相等。不是最好的方式,但我希望这对你有帮助!
答案 2 :(得分:-1)
因为您在顶部有“使用命名空间 std” 您不必指定使用 std::cout 或类似的东西。
您也可以立即将上限指定为 6。
除此之外,如果您愿意,可以将其放入循环中,添加更多输出,以便他们知道可以继续玩。