数学建模社区-数学中国

标题: 实现爆炸后的振动效果 [打印本页]

作者: 韩冰    时间: 2005-1-26 12:48
标题: 实现爆炸后的振动效果

(长春 石琳) # b1 v* ?. S. x# X

& s, }5 p0 Z8 K

3 t8 j# l& O) q5 X( `

% r8 S2 F8 r: R" ~- x   在许多游戏软件中,我们经常能看到这样的场面:当某一设施爆炸后,屏幕画面会伴随着轻微的振动,使人感到身临其境。笔者编写了一个函数void MoveView(int x,int y);通过CRT控制器将屏幕视角左上角坐标移至 (x,y)处,使画面相对移动,从而产生振动效果。程序由Borland C++ 2.0编写,采用VGA 12H模式,代码小、速度快、运行效果形象逼真。 / q1 L' I% ]! O; w: u  // filename: SHAKE.cpp8 J! F: A) Q- z, D* M   // maker: ShiLin2 Q$ _, d) `3 A% Z0 d   #include. b, A/ O& c! w% T   #include+ D Y9 e6 B4 J2 P* z5 r+ Q& _$ i: j- c   #include. L0 {# f) b5 f+ Q ?+ Z- l D" _   #include ; x* ^! }; _$ K% I' s  void MoveView(int x,int y);8 C# c7 `! G: j, B3 A   void main(void){ 5 j9 s! \* U% n6 ~. e- W( u$ _   int gdriver,gmode; * w1 e# m/ k! H B3 [! }   gdriver=DETECT,gmode=0;) q2 n" m9 e3 w1 ]8 f L    initgraph(&gdriver,&gmode,"BORLANDCBGI"); ) I* g* t# h5 m& X   rectangle(100,100,200,200);4 Q8 K$ E' h( T    outtextxy(100,250,"Press Any Key to SHAKE ...");' S) T! Q0 S. b    getch(); * M' G" g7 j. f# u+ e: `3 G: [   for(int i=0;i<20;i++){9 z' M! d9 y& ~( F9 ?    MoveView(10-random(20),5-random(10));4 [ z8 G; m1 n: f$ C: x! B1 I    delay(50);6 S/ f, M% D7 u    } / Z% G; G" ` D& \, d   MoveView(0,0); 3 f! `% M, O4 a) ^" t   getch();7 g" i) @1 F1 c- I$ b    closegraph(); 8 S7 ?6 v7 s, E- [, t2 e   }. W) s- ]# V0 Y! Z- _2 \   void MoveView(int x,int y){/ f/ P; | {# U3 ]- R    union{( a% t1 V0 L) U' r    unsigned int whole; 4 ]7 Q8 J a) @) W. y- t! j( r   char low;4 N5 @ R4 u# T- t5 n    }adr; 0 Y# n3 w* i! w4 V' s5 ^6 {; |   unsigned char high,low; 3 j% I! g K" E6 u; P, }   adr.whole=y*80+x/8,9 z& A! X! {, x$ N1 i* V% |! p* p" j- v    low=adr.low," {: i# s3 o: G    high=(unsigned char)(adr.whole>>8); 2 w6 {4 Y2 w. }+ y   outportb(0x3D4,0X0C);) I6 c2 s: O# X+ a7 Z& q6 D    outportb(0x3D5,high);; x8 y3 l6 m8 i; o+ |    outportb(0x3D4,0x0D); 0 X# w1 z3 l( C3 L$ I% d7 [0 t   outportb(0x3D5,low);" g! p+ K% @: J6 E" e3 a' R9 B8 v2 I, g. u    } ! Q' A L8 _& ], E- _






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5