Renamed files: constanten→constants, adt-positie→adt-position, adt-doolhof→adt-maze, adt-sleutel→adt-key, adt-tijdslimiet→adt-timer, adt-teken→adt-draw, adt-spel→adt-game. All message names, variables, comments, and tests converted to English. Also fixed counter location bug (time-label x/y were swapped). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
52 lines
1.9 KiB
Racket
52 lines
1.9 KiB
Racket
#lang r7rs
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Spel ADT ;;
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
(define-library ()
|
|
(import (scheme base)
|
|
(snake-wpo adt-level)
|
|
(snake-wpo constanten)
|
|
(snake-wpo adt-teken))
|
|
(export maak-spel)
|
|
|
|
(begin
|
|
|
|
;; maak-spel :: / -> spel
|
|
(define (maak-spel)
|
|
;; Dit is het eigenlijk spel object.
|
|
(let ((level (maak-level spel-breedte spel-hoogte))
|
|
(teken (maak-teken venster-breedte-px venster-hoogte-px)))
|
|
|
|
;; toets-procedure :: symbol, any -> /
|
|
(define (toets-procedure status toets)
|
|
;; status is ofwel gelijk aan ...
|
|
;; - 'pressed: wanneer de toets ingedrukt wordt
|
|
;; - 'released: wanneer de toets losgelaten wordt
|
|
;; Wanneer de toets voor lange tijd ingedrukt wordt, dan wordt deze
|
|
;; procedure meermaals aangeroepen waarbij status gelijk is aan 'pressed
|
|
;; voor dezelfde toets!
|
|
(if (eq? status 'pressed)
|
|
((level 'toets!) toets)))
|
|
|
|
;; spel-lus-procedure :: number -> /
|
|
(define (spel-lus-procedure delta-tijd)
|
|
((level 'update!) delta-tijd))
|
|
|
|
(define (teken-procedure)
|
|
((teken 'teken-spel!) dispatch-spel))
|
|
|
|
(define (start!)
|
|
;; Stel de callbacks in voor het teken ADT: implementatie van de spellus.
|
|
((teken 'set-spel-lus-functie!) spel-lus-procedure)
|
|
((teken 'set-toets-functie!) toets-procedure)
|
|
((teken 'start-tekenen!) dispatch-spel))
|
|
|
|
;; Dispatch functie
|
|
(define (dispatch-spel msg)
|
|
(cond ((eq? msg 'start!) start!)
|
|
((eq? msg 'level) level)
|
|
(else (error "Spel ADT -- Onbekend bericht:" msg))))
|
|
|
|
dispatch-spel)))) |