注册 登录
编程论坛 C图形专区

哪错了?

jxt598598 发布于 2008-05-05 13:46, 923 次点击
#include "Conio.h"
#include "graphics.h"
#include "dos.h"
#include "stdlib.h"
#define closegr closegraph

void initgr(void) /* BGI初始化 */
{
  int gd = DETECT, gm = 0;
  registerbgidriver(EGAVGA_driver);
  initgraph(&gd, &gm, "");
}

int main(void)
{
  int i,j;
  initgr(); /* BGI初始化 */

  for(i=1;i<=10;i++)
  {
     setbkcolor(0);
     j=random(10);
     setcolor(j);
     circle(199,299,10*i);
     delay(1000);
     clrscr();
  }
 
  getch();
  closegr();
  return 0;
}
4 回复
#2
sxn05082008-05-05 16:16
你也不说说你的错误表现是什么?!!!
是编译不过呢?还是运行结果不是你想要的呢?
按我的理解,你可能有以下几点不妥~
1、random用前要用 randomize()初始化,当然,这也许是你有意为之~
2、 clrscr();我想这里应该用cleardevice();比较合适
3、这个delay()不知基于什么原理,在我机器上要用两个delay(0xFFFF)才能看到些许效果。

[[it] 本帖最后由 sxn0508 于 2008-5-5 16:47 编辑 [/it]]
#3
sxn05082008-05-05 16:45
程序代码:

/* WIN-TC BGI 图形编程模板 */

#include "Conio.h"
#include "stdlib.h"
#include "graphics.h"
#define closegr closegraph

void initgr(void) /* BGI初始化 */
{
    int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
    registerbgidriver(EGAVGA_driver); /*
                      注册BGI驱动后可以不需要.BGI文件的支持运行 */
    initgraph(&gd, &gm, "");
}

int main(void)
{
    int i = 0, j;
    /* BGI初始化*/
    initgr();
    /*init random*/
    randomize();
    /*set back color*/
    setbkcolor(BLACK);
    /*main while*/
    while (!kbhit())
    {
        /*paint*/
        j = random(15);
        setcolor(j + 1);
        circle(320, 240, 10 *i);
        /*delay*/
        delay(0x5000);
        /*clear*/
        setcolor(BLACK);
        circle(320, 240, 10 *i);
        /*limit*/
        if (i++ > 15)
        {
            i = 0;
        }
    }
    closegr(); /* 恢复TEXT屏幕模式 */
    return 0;
}
#4
jxt5985982008-05-05 21:17
回复 3# 的帖子
en 你分析的很对。
你的挺漂亮的。
每次是不是都画两个 圆?
#5
sxn05082008-05-06 17:32
[bo]以下是引用 [un]jxt598598[/un] 在 2008-5-5 21:17 的发言:[/bo]

en 你分析的很对。
你的挺漂亮的。
每次是不是都画两个 圆?

每次先画一个彩色的圆,延时后再画一个一样的黑色的圆,相当于把彩色的擦掉了。
1