From caac996acddff6b8dfa6df1080d4fe2ee0f08b0b Mon Sep 17 00:00:00 2001 From: joren Date: Mon, 23 Mar 2026 11:11:08 +0100 Subject: [PATCH] Refactor(Structure): Move ADTs into adt/ folder, rename spel.rkt to main.rkt New structure groups all ADT modules under adt/ directory, removing redundant adt- prefix from filenames. Library names now read as (pacman-project adt position) etc. All imports updated accordingly. Co-Authored-By: Claude Opus 4.6 --- pacman-project/{adt-draw.rkt => adt/draw.rkt} | 8 +---- pacman-project/{adt-game.rkt => adt/game.rkt} | 6 ++-- pacman-project/{adt-key.rkt => adt/key.rkt} | 4 +-- .../{adt-level.rkt => adt/level.rkt} | 14 ++++----- pacman-project/{adt-maze.rkt => adt/maze.rkt} | 2 +- .../{adt-pacman.rkt => adt/pacman.rkt} | 4 +-- .../{adt-position.rkt => adt/position.rkt} | 2 +- .../{adt-score.rkt => adt/score.rkt} | 2 +- .../{adt-timer.rkt => adt/timer.rkt} | 2 +- pacman-project/{spel.rkt => main.rkt} | 2 +- pacman-project/tests/test-maze.rkt | 2 +- pacman-project/tests/test-pacman.rkt | 4 +-- pacman-project/tests/test-position.rkt | 2 +- pacman-project/tests/test-score.rkt | 30 +++++++++++++++++++ pacman-project/tests/test-timer.rkt | 2 +- 15 files changed, 55 insertions(+), 31 deletions(-) rename pacman-project/{adt-draw.rkt => adt/draw.rkt} (97%) rename pacman-project/{adt-game.rkt => adt/game.rkt} (93%) rename pacman-project/{adt-key.rkt => adt/key.rkt} (95%) rename pacman-project/{adt-level.rkt => adt/level.rkt} (95%) rename pacman-project/{adt-maze.rkt => adt/maze.rkt} (99%) rename pacman-project/{adt-pacman.rkt => adt/pacman.rkt} (94%) rename pacman-project/{adt-position.rkt => adt/position.rkt} (97%) rename pacman-project/{adt-score.rkt => adt/score.rkt} (95%) rename pacman-project/{adt-timer.rkt => adt/timer.rkt} (98%) rename pacman-project/{spel.rkt => main.rkt} (90%) create mode 100644 pacman-project/tests/test-score.rkt diff --git a/pacman-project/adt-draw.rkt b/pacman-project/adt/draw.rkt similarity index 97% rename from pacman-project/adt-draw.rkt rename to pacman-project/adt/draw.rkt index e6eb8ee..48c36d8 100644 --- a/pacman-project/adt-draw.rkt +++ b/pacman-project/adt/draw.rkt @@ -8,7 +8,7 @@ ;; pixels, windows, or sprites. Grid-to-pixel conversion happens exclusively ;; here. -(define-library (pacman-project adt-draw) +(define-library (pacman-project adt draw) (import (scheme base) (pp1 graphics) (pacman-project constants)) @@ -194,12 +194,6 @@ ((pause-tile 'draw-rectangle!) 0 90 670 height "black") ((pause-tile 'draw-text!) "Game Paused" 40 200 400 "red")))) - ;; redraw-maze! :: maze -> / - ;; Redraws the maze (after door removal). - (define (redraw-maze! maze) - ((maze-tile 'clear!)) - (draw-maze! maze)) - ;; ;; Main draw function ;; diff --git a/pacman-project/adt-game.rkt b/pacman-project/adt/game.rkt similarity index 93% rename from pacman-project/adt-game.rkt rename to pacman-project/adt/game.rkt index 17db6f5..6a56f71 100644 --- a/pacman-project/adt-game.rkt +++ b/pacman-project/adt/game.rkt @@ -7,11 +7,11 @@ ;; Top-level game object that connects the level (logic) with the draw ADT ;; (graphics). Registers callbacks for the game loop, keys, and drawing. -(define-library (pacman-project adt-game) +(define-library (pacman-project adt game) (import (scheme base) (pacman-project constants) - (pacman-project adt-level) - (pacman-project adt-draw)) + (pacman-project adt level) + (pacman-project adt draw)) (export make-game) (begin diff --git a/pacman-project/adt-key.rkt b/pacman-project/adt/key.rkt similarity index 95% rename from pacman-project/adt-key.rkt rename to pacman-project/adt/key.rkt index 850b5b9..92d5712 100644 --- a/pacman-project/adt-key.rkt +++ b/pacman-project/adt/key.rkt @@ -9,10 +9,10 @@ ;; The key is placed at a random coin position in the maze. When Pac-Man ;; picks it up, doors can be opened. Contains NO graphics code. -(define-library (pacman-project adt-key) +(define-library (pacman-project adt key) (import (scheme base) (pacman-project constants) - (pacman-project adt-position)) + (pacman-project adt position)) (export make-key) (begin diff --git a/pacman-project/adt-level.rkt b/pacman-project/adt/level.rkt similarity index 95% rename from pacman-project/adt-level.rkt rename to pacman-project/adt/level.rkt index 0e26772..2904fd8 100644 --- a/pacman-project/adt-level.rkt +++ b/pacman-project/adt/level.rkt @@ -8,15 +8,15 @@ ;; pickup, door opening, teleportation, pause, and time management. ;; Contains NO graphics code. -(define-library (pacman-project adt-level) +(define-library (pacman-project adt level) (import (scheme base) (pacman-project constants) - (pacman-project adt-position) - (pacman-project adt-maze) - (pacman-project adt-pacman) - (pacman-project adt-key) - (pacman-project adt-score) - (pacman-project adt-timer)) + (pacman-project adt position) + (pacman-project adt maze) + (pacman-project adt pacman) + (pacman-project adt key) + (pacman-project adt score) + (pacman-project adt timer)) (export make-level) (begin diff --git a/pacman-project/adt-maze.rkt b/pacman-project/adt/maze.rkt similarity index 99% rename from pacman-project/adt-maze.rkt rename to pacman-project/adt/maze.rkt index 076196b..781f9b8 100644 --- a/pacman-project/adt-maze.rkt +++ b/pacman-project/adt/maze.rkt @@ -7,7 +7,7 @@ ;; The maze contains the logical grid with cells. Each cell has a type ;; (wall, coin, empty, key, door). This ADT contains NO graphics code. -(define-library (pacman-project adt-maze) +(define-library (pacman-project adt maze) (import (scheme base) (pacman-project constants)) (export make-maze) diff --git a/pacman-project/adt-pacman.rkt b/pacman-project/adt/pacman.rkt similarity index 94% rename from pacman-project/adt-pacman.rkt rename to pacman-project/adt/pacman.rkt index fb72188..7430c55 100644 --- a/pacman-project/adt-pacman.rkt +++ b/pacman-project/adt/pacman.rkt @@ -7,9 +7,9 @@ ;; Manages the logical state of the player: grid position and current ;; direction. Contains NO graphics code. -(define-library (pacman-project adt-pacman) +(define-library (pacman-project adt pacman) (import (scheme base) - (pacman-project adt-position)) + (pacman-project adt position)) (export make-pacman) (begin diff --git a/pacman-project/adt-position.rkt b/pacman-project/adt/position.rkt similarity index 97% rename from pacman-project/adt-position.rkt rename to pacman-project/adt/position.rkt index abe9724..9b7b6a9 100644 --- a/pacman-project/adt-position.rkt +++ b/pacman-project/adt/position.rkt @@ -7,7 +7,7 @@ ;; A position represents a location on the logical maze grid. ;; Coordinates are in grid units (row, col), NOT pixels. -(define-library (pacman-project adt-position) +(define-library (pacman-project adt position) (import (scheme base)) (export make-position) diff --git a/pacman-project/adt-score.rkt b/pacman-project/adt/score.rkt similarity index 95% rename from pacman-project/adt-score.rkt rename to pacman-project/adt/score.rkt index 7757276..22906a4 100644 --- a/pacman-project/adt-score.rkt +++ b/pacman-project/adt/score.rkt @@ -6,7 +6,7 @@ ;; Tracks the player's score. Contains NO graphics code. -(define-library (pacman-project adt-score) +(define-library (pacman-project adt score) (import (scheme base) (pacman-project constants)) (export make-score) diff --git a/pacman-project/adt-timer.rkt b/pacman-project/adt/timer.rkt similarity index 98% rename from pacman-project/adt-timer.rkt rename to pacman-project/adt/timer.rkt index 796ce67..f6f863c 100644 --- a/pacman-project/adt-timer.rkt +++ b/pacman-project/adt/timer.rkt @@ -6,7 +6,7 @@ ;; Manages the countdown time limit. Contains NO graphics code. -(define-library (pacman-project adt-timer) +(define-library (pacman-project adt timer) (import (scheme base) (pacman-project constants)) (export make-timer) diff --git a/pacman-project/spel.rkt b/pacman-project/main.rkt similarity index 90% rename from pacman-project/spel.rkt rename to pacman-project/main.rkt index e3dc26a..b8d05fe 100644 --- a/pacman-project/spel.rkt +++ b/pacman-project/main.rkt @@ -5,7 +5,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (import (scheme base) - (pacman-project adt-game)) + (pacman-project adt game)) (define game (make-game)) ((game 'start!)) diff --git a/pacman-project/tests/test-maze.rkt b/pacman-project/tests/test-maze.rkt index b743404..debf3be 100644 --- a/pacman-project/tests/test-maze.rkt +++ b/pacman-project/tests/test-maze.rkt @@ -8,7 +8,7 @@ (import (scheme base) (pp1 tests) (pacman-project constants) - (pacman-project adt-maze)) + (pacman-project adt maze)) (export test) (begin diff --git a/pacman-project/tests/test-pacman.rkt b/pacman-project/tests/test-pacman.rkt index 4e6befc..82fe631 100644 --- a/pacman-project/tests/test-pacman.rkt +++ b/pacman-project/tests/test-pacman.rkt @@ -7,8 +7,8 @@ (define-library (pacman-project tests test-pacman) (import (scheme base) (pp1 tests) - (pacman-project adt-position) - (pacman-project adt-pacman)) + (pacman-project adt position) + (pacman-project adt pacman)) (export test) (begin diff --git a/pacman-project/tests/test-position.rkt b/pacman-project/tests/test-position.rkt index df41b10..a420763 100644 --- a/pacman-project/tests/test-position.rkt +++ b/pacman-project/tests/test-position.rkt @@ -7,7 +7,7 @@ (define-library (pacman-project tests test-position) (import (scheme base) (pp1 tests) - (pacman-project adt-position)) + (pacman-project adt position)) (export test) (begin diff --git a/pacman-project/tests/test-score.rkt b/pacman-project/tests/test-score.rkt new file mode 100644 index 0000000..f198c51 --- /dev/null +++ b/pacman-project/tests/test-score.rkt @@ -0,0 +1,30 @@ +#lang r7rs + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Tests: Score ADT ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-library (pacman-project tests test-score) + (import (scheme base) + (pp1 tests) + (pacman-project adt score)) + (export test) + + (begin + + ;; Test initial score + (define (test-initial) + (define s (make-score)) + (check-eq? (s 'points) 0 "Initial score should be 0")) + + ;; Test score increase + (define (test-increase) + (define s (make-score)) + ((s 'increase!)) + (check-eq? (s 'points) 10 "Score should be 10 after 1 coin") + ((s 'increase!)) + (check-eq? (s 'points) 20 "Score should be 20 after 2 coins")) + + (define (test) + (run-test test-initial "Score: initial score") + (run-test test-increase "Score: increase")))) diff --git a/pacman-project/tests/test-timer.rkt b/pacman-project/tests/test-timer.rkt index 326988c..1e23541 100644 --- a/pacman-project/tests/test-timer.rkt +++ b/pacman-project/tests/test-timer.rkt @@ -7,7 +7,7 @@ (define-library (pacman-project tests test-timer) (import (scheme base) (pp1 tests) - (pacman-project adt-timer)) + (pacman-project adt timer)) (export test) (begin