-1

私はブラックジャック プロジェクトを作成しています。これまでのところ、乱数を生成するスイッチ ケースのシナリオを作成しましたが、A.) これらすべての計算クラスを作成するか、B.) を実行する必要があります。ボタンを介してこの計算?

calc クラスを作成するのは理にかなっていますが、私の変数のスコープは外れているため、ボタン内で行う必要があります。

ただし、これは私の主な関心事ではありません。switch ケース "Hit.GenerateID(stRefID)" の最初のインスタンスを 2 番目のインスタンスに追加したいと思います。

ただし、プログラムで new を使用して 2 つを区別する方法がわからないため、得られる結果は (2) = 22 です。

ヒットクラス:

 namespace Blackjack
 {
    public class Hit
    {

        public static string GenerateID(string stRefID)
        {

            Random random = new Random();

                int iChosenMaxSize = random.Next(1, 1);

                int two = 2;
                int three = 3;
                int four = 4;
                int five = 5;
                int six = 6;
                int seven = 7;
                int eight = 8;
                int nine = 9;
                int ten = 10;
                int jack = 10;
                int queen = 10;
                int king = 10;
                int ace = 11;


             for (int x = 1; x <= iChosenMaxSize; x++)
             {
                int iCharType = random.Next(0, 12);
                switch (iCharType)
                {
                        case 0:
                            stRefID += two;
                            break;
                        case 1:
                            stRefID += three;
                            break;
                        case 2:
                            stRefID += four;
                            break;
                        case 3:
                            stRefID += five;
                            break;
                        case 4:
                            stRefID += six;
                            break;
                        case 5:
                            stRefID += seven;
                            break;
                        case 6:
                            stRefID += eight;
                            break;
                        case 7:
                            stRefID += nine;
                            break;
                        case 8:
                            stRefID += ten;
                            break;
                        case 9:
                            stRefID += ace;
                            break;
                        case 10:
                            stRefID += jack;
                            break;
                        case 11:
                            stRefID += queen;
                            break;
                        case 12:
                            stRefID += king;
                            break;


                    }
              } return stRefID; 

            }
        }
    }

ボタン:

 private void hit_Click(object sender, EventArgs e)
 {
        string stRefID = "";
        this.playerScore.Text = Hit.GenerateID(stRefID);

        int cardOne;
        cardOne = Convert.ToInt32(this.playerScore.Text);
        int cardTwo;
        cardTwo = new Hit.GenerateID(stRefID);
        this.test.Text = cardTwo.ToString() + cardOne;
 }
4

3 に答える 3

1
  1. 列挙型を使用して各カードの値を表すことで、GenerateID メソッドを大幅に簡素化できます。

public enum CardType { Two = 2, ... Queen = 10, King = 10, Ace = 11 }

  1. プレーヤーが受け取った各カードを追跡する必要があります。ヒットしたカードを保持する Player クラスを用意する必要があるのではないでしょうか?

このようなもの:

private Player _player;

private void hit_Click(object sender, EventArgs e) {
    // Add the first card
    _player.Cards.Add(Hit.GenerateID(..));
    // Add the second card
    _player.Cards.Add(Hit.GenerateID(..));
    ...
    // In order to use sum you will need: using System.Linq;
    this.test.Text = _player.Cards.Sum().ToString();
}

public class Player {
    public Player () {
        Cards = new List<int>();
    }

    public List<int> Cards { get; private set; }
}
  1. 多くの変換を避けるために、GenerateID が int を返すようにすることができます
于 2013-05-22T03:09:49.557 に答える
0

数学的加算演算を実行しているように見えますが、実際には整数を文字列に変換し、それを stRefID の末尾に連結しています。

于 2013-05-22T03:11:37.057 に答える
0

Random Min上記のコードから、とのMax値が同じ (すなわち) のように見えます1。これが、常に同じ値を取得する理由である可能性があります..

新しい乱数を生成するように更新できます(1から99など)

 int iChosenMaxSize = random.Next(1, 99);
于 2013-05-22T03:28:27.713 に答える