home *** CD-ROM | disk | FTP | other *** search
-
-
- PROGRAM Animation;
-
- (* Demonstriert Bildschirmanimation durch Benutzung von Bildpuffer *)
-
- USES
- MSGraph, Crt;
-
- CONST
- max_puffer = 65520;
-
- VAR
- q : Integer;
- vc : _VideoConfig;
- puffer : POINTER;
- bildgr : LongInt;
- x0, y0 : Integer;
- x, y : Integer;
-
- BEGIN (* Hauptprogramm *)
-
- _ClearScreen( _GClearScreen );
-
- (* Festlegen und Überprüfen des Bildschirmmodus *)
- q := _SetVideoMode( _MaxResMode );
- IF ( q = 0 ) THEN
- BEGIN
- WriteLn( 'Graphikmodus nicht verfügbar;' +
- ' drücken Sie Eingabe, um fortzufahren.');
- ReadLn;
- q := _SetVideoMode( _DefaultMode );
- Halt( 0 );
- END;
- (* Feststellen einiger Bildschirmeigenschaften *)
- _GetVideoConfig( vc );
-
- (* Zeichnen und Speichern einer einfachen Figur *)
- _SetColor( 3 );
- x := vc.NumXPixels DIV 4;
- y := vc.NumYPixels DIV 4;
-
- _Rectangle( _GFillInterior, 0, 0, x, y );
- bildgr := _ImageSize( 0, 0, x, y );
- IF (bildgr > max_puffer) OR (bildgr > MaxAvail) Then
- BEGIN
- WriteLn( 'Bild zu groß.' );
- ReadLn;
- Halt( 0 );
- END
- ELSE
- BEGIN
- GetMem( puffer, bildgr );
- IF (puffer = NIL) THEN
- BEGIN
- WriteLn('Kann keinen Bildschirm zuweisen.');
- ReadLn;
- Halt( 0 );
- END;
- END;
- _GetImage( 0, 0, x, y, puffer^ );
- _ClearScreen( _GClearScreen );
-
- (* Zeichnen eines zentrierten Achsenkreuzes auf dem Bildschirm *)
- _SetColor( 2 );
- x0 := vc.NumXPixels DIV 2 - 1;
- y0 := vc.NumYPixels DIV 2 - 1;
- _MoveTo( x0, 0 );
- _LineTo( x0, vc.NumYPixels );
- _MoveTo( 0, y0 );
- _LineTo( vc.NumXPixels, y0 );
-
- _SetTextPosition( 1, 1 );
- _OutText( '_GXOR' );
- WHILE NOT KeyPressed DO
- BEGIN
- _PutImage( Random( vc.NumXPixels - x ),
- Random( vc.NumYPixels - y ), puffer^ , _GXOR );
- Delay( 500 );
- END;
- _ClearScreen( _GClearScreen );
- q := _SetVideoMode( _DefaultMode );
- END.
-
-