70 lines
2.0 KiB
Racket
70 lines
2.0 KiB
Racket
#lang r7rs
|
|
|
|
; Pacman ADT ;
|
|
|
|
|
|
(define-library (pacman-project pacman)
|
|
(import (scheme base)
|
|
(pp1 graphics)
|
|
(pacman-project screen)
|
|
(pacman-project maze))
|
|
|
|
(export pacman-x
|
|
pacman-y
|
|
set-pacman-x!
|
|
set-pacman-y!
|
|
animate-pacman!
|
|
rotate-pacman!)
|
|
|
|
(begin
|
|
|
|
(define time-since-last-animation 0)
|
|
(define animation-interval 100)
|
|
|
|
(define pacman-layer (make-new-layer!))
|
|
|
|
;bitmap-sequence voor pacman
|
|
(define pacman-bitmap-tiles
|
|
(list (make-bitmap-tile "pacman-sprites/pacman-death-1.png")
|
|
(make-bitmap-tile "pacman-sprites/pacman-closed.png")
|
|
(make-bitmap-tile "pacman-sprites/pacman-open.png")))
|
|
|
|
(define pacman-sprite (make-tile-sequence pacman-bitmap-tiles))
|
|
((pacman-sprite 'set-scale!) 1.5)
|
|
((pacman-layer 'add-drawable!) pacman-sprite)
|
|
|
|
;start-positie van pacman
|
|
((pacman-sprite 'set-x!) (* 2 cell-size))
|
|
((pacman-sprite 'set-y!) (+ (* 5 cell-size) maze-offset-y))
|
|
|
|
|
|
;geeft x-waarde terug
|
|
(define (pacman-x)
|
|
((pacman-sprite 'get-x)))
|
|
|
|
;geeft y-waarde terug
|
|
(define (pacman-y)
|
|
((pacman-sprite 'get-y)))
|
|
|
|
;past de x-waarde aan
|
|
(define (set-pacman-x! x)
|
|
((pacman-sprite 'set-x!) x))
|
|
|
|
;past de y-waarde aan
|
|
(define (set-pacman-y! y)
|
|
((pacman-sprite 'set-y!) y))
|
|
|
|
;pacman roteren obv zijn direction
|
|
(define (rotate-pacman! direction)
|
|
(cond ((eq? direction 'right) ((pacman-sprite 'rotate!) 0))
|
|
((eq? direction 'left) ((pacman-sprite 'rotate!) 180))
|
|
((eq? direction 'up) ((pacman-sprite 'rotate!) 90))
|
|
((eq? direction 'down) ((pacman-sprite 'rotate!) -90))))
|
|
|
|
;pacman animaten door langs de bitmap sequence te gaan
|
|
(define (animate-pacman! ms)
|
|
(set! time-since-last-animation (+ time-since-last-animation ms))
|
|
(when (>= time-since-last-animation animation-interval)
|
|
((pacman-sprite 'set-next!))
|
|
(set! time-since-last-animation 0)))))
|