0

つまり、基本的にブラックジャックのゲームを作成していて、ユーザーに別のカード (Take a HIT) が必要かどうかを尋ねなければならないところで行き詰まり、while ループを実行することにしました。私が理解しようとしている問題は、最初のHITに選択された乱数を再度選択できないようにする方法です。その変数を「card3」に割り当てているため、スタックしています

while (hit == 'yes' || hit == 'Yes' || hit =='Y' || hit == 'y')
{
//create new card, add onto total, ask again
card3 = rand() % 51 + 1;
while (card3 == card1 || deal1 == card2 || card3 == deal1){
  card3 = rand() % 52 + 1;
}
if (card3 == 1 || card3 == 2 || card3 == 3 || card3 == 4){
cout <<"|A|";
total = total + 11;}
else if (card3 == 5 || card3 == 6 || card3 == 7 || card3 == 8){
cout <<"|2|";
total = total + 2;}
else if (card3 == 9 || card3 == 10 || card3 == 11 || card3 == 12){
cout <<"|3|";
total = total + 3;}
else if (card3 == 13 || card3 == 14 || card3 == 15 || card3 == 16){
cout <<"|4|";
total = total + 4;}
else if (card3 == 17 || card3 == 18 || card3 == 19 || card3 == 20){
cout <<"|5|";
total = total + 5;}
else if (card3 == 21 || card3 == 22 || card3 == 23 || card3 == 24){
cout <<"|6|";
total = total + 6;}
else if (card3 == 25 || card3 == 26 || card3 == 27 || card3 == 28){
cout <<"|7|";
total = total + 7;}
else if (card3 == 29 || card3 == 30 || card3 == 31 || card3 == 32){
cout <<"|8|";
total = total + 8;}
else if (card3 == 33 || card3 == 34 || card3 == 35 || card3 == 36){
cout <<"|9|";
total = total + 9;}
else if (card3 == 37 || card3 == 38 || card3 == 39 || card3 == 40){
cout <<"|10|";
total = total + 10;}
else if (card3 == 41 || card3 == 42 || card3 == 43 || card3 == 44){
cout <<"|J|";
total = total + 10;}
else if (card3 == 45 || card3 == 46 || card3 == 47 || card3 == 48){
cout <<"|Q|";
total = total + 10;}
else if (card3 == 49 || card3== 50 || card3 == 51 || card3 == 52){
cout <<"|K|";
total = total + 10;}
cout << endl;
cout <<"Your total is: " << total << endl;
cout <<"Would you like another card? yes or no: " << endl;
cin >> hit; 
cout << endl;
}
4

2 に答える 2

2

すべてのカードをコンテナに入れ、それをstd::random_shuffleシャッフルするために使用できます。次に、コンテナの背面から一度に 1 枚のカードを取り出します。デッキが完成したら、最初からやり直してください。

于 2013-02-27T21:07:12.813 に答える
0

配列を使用する必要がある演習のように見えます。私はあなたのためにプログラムを書くことはできませんが、配列を読んでください-それらはソリューションの重要な部分です。どのカードが選択されたかを示す52個のブール変数の配列を作成できます。カードが選択されたかどうかをチェックするアルゴリズムを考案する必要があります。ランダムに選択されたカードを取得している間、新しいカードを選択し続けます。

于 2013-02-27T21:09:56.610 に答える