编写一个模拟掷骰子赌场游戏的C ++程序。这些是游戏规则: •如果玩家在第一次掷骰时投掷7或11(两个骰子的总和),则玩家赢得游戏。 •如果玩家在第一次掷骰时投掷2,3或12(两个骰子的总和),则玩家将失去游戏。 •如果玩家在第一次掷骰时投掷4,5,6,8,9或10(两个骰子的总和),则他(s)既不赢也不输但是创造了一个“点”。如果是这种情况,玩家继续掷骰子直到再次投掷点(4,5,6,8,9或10),并且玩家赢得游戏。但是,如果玩家在投掷“点数”之前投掷7(两个骰子的总和),则玩家将失去游戏。
您将创建一个名为rollDice的函数,在调用时,将滚动两个骰子并返回一个介于2和12之间的随机数。每次调用rollDice时,程序都应输出滚动结果
该程序会询问玩家“另一个游戏? Y(es)或N(o)?“并在按下Y或y以外的任何键时终止。
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int dice1, dice2 = 0;
int rollDice;
char repeat = 'y';
cout << "**********************************************************"<< endl;
cout << "******** Welcome to the Kyung Bae Choi Casino ********"<< endl;
cout << "********* Step up to the table and place your bets! ******"<< endl;
cout << "**********************************************************"<< endl;
while (repeat == 'y' || repeat == 'Y')
{
dice1 = rand() % 6 + 1;
dice2 = rand() % 6 + 1;
rollDice = dice1 + dice2;
cout << "Your rolled " << rollDice;
if (rollDice == 7 || rollDice == 11)
{
cout << ". Winner !" << endl ;
}
else if (rollDice == 2 || rollDice == 3 || rollDice == 12)
{
cout << ". You lose!" << endl;
}
else if (rollDice == 4 || rollDice == 5 ||rollDice == 6 ||rollDice == 8 || rollDice == 9 || rollDice == 10)
{
dice1 = rand() % 6 + 1;
dice2 = rand() % 6 + 1;
int sum2 = dice1 + dice2;
if( sum2 == rollDice )
{
cout << ". Winner !" << endl;
break;
}
else if( sum2 == 7 )
{
cout << ". You Lose!" << endl;
break;
}
}
cout <<"Another game? Y(es) or N(o)" << endl;
cin >> repeat;
while (repeat == 'n' || repeat == 'N')
{
cout << "Thank you for playing!"<< endl;
}
return 0;
}
}
这只输出7.所以,它一直说你的滚动7.赢家! 另一场比赛?是还是不是)。并且,如果我把y,程序结束。或者如果我把n,程序输出“谢谢你玩!”不休。
什么是问题??
如何让它继续重新掷骰子直到玩家滚动获胜的“点数”或掷出7点。
答案 0 :(得分:2)
您错过了"...."
声明中的cout
。因此,编译器被愚弄相信Thank
,you
,...是指令[keywords / variables],这实际上是错误的。
更改
cout << Thank you for playing!<< endl;
到
cout <<"Thank you for playing!"<< endl;
拇指规则:
始终尝试在错误/警告转换期间查看编译器提供的信息。这里是行号58
。找出错误的指导是非常有帮助的。
编辑:
请不要编辑当前的问题并添加全新的查询。重新获得以前的版本并提到编辑。否则,它会使之前的答案无关紧要。
答案 1 :(得分:0)
您在cout << Thank you for playing!<< endl;
中缺少引号。
cout << "Thank you for playing!" << endl;
此外,您测试repeat == 'n'
或'N'
的逻辑错误:
要注意第二个错误,使用标准缩进样式会很有帮助。
答案 2 :(得分:0)
在打印字符串时使用Double qoutes (")
..
cout <<"Thank you for playing!"<< endl;
还有@irrelephant在他的回答中提出的另一件事
使用
if(repeat == 'n' || repeat == 'N') //Use if condition
{
cout << Thank you for playing!<< endl;
return 0; // exit only when user enter `n` or `N`
}
如果您在外面使用return 0;
,则无论用户输入的内容为Y
还是N
,程序都会终止。