实现爆炸后的振动效果

  在许多游戏软件中,我们经常能看到这样的场面:当某一设施爆炸后,屏幕画面会伴随着轻微的振动,使人感到身临其境。笔者编写了一个函数void MoveView(int x,int y);通过CRT控制器将屏幕视角左上角坐标移至 (x,y)处,使画面相对移动,从而产生振动效果。程序由Borland C++ 2.0编写,采用VGA 12H模式,代码小、速度快、运行效果形象逼真。

  // filename: SHAKE.cpp

  // maker: ShiLin

  #include

  #include

  #include

  #include

  void MoveView(int x,int y);

  void main(void){

   int gdriver,gmode;

   gdriver=DETECT,gmode=0;

   initgraph(&gdriver,&gmode,"\BORLANDC\BGI");

   rectangle(100,100,200,200);

   outtextxy(100,250,"Press Any Key to SHAKE ...");

   getch();

   for(int i=0;i<20;i++){

   MoveView(10-random(20),5-random(10));

   delay(50);

   }

   MoveView(0,0);

   getch();

   closegraph();

   }

  void MoveView(int x,int y){

   union{

   unsigned int whole;

   char low;

   }adr;

   unsigned char high,low;

   adr.whole=y*80+x/8,

   low=adr.low,

   high=(unsigned char)(adr.whole>>8);

   outportb(0x3D4,0X0C);

   outportb(0x3D5,high);

   outportb(0x3D4,0x0D);

   outportb(0x3D5,low);

   }

  (长春 石琳)