我对C#很新,我想做一个纸牌游戏。我所拥有的是名称为c6, s3, h11, d13
的卡片(字符串)列表,其中character represents the colour
和number represents the value
。当按下按钮时,程序从列表中获取随机字符串并将其显示在文本框中。从那里开始游戏的目的是猜测下一张随机卡是否会比之前的卡有更高的价值或更低的价值。
我想要做的是从文本框中取出字符串并将其转换为int,以便我可以将前一张卡的值与新卡的值进行比较。唯一的问题是如何摆脱c
中的c6
所以我可以使用parse
转换它。
这是我的代码。
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.
}
}
提前感谢您阅读本文。 (:
答案 0 :(得分:5)
我最好创建一个代表卡片的Card
课程,其中包含2个属性:Color
和Number
以及实施方法Card.ParseFromString()
答案 1 :(得分:1)
试试这个,
string SubString = MyString.Substring(1);
但是如果字符串为空则要小心,这是一个错误的情况。
答案 2 :(得分:1)
假设在数字之前总会有一个(且只有一个)字符,您可以这样做:
string numberAsString = "c2".Substring(1);
并将其设为int
:
int number = Int32.Parse(numberAsString);
答案 3 :(得分:0)
您可以使用正则表达式替换所有字母字符,例如
string result = Regex.Replace(myString, @"[a-zA-Z\s]+", string.Empty);
答案 4 :(得分:0)
string str = "c12";
var noChars = str.SubString(1); // take a new string from index 1
var number = Int32.Parse(noChars);