我是新的C和我想做一个21点游戏。问题是,我想有球员的卡打印在同一行。例如这样:
___________ ___________
| K K | | Q Q |
| | | |
| + + | | + + |
| + | | + |
| + + | | + + |
| | | |
| + + | | + + |
| + | | + |
| + + | | + + |
|___________| |___________|
但下面的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
const char *card_k=
"\n ___________ "
"\n| K K |"
"\n| |"
"\n| + + |"
"\n| + |"
"\n| + + |"
"\n| |"
"\n| + + |"
"\n| + |"
"\n| + + |"
"\n|___________|";
const char *card_q=
"\n ___________ "
"\n| Q Q |"
"\n| |"
"\n| + + |"
"\n| + |"
"\n| + + |"
"\n| |"
"\n| + + |"
"\n| + |"
"\n| + + |"
"\n|___________|";
printf("%s",card_k);
printf("%s",card_q);
system("Pause");
return 0;
}
显然打印了这个,因为有了新的行字符:
___________
| K K |
| |
| + + |
| + |
| + + |
| |
| + + |
| + |
| + + |
|___________|
___________
| Q Q |
| |
| + + |
| + |
| + + |
| |
| + + |
| + |
| + + |
|___________|
我认为在python中类似的修复是使用end ='',但我不知道如何在C中做到这一点。任何帮助将不胜感激。
3条答案
按热度按时间wlp8pajw1#
不要混淆数据和输出格式,这是两件不同的事情。解决问题的一种方法是将每张卡片存储为字符指针数组,每个指针指向一个字符串字面量。然后,您可以按照自己的喜好打印数据:
mnemlml82#
你需要修改卡片的结构,这样你就可以(容易地)在一行上打印多张卡。我建议使用一个结构来保存一张卡的数据-从长远来看,这将使生活变得容易得多。你需要所有的卡都有相同的大小(如果你能通过看牌的大小来发现牌之间的区别,那就很容易作弊了)。然后你有一个函数以指向纸牌图像的指针数组的形式打印一系列纸牌。因为有一个结构,它也可以保存等级(国王,王后,...,A)和花色(梅花,方块,红桃,黑桃)。
所以,正如我在一篇评论中所说:
或多或少是这样的。我对花色的2到10的名字不太满意--选择适合自己的名字。在很多方面,拼出数字(DEUCE,THREE,FOUR,...,TEN)可能会更好。
代码
输出
41ik7eoe3#
选项2:使用终端控制序列