| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- MODULE demo;
- FROM tigr IMPORT TigrPtr,tigrWindow,tigrFree,tigrClosed, tigrClear, tigrUpdate, TPixelType,
- tigrLine, TK_ESCAPE, tigrKeyDown, tigrReadChar, tfont, tigrPrint,tigrFill,
- tigrCircle, tigrRect, tigrFillCircle, tigrTime, tigrError, tigrClip,
- tigrFillRect, tigrTextWidth, tigrTextHeight, tigrLoadImage, tigrReadFile,
- tigrBitmap, TIGR_2X, tigrSetPostFX, tigrMouse,tigrBlit, tigrBlitAlpha,
- tigrEncodeUTF8, TK_RIGHT,tigrKeyHeld, TK_SPACE, TK_LEFT;
- FROM helper IMPORT tigrRGB, tigrRGBA;
- FROM DynamicStrings IMPORT String, InitString;
- FROM InOut IMPORT Write, WriteLn, WriteCard,WriteString;
- FROM Delay IMPORT Delay;
-
- VAR
- standing : BOOLEAN;
- remaining : SHORTREAL;
- backdrop, screen : TigrPtr;
- squinkle : TigrPtr;
- greeting : String;
- prevx, prevy, prev : CARDINAL;
- chars : ARRAY[0..16] OF CHAR;
- tempString : String;
- n : CARDINAL;
- dt : SHORTREAL;
- x, y ,b : CARDINAL;
- message, message1 : String;
- c : CARDINAL;
- playerx, playery,
- playerxs, playerys : INTEGER;
- PROCEDURE update (dt : SHORTREAL);
- VAR
- oldx, oldy : INTEGER;
- BEGIN
- IF (remaining > 0.0) THEN
- remaining := remaining - dt;
- END;
- (* Read the keyboard and move the player. *)
- WriteString("Position départ ->");
- WriteCard(playerxs, 6); WriteString("**");WriteCard(playerys, 6); WriteLn;
- IF (standing OR (tigrKeyDown(screen, TK_SPACE) >0)) THEN
- playerys := playerys - 200;
- END;
- IF ((tigrKeyHeld(screen, TK_LEFT) > 0) OR (tigrKeyHeld(screen, ORD('a')) > 0)) THEN
- WriteString("Touche gauche"); WriteLn;
- playerxs := playerxs - 10;
- END;
- IF ((tigrKeyHeld(screen, TK_RIGHT) > 0) OR (tigrKeyHeld(screen, ORD('d')) > 0)) THEN
- WriteString("Toiuche droite"); WriteLn;
- playerxs := playerxs + 10;
- END;
- WriteString("Nouvelle Position ->");
- WriteCard(playerxs, 6); WriteString("**");WriteCard(playerys, 6); WriteLn;
- Delay(1000);
-
- END update;
- BEGIN
- standing := TRUE;
- remaining := 0.0;
- playerx := 160;
- playery := 200;
- playerxs := 0;
- playerys := 0;
- squinkle := tigrLoadImage("squinkle.png");
- IF ( squinkle = NIL) THEN
- tigrError(0, "Cannot load squinkle.png");
- END;
-
- (* Load some UTF-8 text. *)
- greeting := tigrReadFile("greeting.txt", 0);
- IF (greeting = NIL) THEN
- tigrError(0, "Cannot load greeting.txt");
- END;
- (* Make a window and an off-screen backdrop. *)
- screen := tigrWindow(320, 240, greeting, TIGR_2X);
- backdrop := tigrBitmap(screen^.w, screen^.h);
- (* Fill in the background. *)
- tigrClear(backdrop, tigrRGB(80, 180, 255));
- tigrFill(backdrop, 0, 200, 320, 40, tigrRGB(60, 120, 60));
- tigrFill(backdrop, 0, 200, 320, 3, tigrRGB(0, 0, 0));
- tigrLine(backdrop, 0, 201, 320, 201, tigrRGB(255, 255, 255));
- (* Enable post fx *)
- tigrSetPostFX(screen, 1.0, 1.0, 1.0, 2.0);
- prevx := 0;
- prevy := 0;
- prev := 0;
- (* Maintain a list of characters entered. *)
- FOR n := 0 TO 16 BY 1 DO
- chars[n] := "_";
- END;
- WHILE (NOT (tigrClosed(screen) > 0)) OR (tigrKeyDown(screen, TK_ESCAPE) > 0) DO
- (* Update the game. *)
- dt := tigrTime();
- update(dt);
- (* Read the mouse and draw lines when pressed. *)
-
- tigrMouse(screen, x, y, b );
- IF (b = 1) THEN
- IF (prev > 0) THEN
- tigrLine(backdrop, prevx, prevy, x, y, tigrRGB(0, 0, 0));
- END;
- prevx := x;
- prevy := y;
- prev := 1;
- ELSE
- prev := 0;
- END;
- (* Composite the backdrop and sprite onto the screen. *)
- tigrBlit(screen, backdrop, 0, 0, 0, 0, backdrop^.w, backdrop^.h);
- tigrBlitAlpha(screen, squinkle, playerx - INTEGER(squinkle^.w / 2), playery - INTEGER(squinkle^.h), 0, 0,
- squinkle^.w, squinkle^.h, 1.0);
- message := InitString("A D + SPACE");
- tigrPrint(screen, tfont, 10, 10, tigrRGBA(0C0H, 0D0H, 0FFH, 0C0H), greeting);
- tigrPrint(screen, tfont, 10, 222, tigrRGBA(0FFH, 0FFH, 0FFH, 0FFH), message);
- (* Grab any chars and add them to our buffer. *)
- LOOP
- c := tigrReadChar(screen);
- IF (c = 0) THEN
- EXIT;
- END;
- FOR n := 1 TO 16 DO
- chars[n - 1] := chars[n];
- END;
- chars[15] := CHR(c);
- END;
- Write(CHR(c));
- tigrUpdate(screen);
- END;
- (* (* Print out the character buffer too. *)
- FOR n := 0 TO 15 DO
- tempString := tigrEncodeUTF8(p, chars[n]);
- END;
- *p = 0;
-
- tigrPrint(screen, tfont, 160, 222, tigrRGB(255, 255, 255), "Chars: %s", tmp); *)
- tigrFree(squinkle);
- tigrFree(backdrop);
- tigrFree(screen);
- END demo.
|