如何将数字改成字母?

时间:2014-11-27 01:27:38

标签: c linux

我为扑克游戏制作游戏,现在有52张牌的阵列 int cards[52] = {1, 1, 1, 1, etc etc etc...}

但是,我希望每次出现1或者11或12或13时,字母看起来像A,J,Q和K而不是那些数字。

我目前有部分代码(仍未完成)但仍然使用1,2,3,4,5,6 ... 13的数组继续执行所有操作,因此我不希望从一开始就重新启动

P.S。:我目前对编程很陌生,所以像初学者一样解释会有很多帮助!!

P.S。:问题是我不知道该怎么做

我的一个子功能

for (l = 0; l < 52; l++) //For loop del swap para barajear la baraja
{
    x = rand() % 52;
    y = rand() % 52;
    int temp = cards[x];
    cards[x] = cards[y];
    cards[y] = temp;
    char *temp1 = symbols[x];
    symbols[x] = symbols[y];
    symbols[y] = temp1;
}   

如何制作,以便如果我打印cards[1]并且交换后cards[1]的值为1,我怎样才能打印'A'而不是1

3 个答案:

答案 0 :(得分:1)

只需使用另一个阵列。

char ranks[] = { 0, 'A', '2', '3', ..., 'J', 'Q', 'K'};

然后正常访问它。

答案 1 :(得分:1)

创建数组letters以存储卡名称。然后,您可以使用letters[card]访问该阵列。

作为简写,您可以将单个char值写为一个字符串:

char letters[] = "XA234567890BDK";

请注意,第一个字母的索引将自动为零。如果您希望卡片“两个”成为索引2,则必须使用虚拟角色填充第一个位置。


考虑到你的第二个问题(改组),你可以完全省略数组symbols。只需在实际需要时从letters查找关联的符号。

答案 2 :(得分:0)

使用数组:

char card_names[] = { 'A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'K', 'Q' };

然后您可以使用card_names[card_value]