Files
Pacman-Project/pacman-project/time-limit.rkt
2026-03-23 10:28:54 +01:00

64 lines
2.0 KiB
Racket

#lang r7rs
; Time limit ADT ;
(define-library (pacman-project time-limit)
(import (scheme base)
(pp1 graphics)
(pacman-project screen))
(export draw-time-limit!
decrease-time-limit!
update-time-limit!
time-up?)
(begin
(define time-remaining 60) ;1 min = 60 seconden
(define time-since-last-tick 0)
(define time-layer (make-new-layer!))
(define time-tile (make-tile screen-width screen-height))
((time-layer 'add-drawable!) time-tile)
;omn de tijdslimiet mooi op het scherm te kunnen krijgen
(define (format-time seconds)
(let* ((minutes (quotient seconds 60)) ;om het aantal minuten te krijgen
(seconds (remainder seconds 60)) ;om het aantal seconden te krijgen
(min-str (number->string minutes))
(sec-str (number->string seconds)))
(string-append min-str
":"
(if (< seconds 10)
(string-append "0" sec-str) ;om .. : 0.. te krijgen
sec-str)))) ;anders gwn tekenen
;teken de remaning time op het scherm
(define (draw-time-limit!)
((time-tile 'draw-text!) "Time remaining:" 35 710 300 "white")
((time-tile 'draw-rectangle!) 670 0 24 screen-height "white")
((time-tile 'draw-text!)
(format-time time-remaining) 40 800 400 "white"))
;tijd verminderdt met 1 seconde
(define (decrease-time-limit! ms)
(set! time-since-last-tick (+ time-since-last-tick ms))
(when (>= time-since-last-tick 1000)
(set! time-since-last-tick 0)
(when (> time-remaining 0)
(set! time-remaining (- time-remaining 1))
((time-tile 'clear!))
(draw-time-limit!))))
;tijd verhogen met 1 seconde wanneer pacman een muntje opeet
(define (update-time-limit!)
(set! time-remaining (+ time-remaining 1))
((time-tile 'clear!))
(draw-time-limit!))
(define (time-up?)
(= time-remaining 0))))