0

到目前为止,我已经让我的程序显示一堆随机出现在屏幕上的不同颜色的像素。我想知道是否可以让像素向下移动,就像你在太空飞船中向前移动一样。到目前为止,这是我的程序,它非常简单,但可以满足我的需要。

#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdlib.h>

int main() {
    int gd = DETECT, gm;
    int i, x, y;
    initgraph(&gd, &gm, "C:\\TC\\BGI");
    initwindow(1200, 768);

      /* color 500 random pixels on screen */
   for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,1);
      }

      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,2);
      }

      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,3);
      }

      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,4);
      }

      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,5);
      }

      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,6);
      }

      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,7);
      }

      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,8);
      }

      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,9);
      }
      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,9);
      }
      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,10);
      }
      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,11);
      }
      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,12);
      }
      for(i=0; i<=125; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,13);
      }
      for(i=0; i<=100; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,14);
      }

      for(i=0; i<=900; i++) {
       x=rand()%getmaxx();
          y=rand()%getmaxy();
          putpixel(x,y,15);
      }

    getch();
    closegraph();
    return 0;
}

任何帮助将不胜感激。

4

1 回答 1

0

您只需生成一次背景图像,然后在屏幕清晰和转换之间多次显示它。

struct COORD {
  unsigned short x;
  unsigned short y;
};
COORD stars[STAR_COUNT];

for(int star = 0; STAR_COUNT > star; ++star)
{
  stars[star].x = rand() % SCREEN_WIDTH;
  stars[star].y = rand() % SCREEN_HEIGHT;
}

然后也许为每一帧做一些类似的事情:

for(int star = 0; STAR_COUNT > star; ++star)
{
  --stars[star].x;
  --stars[nstar].y;
}
于 2018-01-14T20:19:55.043 回答