BlitBmp2.Mod 960 B

12345678910111213141516171819202122232425262728293031323334
  1. MODULE BlitBmp2;
  2. IMPORT G := Graph;
  3. CONST N = 100;
  4. VAR s, b: G.Bitmap;
  5. x, y, vx, vy: ARRAY N OF REAL;
  6. i: INTEGER;
  7. BEGIN
  8. s := G.Init();
  9. b := G.LoadBitmap('data/examples/rocket.png');
  10. FOR i := 0 TO N - 1 DO
  11. x[i] := s.w * G.Uniform();
  12. y[i] := s.h * G.Uniform();
  13. vx[i] := 0; vy[i] := -G.Uniform() * 5 - 0.3
  14. END;
  15. REPEAT
  16. G.ClearScreen;
  17. G.StretchBlit(b, s, 0, 0, b.w, b.h, 0, 0, s.w, s.h);
  18. FOR i := 0 TO N - 1 DO
  19. G.BlitWhole(b, s, FLOOR(x[i]), FLOOR(y[i]));
  20. x[i] := x[i] + vx[i]; y[i] := y[i] + vy[i];
  21. IF x[i] < -b.w THEN x[i] := x[i] + s.w + b.w
  22. ELSIF x[i] > s.w THEN x[i] := x[i] - s.w - b.w
  23. END;
  24. IF y[i] < -b.h THEN y[i] := y[i] + s.h + b.h
  25. ELSIF y[i] > s.h THEN y[i] := y[i] - s.h - b.h
  26. END;
  27. vx[i] := vx[i] + (G.Uniform() * 2 - 1) / 50;
  28. vy[i] := vy[i] + (G.Uniform() * 2 - 1) / 50
  29. END;
  30. G.Flip;
  31. G.Delay(20)
  32. UNTIL G.KeyPressed();
  33. G.Close
  34. END BlitBmp2.