first commit

This commit is contained in:
joren
2026-03-23 10:28:54 +01:00
commit 3abc9aae55
109 changed files with 2467 additions and 0 deletions

60
pacman-project/key.rkt Normal file
View File

@@ -0,0 +1,60 @@
#lang r7rs
(#%require (only racket/base random))
; Key ADT ;
(define-library (pacman-project key)
(import (scheme base)
(pp1 graphics)
(pacman-project screen)
(pacman-project maze)
(pacman-project coin))
(export draw-key!
remove-key!)
(begin
(define key-layer (make-new-layer!))
;bitmap voor de sleutel
(define key (make-bitmap-tile "pacman-sprites/key.png"))
((key 'set-scale!) 1.5)
((key-layer 'add-drawable!) key)
;sleutel naast de score tekenen
(define taken-key (make-bitmap-tile "pacman-sprites/key.png"))
((taken-key 'set-scale!) 3)
((taken-key 'set-x!) 20)
((taken-key 'set-y!) 35)
;de sleutel op een random positie in het doolhof plaatsen
(define (place-key-at-random-position!)
(let loop ((attempts 0)) ;attempts is het aantal keer dat er een key geplaats wordt.
;dit wordt gedaan zodat er geen herhaling is bij het plaatsen van keys
(if (>= attempts 1000)
(error "valid position not found") ;
(let ((col (random 0 maze-cols))
(row (random 0 maze-rows)))
(if (cell-coin? row col) ;als de cell een valid cell is (dus de plek waar een coin kan komen)
(begin
((key 'set-x!) (* cell-size col))
((key 'set-y!) (+ (* row cell-size) maze-offset-y))
(cell-set! row col 3)
(remove-coin! row col))
(loop (+ attempts 1)))))))
;sleutel tekenen
(define (draw-key!)
(place-key-at-random-position!))
(draw-key!)
;sleutel verwijderen en aanduiden dat de sleutel gepakt werd
(define (remove-key!)
((key-layer 'remove-drawable!) key)
((key-layer 'add-drawable!) taken-key))))