Examples

There are a few example programs that come with the allegro.plt package. Type any of the following require lines into drscheme/mzscheme and call the (run) method to run them.

;; Demo of sound and using the mouse
(require (planet "piano.ss" ("kazzmir" "allegro.plt") "examples"))

;; Show Allegros ability to blend images together
(require (planet "exblend.ss" ("kazzmir" "allegro.plt") "examples"))

;; Hello world
(require (planet "exhello.ss" ("kazzmir" "allegro.plt") "examples"))

;; 3d bouncing boxes in various rendering modes
(require (planet "ex3d.ss" ("kazzmir" "allegro.plt") "examples"))

;; 3d simulation of flying through a wormhole, non-interactive
(require (planet "wormhole.ss" ("kazzmir" "allegro.plt") "examples"))

;; A game wherein you must collect the white diamonds and escape through the
;; red portal. Left click to shoot
(require (planet "xquest.ss" ("kazzmir" "allegro.plt") "examples/xquest"))

;; A slightly different remake of xquest.ss using the game framework
(require (planet "simple.ss" ("kazzmir" "allegro.plt") "examples"))

The following is a short tutorial on using Allegro. At each step I will add some code and explain what it does.

1. Set up Allegro and quit. Pretty self explanatory.

;; this require will be used throughout
(require (planet "util.ss" ("kazzmir" "allegro.plt" 1 1)))
(require (planet "keyboard.ss" ("kazzmir" "allegro.plt" 1 1)))
(require (prefix image- (planet "image.ss" ("kazzmir" "allegro.plt" 1 1))))
(require (prefix mouse- (planet "mouse.ss" ("kazzmir" "allegro.plt" 1 1))))

(define (run)
  (easy-init 640 480 16) ;; set up Allegro. Use 640x480 for window demensions and 16 bits per pixel
  (easy-exit)) ;; Just quit Allegro

2. Print hello world to the screen and quit when ESC is pressed.

(define (run)
  (easy-init 640 480 16)
  (game-loop
     (lambda ()
        (keypressed? 'ESC))
     (lambda (buffer)
        (image-print buffer 50 50 (image-color 255 255 255) -1 "Hello world"))
     (frames-per-second 30))
  (easy-exit))

3. Print hello world wherever the mouse is.

(define (run)
  (easy-init 640 480 16)
  (game-loop
     (lambda ()
        (keypressed? 'ESC))
     (lambda (buffer)
        (let ((x (mouse-x))
	      (y (mouse-y)))
	 (image-print buffer x y (image-color 255 255 255) -1 "Hello world")))
     (frames-per-second 30))
  (easy-exit))

4. Load a bitmap and show it where the mouse is.

(define (run)
  (easy-init 640 480 16)
  (let ((my-image (image-create-from-file "myimage.bmp")))
    (game-loop
      (lambda ()
        (keypressed? 'ESC))
      (lambda (buffer)
        (let ((x (mouse-x))
	      (y (mouse-y)))
	 (image-copy buffer my-image x y)))
     (frames-per-second 30))
  (easy-exit)))