c#按钮添加数字(复制第一个实例),而不是添加它们

本文关键字:添加 实例 数字 按钮 复制 第一个 | 更新日期: 2023-09-27 18:14:49

我正在制作一个21点项目-到目前为止,我已经制作了开关情况场景来生成随机数-但现在我想a)为所有这些制作一个计算类-或者我应该b)通过按钮进行此计算?

创建一个calc类是有意义的,但是我的变量作用域是out的,所以我被迫在按钮内进行。

然而,这不是我主要关心的;我想添加开关案例"Hit.GenerateID(stRefID)"的第一个实例与它的第二个实例。

然而,我不确定如何在编程上使用new来区分两者,所以我得到的结果是(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;
 }

c#按钮添加数字(复制第一个实例),而不是添加它们

  1. 你的GenerateID方法可以通过使用枚举来表示每张卡片的值来极大地简化。

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

  1. 你需要跟踪玩家收到的每张卡牌。也许你应该有一个玩家类来保存他们被击中的卡牌?

像这样:

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; }
}
    为了避免大量的转换,你可以让GenerateID返回int

看起来您认为您正在执行一个数学加法操作,但实际上您是将一个整数转换为一个字符串,然后将其连接到stRefID的末尾。

从上面的代码来看,RandomMinMax的值是相同的(即1)。这可能就是为什么总是得到相同值的原因。

你可以更新它来生成新的随机数(比如1到99)

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