first commit
This commit is contained in:
63
pacman-project/time-limit.rkt
Normal file
63
pacman-project/time-limit.rkt
Normal file
@@ -0,0 +1,63 @@
|
||||
#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))))
|
||||
Reference in New Issue
Block a user