53 lines
1.5 KiB
Racket
53 lines
1.5 KiB
Racket
#lang r7rs
|
|
|
|
; Keyboard-handler ;
|
|
|
|
|
|
(define-library (pacman-project keyboard-handler)
|
|
(import (scheme base)
|
|
(scheme write)
|
|
(pacman-project screen)
|
|
(pacman-project maze)
|
|
(pacman-project pacman)
|
|
(pacman-project game-logic)
|
|
(pacman-project pause-menu)
|
|
(pacman-project main-loop))
|
|
|
|
(export start-keyboard-handler!)
|
|
|
|
(begin
|
|
|
|
;toetsen te beheren
|
|
(define (handle-keyboard! state key)
|
|
(when (eq? state 'pressed)
|
|
(cond
|
|
((eq? key 'escape)
|
|
(if (not (paused?))
|
|
(begin
|
|
(set-paused! #t)
|
|
(stop-main-loop!)
|
|
(draw-pause-menu!))
|
|
(begin
|
|
(remove-pause-menu!)
|
|
(set-paused! #f)
|
|
(start-main-loop!))))
|
|
((not (paused?))
|
|
(let ((cell cell-size))
|
|
(cond
|
|
((eq? key 'right)
|
|
(move-pacman! cell 0)
|
|
(rotate-pacman! 'right))
|
|
((eq? key 'left)
|
|
(move-pacman! (- cell) 0)
|
|
(rotate-pacman! 'left))
|
|
((eq? key 'up)
|
|
(move-pacman! 0 (- cell))
|
|
(rotate-pacman! 'up))
|
|
((eq? key 'down)
|
|
(move-pacman! 0 cell)
|
|
(rotate-pacman! 'down))))))))
|
|
|
|
;zodat de keyboard geconnecteert is met het spelscherm
|
|
(define (start-keyboard-handler!)
|
|
((screen 'set-key-callback!) handle-keyboard!))))
|