将Char []转换为Int,打牌游戏

时间:2018-12-05 22:47:10

标签: c#

我正在为学校做纸牌战争游戏,我的教授给了我一些带有纸牌的文件.txt,但我遇到的问题是我无法打开自己的'A'(Ace),'K'(国王)int,因此我可以将它们与其他卡片进行比较。我已经尝试了所有方法,但仍无法解决问题,所以我来这里寻求帮助或帮助。

到目前为止,这是我的代码:

public static void Main(string[] args)  
{
    StreamReader sr;
    try
    {
        sr = new StreamReader("JOG1.TXT");
    }
    catch (Exception ex) 
    {
        throw new Exception("Erro: Ficheiro Não existe!");
    }

    String linha1 = sr.ReadLine();
    String linha2 = sr.ReadLine();
    sr.Close();  

    if (linha1.Length!=16 || linha2.Length!=16)
    {
        throw new Exception("Erro: Ficheiro Inválido");
    }
    char[] p1=linha1.ToCharArray();
    char[] p2=linha2.ToCharArray();

    if(p1[0] > p2[0]){
        Console.WriteLine("ganhou");
    }
    else
        Console.WriteLine("perdeu");

        //Console.WriteLine(linha1);
        //Console.WriteLine(linha2);
        //Console.WriteLine(p1[5]);
        //Console.WriteLine(p2[5]);
        Console.ReadLine(); 
    }
}

3 个答案:

答案 0 :(得分:2)

我想您是在问如何将一张卡的一个字符表示映射到一个表示该卡等级的数字。

执行此操作的蛮力方法是检查每个值并返回排名:

public static int GetRank1(char card)
{
    switch (card)
    {
        case '2' : return 2;
        case '3' : return 3;
        case '4' : return 4;
        case '5' : return 5;
        case '6' : return 6;
        case '7' : return 7;
        case '8' : return 8;
        case '9' : return 9;
        case 'J' : return 11;
        case 'Q' : return 12;
        case 'K' : return 13;
        case 'A' : return 14;
    }
    return 0;
}

但是更聪明的方法是将字符按字符串顺序排列并使用其位置作为等级:

public static int GetRank2(char card)
{
    const string ranks = "23456789JQKA";
    return ranks.IndexOf(card);
}

如果您的表示形式不同,例如,您将不得不修改以上内容。如果您使用V或D而不是J,Q或K。则还必须添加一个代表10张卡片的项目。

答案 1 :(得分:0)

您可以将其转换为int:

    static void Main(string[] args)
    {
        var c = 'A';
        Console.WriteLine($"The integer value of {c} is {(int)c}");

        Console.ReadLine(); 
    }

答案 2 :(得分:-2)

您可以使用int.Parse()函数将字符串转换为整数。