home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 363.lha / EatIT_v1.05 / EatIT.mod < prev    next >
Text File  |  1990-04-08  |  3KB  |  77 lines

  1. (***************************************************************************
  2. *  Programme : EatIt.mod                                                   *
  3. *  Usage     : EatIT                                                       *
  4. *  Version   : V1.05                                                       *
  5. *  Date      : 16.-17.12.1989                                              *
  6. *  Author    : Jörg Sixt                                                   *
  7. *  Purpose   : Another boring "damage-the-screen-hack"                     *
  8. *  Language  : Modula-2,AMSoft  PD-Version from Fish 113                   *
  9. *  Bugs      : it works                                                    *
  10. ***************************************************************************)
  11.  
  12. MODULE EatIT ;
  13.  
  14. FROM SYSTEM    IMPORT ADR ;
  15. FROM Graphics  IMPORT RastPortPtr,SetAPen,ReadPixel,WritePixel ;
  16. FROM Intuition IMPORT ScreenPtr,IntuitionBase,OpenIntuition,CurrentTime ;
  17. FROM Dos       IMPORT Delay ;
  18.  
  19. CONST MAX = 20 ;
  20.  
  21. VAR  ok               : BOOLEAN ;
  22.      i,j,width,height : INTEGER ;
  23.      IBase            : POINTER TO IntuitionBase ;
  24.      Scr              : ScreenPtr ;
  25.      RP               : RastPortPtr ;
  26.      dummy            : LONGINT ;
  27.      xm,ym            : ARRAY [1..MAX] OF INTEGER ;
  28.      xp,yp            : ARRAY [1..8]   OF INTEGER ;
  29.  
  30. PROCEDURE RND(limit : INTEGER) : INTEGER ;
  31.      VAR  mic,sec     : ARRAY [1..2]   OF INTEGER ;
  32.           long        : LONGINT ;
  33.      BEGIN
  34.           CurrentTime(ADR(sec),ADR(mic)) ;
  35.           long := (LONGINT(limit-1)*LONGINT(mic[2])) DIV 32770 ;
  36.           RETURN(INTEGER(ABS(long))+1) ;
  37.      END RND ;
  38.  
  39. BEGIN (* MAIN PROGRAMME *)
  40.      xp[1] := -1 ; yp[1] := -1 ; xp[2] :=  0 ; yp[2] := -1 ;
  41.      xp[3] :=  1 ; yp[3] := -1 ; xp[4] :=  1 ; yp[4] :=  0 ;
  42.      xp[5] :=  1 ; yp[5] :=  1 ; xp[6] :=  0 ; yp[6] :=  1 ;
  43.      xp[7] := -1 ; yp[7] :=  1 ; xp[8] := -1 ; yp[8] :=  0 ;
  44.  
  45.      IBase := OpenIntuition() ;
  46.      Scr   := IBase^.activeScreen ;
  47.      RP    := ADR(Scr^.rastPort) ;
  48.      width := Scr^.width-1 ;
  49.      height:= Scr^.height-1 ;
  50.  
  51.      FOR i := 1 TO MAX DO
  52.         xm[i] := RND(width) ; ym[i] := RND(height) ;
  53.         Delay(2) ;
  54.      END ;
  55.  
  56.      LOOP
  57.         FOR i := 1 TO MAX DO
  58.            ok := TRUE ;
  59.            SetAPen(RP,0) ; dummy := WritePixel(RP,xm[i],ym[i]) ;
  60.            FOR j := 1 TO 8 DO
  61.               IF ((ReadPixel(RP,xm[i]+xp[j],ym[i]+yp[j])>0) AND ok) THEN
  62.                  ok := FALSE ; INC(xm[i],xp[j]) ; INC(ym[i],yp[j]) ;
  63.               END ;
  64.            END ;
  65.            IF ok THEN
  66.               INC(xm[i],xp[RND(8)]) ; INC(ym[i],yp[RND(8)]) ;
  67.               IF (xm[i]<0)      THEN xm[i] := width ; END ;
  68.               IF (ym[i]<0)      THEN ym[i] := height ; END ;
  69.               IF (xm[i]>width)  THEN xm[i] := 0 ; END ;
  70.               IF (ym[i]>height) THEN ym[i] := 0 ; END ;
  71.            END ;
  72.            SetAPen(RP,2) ; dummy := WritePixel(RP,xm[i],ym[i]) ;
  73.            Delay(1) ;
  74.         END ;
  75.      END ;
  76. END EatIT.
  77.