From 41133a2f09143ea322b9e3b0b8f29c9ac944cec8 Mon Sep 17 00:00:00 2001 From: joren Date: Mon, 23 Mar 2026 10:51:17 +0100 Subject: [PATCH] Refactor(Score ADT): Encapsulate score as message-passing ADT without graphics Pure logic ADT with punten getter and verhoog! mutator. Uses punten-per-muntje constant. No graphics code. Co-Authored-By: Claude Opus 4.6 --- pacman-project/adt-score.rkt | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 pacman-project/adt-score.rkt diff --git a/pacman-project/adt-score.rkt b/pacman-project/adt-score.rkt new file mode 100644 index 0000000..15584e4 --- /dev/null +++ b/pacman-project/adt-score.rkt @@ -0,0 +1,32 @@ +#lang r7rs + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Score ADT ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Houdt de score bij. Bevat GEEN grafische code. + +(define-library (pacman-project adt-score) + (import (scheme base) + (pacman-project constanten)) + (export maak-score) + + (begin + + ;; maak-score :: -> score + ;; Maakt een nieuw score-object aan, startend bij 0. + (define (maak-score) + (let ((punten 0)) + + ;; verhoog! :: -> / + ;; Verhoogt de score met het aantal punten per muntje. + (define (verhoog!) + (set! punten (+ punten punten-per-muntje))) + + ;; dispatch-score :: symbol -> any + (define (dispatch-score msg) + (cond ((eq? msg 'punten) punten) + ((eq? msg 'verhoog!) verhoog!) + (else (error "Score ADT -- Onbekend bericht:" msg)))) + + dispatch-score))))