在许多游戏软件中,我们经常能看到这样的场面:当某一设施爆炸后,屏幕画面会伴随着轻微的振动,使人感到身临其境。这个该如何实现啊。

解决方案 »

  1.   

    在许多游戏软件中,我们经常能看到这样的场面:当某一设施爆炸后,屏幕画面会伴随着轻微的振动,使人感到身临其境。笔者编写了一个函数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,"BORLANDCBGI");
       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);
       } 你可以参照一下别人用c++写的。
      

  2.   

    to  chijingde(AD):
    如果是液晶,岂不是不响?
      

  3.   

    to elvis200_200(小能) :
    哈哈,你给的这个程序我老早看过了,你没有注意到你的回复里面头一句和我一样么?我就是从里面拷贝出来的,那个程序适合在低版本的BC++或者TC里面运行,delphi该如何参考啊。
      

  4.   

    for i:=0 to 10 do
    begin
      With Person.Head do
      begin
        MoveLeft;
        MoveRight;
        MoveUp;
        MoveDown;
      end;
    end;end;
      

  5.   

    to : smoketimes(David@Doff) your head????-------------------各位大哥,我的帖子怎么成了搞笑大赛啦。