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 <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
;; pixels, windows, or sprites. Grid-to-pixel conversion happens exclusively
|
;; pixels, windows, or sprites. Grid-to-pixel conversion happens exclusively
|
||||||
;; here.
|
;; here.
|
||||||
|
|
||||||
(define-library (pacman-project adt-draw)
|
(define-library (pacman-project adt draw)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pp1 graphics)
|
(pp1 graphics)
|
||||||
(pacman-project constants))
|
(pacman-project constants))
|
||||||
@@ -194,12 +194,6 @@
|
|||||||
((pause-tile 'draw-rectangle!) 0 90 670 height "black")
|
((pause-tile 'draw-rectangle!) 0 90 670 height "black")
|
||||||
((pause-tile 'draw-text!) "Game Paused" 40 200 400 "red"))))
|
((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
|
;; Main draw function
|
||||||
;;
|
;;
|
||||||
@@ -7,11 +7,11 @@
|
|||||||
;; Top-level game object that connects the level (logic) with the draw ADT
|
;; Top-level game object that connects the level (logic) with the draw ADT
|
||||||
;; (graphics). Registers callbacks for the game loop, keys, and drawing.
|
;; (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)
|
(import (scheme base)
|
||||||
(pacman-project constants)
|
(pacman-project constants)
|
||||||
(pacman-project adt-level)
|
(pacman-project adt level)
|
||||||
(pacman-project adt-draw))
|
(pacman-project adt draw))
|
||||||
(export make-game)
|
(export make-game)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
@@ -9,10 +9,10 @@
|
|||||||
;; The key is placed at a random coin position in the maze. When Pac-Man
|
;; 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.
|
;; 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)
|
(import (scheme base)
|
||||||
(pacman-project constants)
|
(pacman-project constants)
|
||||||
(pacman-project adt-position))
|
(pacman-project adt position))
|
||||||
(export make-key)
|
(export make-key)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
@@ -8,15 +8,15 @@
|
|||||||
;; pickup, door opening, teleportation, pause, and time management.
|
;; pickup, door opening, teleportation, pause, and time management.
|
||||||
;; Contains NO graphics code.
|
;; Contains NO graphics code.
|
||||||
|
|
||||||
(define-library (pacman-project adt-level)
|
(define-library (pacman-project adt level)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pacman-project constants)
|
(pacman-project constants)
|
||||||
(pacman-project adt-position)
|
(pacman-project adt position)
|
||||||
(pacman-project adt-maze)
|
(pacman-project adt maze)
|
||||||
(pacman-project adt-pacman)
|
(pacman-project adt pacman)
|
||||||
(pacman-project adt-key)
|
(pacman-project adt key)
|
||||||
(pacman-project adt-score)
|
(pacman-project adt score)
|
||||||
(pacman-project adt-timer))
|
(pacman-project adt timer))
|
||||||
(export make-level)
|
(export make-level)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
;; The maze contains the logical grid with cells. Each cell has a type
|
;; The maze contains the logical grid with cells. Each cell has a type
|
||||||
;; (wall, coin, empty, key, door). This ADT contains NO graphics code.
|
;; (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)
|
(import (scheme base)
|
||||||
(pacman-project constants))
|
(pacman-project constants))
|
||||||
(export make-maze)
|
(export make-maze)
|
||||||
@@ -7,9 +7,9 @@
|
|||||||
;; Manages the logical state of the player: grid position and current
|
;; Manages the logical state of the player: grid position and current
|
||||||
;; direction. Contains NO graphics code.
|
;; direction. Contains NO graphics code.
|
||||||
|
|
||||||
(define-library (pacman-project adt-pacman)
|
(define-library (pacman-project adt pacman)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pacman-project adt-position))
|
(pacman-project adt position))
|
||||||
(export make-pacman)
|
(export make-pacman)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
;; A position represents a location on the logical maze grid.
|
;; A position represents a location on the logical maze grid.
|
||||||
;; Coordinates are in grid units (row, col), NOT pixels.
|
;; Coordinates are in grid units (row, col), NOT pixels.
|
||||||
|
|
||||||
(define-library (pacman-project adt-position)
|
(define-library (pacman-project adt position)
|
||||||
(import (scheme base))
|
(import (scheme base))
|
||||||
(export make-position)
|
(export make-position)
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
;; Tracks the player's score. Contains NO graphics code.
|
;; Tracks the player's score. Contains NO graphics code.
|
||||||
|
|
||||||
(define-library (pacman-project adt-score)
|
(define-library (pacman-project adt score)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pacman-project constants))
|
(pacman-project constants))
|
||||||
(export make-score)
|
(export make-score)
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
;; Manages the countdown time limit. Contains NO graphics code.
|
;; Manages the countdown time limit. Contains NO graphics code.
|
||||||
|
|
||||||
(define-library (pacman-project adt-timer)
|
(define-library (pacman-project adt timer)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pacman-project constants))
|
(pacman-project constants))
|
||||||
(export make-timer)
|
(export make-timer)
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pacman-project adt-game))
|
(pacman-project adt game))
|
||||||
|
|
||||||
(define game (make-game))
|
(define game (make-game))
|
||||||
((game 'start!))
|
((game 'start!))
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pp1 tests)
|
(pp1 tests)
|
||||||
(pacman-project constants)
|
(pacman-project constants)
|
||||||
(pacman-project adt-maze))
|
(pacman-project adt maze))
|
||||||
(export test)
|
(export test)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
(define-library (pacman-project tests test-pacman)
|
(define-library (pacman-project tests test-pacman)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pp1 tests)
|
(pp1 tests)
|
||||||
(pacman-project adt-position)
|
(pacman-project adt position)
|
||||||
(pacman-project adt-pacman))
|
(pacman-project adt pacman))
|
||||||
(export test)
|
(export test)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
(define-library (pacman-project tests test-position)
|
(define-library (pacman-project tests test-position)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pp1 tests)
|
(pp1 tests)
|
||||||
(pacman-project adt-position))
|
(pacman-project adt position))
|
||||||
(export test)
|
(export test)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
|
|||||||
30
pacman-project/tests/test-score.rkt
Normal file
30
pacman-project/tests/test-score.rkt
Normal file
@@ -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"))))
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
(define-library (pacman-project tests test-timer)
|
(define-library (pacman-project tests test-timer)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(pp1 tests)
|
(pp1 tests)
|
||||||
(pacman-project adt-timer))
|
(pacman-project adt timer))
|
||||||
(export test)
|
(export test)
|
||||||
|
|
||||||
(begin
|
(begin
|
||||||
|
|||||||
Reference in New Issue
Block a user