- 注册时间
- 2005-10-5
- 最后登录
- 1970-1-1
|
void main()
{
   int x,y;
   char key;
   x=80;
   y=40;
   while(key != 27)
   {
       ReleaseKey(128);
       key=getchar();
       if(20 == key && y>0)    y--;
       else if(21 == key && y<79)    y++;
       else if(23 == key && x>0)    x--;
       else if(22 == key && x<159)    x++;
       ClearScreen();
       Circle(x,y,5,1,0x41); //这句放的位置是我的疑问所在
       Refresh();
       Delay(10);
   }
   getchar();
} Lee的LavaXIde中编译运行,随着方向键的按动小球会移动。
但是在这段代码在ggv的GVmakerIDE1.1和文曲星端中编译运行后,不会显示小球,但是我通过printf得知x,y的坐标变化正常。
可我改一下代码:ClearScreen();
Refresh();
Circle(x,y,5,1,0x41);
Delay(10);
这样后在GVmakerIDE和文曲星上都可以显示小球了。反而LavaXIde中不能显示小球了,坐标正常变化。~0x41改成1就可以。
Circle(x,y,5,1,0x41);中的type,也就是0x41代表在缓冲区绘图吧,照道理ClearScreen()把缓冲区清空后,Circle就在缓冲区绘图了,然后Refresh()把图刷新到屏幕。
现在这个问题让我觉得Circle函数在GVmakerIDE里就只能直接在屏幕绘图,无法在缓冲区。我觉得LavaXIde是正确遵守语法的。
两个地方都可以通过修改tpye参数0x41或1来实现效果的,但为什么同样的代码编译出来却不一样??? |
|