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:
48
pacman-project/adt/game.rkt
Normal file
48
pacman-project/adt/game.rkt
Normal file
@@ -0,0 +1,48 @@
|
||||
#lang r7rs
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Game ADT ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; 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)
|
||||
(import (scheme base)
|
||||
(pacman-project constants)
|
||||
(pacman-project adt level)
|
||||
(pacman-project adt draw))
|
||||
(export make-game)
|
||||
|
||||
(begin
|
||||
|
||||
;; make-game :: -> game
|
||||
(define (make-game)
|
||||
(let ((level (make-level))
|
||||
(draw (make-draw window-width-px window-height-px)))
|
||||
|
||||
;; key-handler :: symbol, any -> /
|
||||
;; Processes key presses and forwards them to the level.
|
||||
(define (key-handler status key)
|
||||
(when (eq? status 'pressed)
|
||||
((level 'key-press!) key)))
|
||||
|
||||
;; game-loop :: number -> /
|
||||
;; Called each frame for game state updates.
|
||||
(define (game-loop delta-time)
|
||||
((level 'update!) delta-time))
|
||||
|
||||
;; start! :: -> /
|
||||
;; Starts the game by registering all callbacks.
|
||||
(define (start!)
|
||||
((draw 'set-game-loop!) game-loop)
|
||||
((draw 'set-key-callback!) key-handler)
|
||||
((draw 'start-drawing!) dispatch-game))
|
||||
|
||||
;; dispatch-game :: symbol -> any
|
||||
(define (dispatch-game msg)
|
||||
(cond ((eq? msg 'start!) start!)
|
||||
((eq? msg 'level) level)
|
||||
(else (error "Game ADT -- Unknown message:" msg))))
|
||||
|
||||
dispatch-game))))
|
||||
Reference in New Issue
Block a user