1

私は C# の初心者で、カードゲームを作りたいと思っています。私が持っているのは、c6, s3, h11, d13wherecharacter represents the colourや the のような名前のカード (文字列) のリストですnumber represents the value。ボタンを押すと、プログラムはリストからランダムな文字列を取得し、テキスト ボックスに表示します。そこから、ゲームのポイントは、次のランダムなカードが前のカードよりも高い値または低い値を持つかどうかを推測することです.

私がやりたいことは、テキスト ボックスから文字列を取得し、それを int に変換して、前のカードの値と新しいカードの値を比較できるようにすることです。唯一の問題は、を使用して変換できるように、 cinを取り除く方法です。c6parse

これは私のコードです。

public partial class MainWindow : Window
{
    static Random rndmlist = new Random();
    Random rndm = new Random();
    List<string> deck = new List<string>();
    int score = 0;
    public MainWindow()
    {
        InitializeComponent();
    }

    private void test_Click(object sender, RoutedEventArgs e)
    {
        //disregard this
        foreach (string j in deck)
        {
            testbox.Text += j + ", ";
        }
    }

    private void btnstart_Click(object sender, RoutedEventArgs e)
    {
        //this is where i add all the cards to the list
        for (int i = 1; i <= 13;)
        {
            deck.Add("c" + i);
            i++;
        }
        for (int i = 1; i <= 13; )
        {
            deck.Add("s" + i);
            i++;
        }
        for (int i = 1; i <= 13; )
        {
            deck.Add("h" + i);
            i++;
        }
        for (int i = 1; i <= 13; )
        {
            deck.Add("d" + i);
            i++;
        }
    }

    private void btnbegin_Click(object sender, RoutedEventArgs e)
    {
        //this is where i take a random card from the list and display it in textBox2
        int r = rndmlist.Next(deck.Count);
        textBox2.Text = ((string)deck[r]);

        //disregard this
        testbox.Text += ((string)deck[r]) + ", ";
        deck.Remove((string)deck[r]);
    }

    private void btnhigh_Click(object sender, RoutedEventArgs e)
    {
        //this is where i want to compare the cards.
    }
}

これを読んでくれてありがとう。(:

4

5 に答える 5

5

Cardカードを表すclass を作成し、次の 2 つのプロパティを使用することをお勧めします:ColorおよびNumber実装されたメソッドCard.ParseFromString()

于 2013-05-28T11:04:23.607 に答える
1

これを試して、

 string SubString = MyString.Substring(1);

ただし、文字列が空の場合はエラーになるので注意してください。

于 2013-05-28T11:02:22.900 に答える
1

数字の前に常に1文字(そして1文字のみ)があると仮定すると、次のように簡単に実行できます。

string numberAsString = "c2".Substring(1);

そしてそれを作るにはint

int number = Int32.Parse(numberAsString);
于 2013-05-28T11:02:49.850 に答える
0

正規表現を使用して、すべてのアルファベット文字を置き換えることができます。

string result = Regex.Replace(myString, @"[a-zA-Z\s]+", string.Empty);
于 2013-05-28T11:02:45.633 に答える
0
string str = "c12";
var noChars = str.SubString(1); // take a new string from index 1
var number = Int32.Parse(noChars);
于 2013-05-28T11:03:07.307 に答える