如何水平移动星形图案?

时间:2018-06-02 13:04:09

标签: c

我分配了一个程序,它将显示如下星形图案: -

*
**
***
****

然后它会从它的位置消失然后重新出现形成一个从左到右移动的动作。 我已经尝试了很多。但是,我能得到的最好的就是只移动这样的第一颗星: -

               *
**
***
**** 

模式的其他部分仍然存在。 我使用延迟函数和gotoxy以及清除屏幕以及for循环,但无法以正确的方式执行此操作!

我的模式代码: -

#include <stdio.h>
main()
{
char star='*';
int row, col;
int rowFinal;

printf("Enter the number of rows to be printed\n");
scanf("%d",&rowFinal);

for (row=1; row<=rowFinal; row++)
{
    for (col=1; col<=row; col++)
    {
        printf("%c",star);
    }
    printf("\n");
}
}

帮助我剩下的部分我搞砸了它在这里显示它没有任何用处。

2 个答案:

答案 0 :(得分:0)

这个问题有点含糊不清(请显示代码!),所以我假设当你说“已分配”时你的意思是“指定制作”而不是“将程序作为一个封闭的盒子而被迫解决什么会如果确实不可能或难以编辑,那么这是一个相当糟糕的设计选择“。

这是一个如何做到的粗略框架。

for (i=1; i<MAX AMOUNT OF STARS; i++) {
    printf(INDENTATION);
    //Code to print i stars and \n
}

“//要打印的代码...”可以是代码或函数调用,如果“已分配”您的意思是“给定为封闭的框”,但它可以逐行工作。

答案 1 :(得分:0)

如果您的问题是如何设置*动画,这里有一个小示例代码,其中包含动画1行1星:

#include <stdio.h>
#include <unistd.h>

#define SWEEP_WIDTH 20

int main()
{
 int idx = 0, i = 0;

 for (i = 0; i < 100; i++)
 {
   if (--idx < 0)
   {
    idx = SWEEP_WIDTH;
   }

   printf("%*s%*s\r", idx, "*", (SWEEP_WIDTH-idx), " ");
   fflush(stdout);
   usleep(50000);
 }

我不会为您编写完整的代码,但我想这应该足以让您了解如何在代码中为星星设置动画。

顺便说一句,如果你花时间,你可以随时编码更好,这是5分钟编码的结果,所以你可以写得更好。