我想在一行中绘制3个形状的所有组合(3!= 6):空单元格、X或矩形。
当前代码:
对于空单元格:
void drawEmptyCell()
{
printf("||||||||||||||||||||||||||\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("||||||||||||||||||||||||||\n");
}对于带矩形的单元格:
void drawCellWithRectangle()
{
printf("||||||||||||||||||||||||||\n");
printf("| |\n");
printf("| |\n");
printf("| ************** |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| ************** |\n");
printf("| |\n");
printf("| |\n");
printf("||||||||||||||||||||||||||\n");
}对于带有X的单元格:
void drawCellWithX()
{
printf("||||||||||||||||||||||||||\n");
printf("| |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| * |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| * * |\n");
printf("| |\n");
printf("||||||||||||||||||||||||||\n");
}我可以使用暴力的方式,并采取所有6个选项,例如:
void drawOption1()
{
// empty , rectangle , x
printf("||||||||||||||||||||||||||");printf("||||||||||||||||||||||||||");printf("||||||||||||||||||||||||||\n");
printf("| |");printf("| |");printf("| |\n");
printf("| |");printf("| |");printf("| * * |\n");
printf("| |");printf("| ************** |");printf("| * * |\n");
printf("| |");printf("| * * |");printf("| * * |\n");
printf("| |");printf("| * * |");printf("| * * |\n");
printf("| |");printf("| * * |");printf("| * |\n");
printf("| |");printf("| * * |");printf("| * * |\n");
printf("| |");printf("| * * |");printf("| * * |\n");
printf("| |");printf("| ************** |");printf("| * * |\n");
printf("| |");printf("| |");printf("| * * |\n");
printf("| |");printf("| |");printf("| |\n");
printf("||||||||||||||||||||||||||");printf("||||||||||||||||||||||||||");printf("||||||||||||||||||||||||||\n");
}但我在寻找另一种东西,不需要任何暴力。
任何建议都将不胜感激。
发布于 2013-05-15 14:49:17
一个不错的方法是将形状放入字符串数组中。然后,一个适当的算法将绘制它们
下面这样的代码就可以完成这项工作。希望你明白我的意思
char* x[] = {
"||||||||||||||||||||||||||",
"| |",
"| * * |",
"| * * |",
"| * * |",
"| * * |",
"| * |",
"| * * |",
"| * * |",
"| * * |",
"| * * |",
"| |",
"||||||||||||||||||||||||||"};
char* o[] ..
char* empty[] ..
..
output (" XO");
..
void output (const char* pOut) {
// assert (sizeof(x) == sizeof(o));
// assert (sizeof(x) == sizeof(empty));
int i, j;
for (i = 0; i < sizeof(o) / sizeof(o[0]); i ++) {
const char* c = pOut;
while (*c != 0) {
switch (*c ++) {
case 'X':
printf (x[i]); break;
case 'O':
printf (o[i]); break;
default:
printf (empty[i]); break;
}
}
printf ("\n");
}
}显然,x,o,empty需要保持相同的行数。
现在在C中,还没有编译,所以它可能会有错误
发布于 2013-05-15 14:47:17
您可以在for-loop中使用gotoxy(x,y);和printf();。
https://stackoverflow.com/questions/16558457
复制相似问题