first commit
This commit is contained in:
70
pacman-project/game-logic.rkt
Normal file
70
pacman-project/game-logic.rkt
Normal file
@@ -0,0 +1,70 @@
|
||||
#lang r7rs
|
||||
|
||||
; Game-logic ;
|
||||
|
||||
|
||||
(define-library (pacman-project game-logic)
|
||||
(import (scheme base)
|
||||
(pacman-project maze)
|
||||
(pacman-project pacman)
|
||||
(pacman-project coin)
|
||||
(pacman-project key)
|
||||
(pacman-project score)
|
||||
(pacman-project time-limit))
|
||||
|
||||
(export move-pacman!)
|
||||
|
||||
(begin
|
||||
|
||||
(define key-taken? #f)
|
||||
|
||||
;muntje opeten
|
||||
(define (eat-coin! row col)
|
||||
(cell-set! row col 2)
|
||||
(remove-coin! row col))
|
||||
|
||||
;sleutel oppakem
|
||||
(define (take-key! row col)
|
||||
(cell-set! row col 2)
|
||||
(set! key-taken? #t)
|
||||
(remove-key!))
|
||||
|
||||
;beweegt pacman en checkt voor muren, muntjes, sleutels etc.
|
||||
(define (move-pacman! x y)
|
||||
(when (not (time-up?))
|
||||
(let* ((cur-x (pacman-x))
|
||||
(cur-y (pacman-y))
|
||||
(next-x (+ cur-x x))
|
||||
(next-y (+ cur-y y))
|
||||
(grid-col (quotient next-x cell-size))
|
||||
(grid-row (quotient (- next-y maze-offset-y) cell-size)))
|
||||
|
||||
(cond
|
||||
;van links naar rechts
|
||||
((< grid-col 0)
|
||||
(set-pacman-x! (* (- maze-cols 1) cell-size))
|
||||
(set-pacman-y! next-y))
|
||||
|
||||
;van rechts naar links
|
||||
((>= grid-col maze-cols)
|
||||
(set-pacman-x! 0)
|
||||
(set-pacman-y! next-y))
|
||||
|
||||
;als het een deur is openen we de deur
|
||||
((cell-door? grid-row grid-col)
|
||||
(when key-taken?
|
||||
(remove-door! grid-row grid-col)))
|
||||
|
||||
;normale beweging
|
||||
(else
|
||||
(when (not (cell-wall? grid-row grid-col))
|
||||
(set-pacman-x! next-x)
|
||||
(set-pacman-y! next-y)
|
||||
;om te zien wat er op de volgende pos staat
|
||||
(cond
|
||||
((cell-key? grid-row grid-col)
|
||||
(take-key! grid-row grid-col))
|
||||
((cell-coin? grid-row grid-col)
|
||||
(eat-coin! grid-row grid-col)
|
||||
(update-time-limit!)
|
||||
(update-score!)))))))))))
|
||||
Reference in New Issue
Block a user