好的,所以我真的很陌生,我正在尝试为我正在参加的课程制作Blackjack游戏。到目前为止,我已经掌握了一切,但是当谈到实际的游戏时,我遇到了麻烦。当我查看我的代码时,我看不出为什么我的游戏无法正常运行。我期望它比我所看到的更容易解决,因为我通常会错过小事情。C++ Blackjack游戏玩法
for(;;)
{
cout << "1)Bet, 2)Hit or 3)Stay?\n";
cin >> ans;
if(ans == 1)
{
}
if(ans == 2) // Hit
{
Console::Clear();
cout << "Your Hand\n";
Player.AddCard(Deck.Draw());
cout << "\nHand Value: " << Player.HandValue() << "\n";
Player.Show();
if(Player.HandValue() > 21)
{
cout << "You Busted man...Sorry :/\n\n"
//<< "Dealer's Hand\n\n";
//Dealer.Show();
}
else if(Player.HandValue() == 21)
{
cout << "You've Won Your Freedom! :D";
}
while(Dealer.HandValue() <= 17)
{
Dealer.AddCard(Deck.Draw());
Dealer.Show(1);
if(Dealer.HandValue() > 21)
{
cout << "Dealer Busted man...You Win! :D\n"
<< "\nDealer's Hand\n";
Dealer.Show();
}
else if(Dealer.HandValue() == 21)
{
cout << "Dealer Wins...Your Soul! >:D\n"
}
}
if(Player.HandValue() > Dealer.HandValue())
{
cout << "Your Hand Beats Dealer's...You Win!! :D\n"
}
else if(Player.HandValue() < Dealer.HandValue() && Dealer.HandValue() > 17 && Player.HandValue() > 17)
{
cout << "Dealer's Hand Wins...Sorry :/\n"
}
cin.ignore(INT_MAX, '\n');
cin.clear();
cin.ignore(INT_MAX, '\n');
}
break;
if(ans == 3) // Stay
{
Console::Clear();
cout << "Your Hand\n";
cout << "\nHand Value: " << Player.HandValue() << "\n";
Player.Show();
if(Player.HandValue() > 21)
{
cout << "You Busted man...Sorry :/\n"
}
else if(Player.HandValue() == 21)
{
cout << "You've Won Your Freedom! :D\n";
cout << "\n\n";
cout << "Dealer's Hand\n";
Dealer.Show();
}
while(Dealer.HandValue() < 17)
{
Dealer.AddCard(Deck.Draw());
Dealer.Show(1);
if(Dealer.HandValue() > 21)
{
cout << "Dealer Busted man...You Win! :D\n"
}
else if(Dealer.HandValue() == 21)
{
cout << "Dealer Wins...Your Soul! >:D\n"
}
}
if(Player.HandValue() > Dealer.HandValue())
{
cout << "Your Hand Beats Dealer's...You Win!! :D\n"
}
else if(Player.HandValue() < Dealer.HandValue() && Dealer.HandValue() > 17 && Player.HandValue() > 17)
{
cout << "Dealer's Hand Wins...Sorry :/\n;
cin.ignore(INT_MAX, '\n');
}
cin.clear();
cin.ignore(INT_MAX, '\n');
}
if(ans == 4)
{
exit(0);
}
system("pause");
}
不介意if(ans == 1),我在为我的博彩代码保存。这段代码在很大程度上满足了我的需要。我没有东西来检查ace。我们有一个堆栈,这是Draw()和AddCard()从中拉出来的。任何帮助都非常感谢,并且对评论保持温和,我是新的。 :)
任何特别的问题..?我们需要更多信息来帮助你。 – jli
你说,“我的游戏无法正常工作”。你给了什么输入?你看到了什么结果,你认为什么结果是“正确的”? (或者你想我们完全猜测?) – abelenky
我有一种感觉,我太模糊了,对不起。这是我所做的一个循环的一部分,在它显示了我的手和庄家的手后,它会询问我是否想要下注,打中或留下。我一直无法找到它,但我的问题都与我的输出有关。 我测试了好几分钟,这是我看到的那种麻烦: 有时,如果我画,然后胸围,经销商仍然画两次,然后他的胸围,而这两个消息胸围,我的和他的,显示,所以没有人获胜。 如果我留下来,我会自动回到我的主菜单,而不是在代码中显示。 – user1086849