X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela_tetris.scm;h=6d8a747138021d22e45f5eef4a73b7ebd5efa4c7;hb=1a4ce81055f082546472c22a03c71cf7d35b96e6;hp=b8c3b57f75ccd1030e853bfaf7dd2246f1bd4686;hpb=afd5b9c3d8e3e5ce81893771c7cac53f6469aa07;p=gacela.git diff --git a/gacela_tetris.scm b/gacela_tetris.scm index b8c3b57..6d8a747 100644 --- a/gacela_tetris.scm +++ b/gacela_tetris.scm @@ -45,8 +45,8 @@ ((= n 6) (tetramine-z))))) (define (draw-cell cell) - (cond ((null? cell) #f) - (else (with-color cell (draw-square #:size 20))))) + (cond ((and cell (not (null? cell))) + (with-color cell (draw-square #:size 20))))) (define (draw-row row) (for-each (lambda (cell) (draw-cell cell) (translate 23 0)) row)) @@ -91,11 +91,11 @@ (else (and (car row) (row-completed (cdr row)))))) (define (remove-rows-completed grid) - (let ((res (remove-if (lambda (x) (row-completed x)) grid))) - (inc-points (- (length grid) (length res))) + (let ((res (filter (lambda (x) (not (row-completed x))) grid))) (define (fill grid n) (cond ((< n 1) grid) (else (fill (cons (make-list 14) grid) (- n 1))))) + (inc-points (- (length grid) (length res))) (fill res (- 20 (length res))))) (define get-points #f) @@ -120,7 +120,7 @@ (set! lines (+ lines l))))) (define game #f) -(define game-over #f) +(define display-game-over #f) (define tetramine #f) (let ((current-tetramine (random-tetramine)) (x 6) (y 0) @@ -133,16 +133,16 @@ (set! game (lambda () - (if game-over (game-over) (tetramine)))) + (if game-over (display-game-over) (tetramine)))) - (set! game-over + (set! display-game-over (lambda () (translate -100 0) (render-text "Game Over" font #:size 50))) (set! tetramine (lambda () - (cond ((eq? (timer-state timer) 'stopped) (start-timer timer))) + (cond ((eq? (get-state timer) 'stopped) (start-timer timer))) (cond ((key? 'right) (cond ((not (collide-grids current-tetramine grid (+ x 1) y)) @@ -161,11 +161,15 @@ (cond ((or (key? 'down) (> (get-time timer) 5000)) (cond ((or (collide-grids current-tetramine grid x (+ y 1)) (> (+ y 1 (length current-tetramine)) 20)) + (display "eo") (newline) (set! grid (remove-rows-completed (join-grids current-tetramine grid x y))) - (set! current-tetramine next x 6 y 0) - (cond ((collide-grids current-tetramine grid x y) (set! game-over t))) + (set! current-tetramine next) + (set! x 6) + (set! y 0) + (cond ((collide-grids current-tetramine grid x y) (set! game-over #t))) (set! next (random-tetramine))) (else + (display "eo2") (newline) (set! y (+ y 1)) (start-timer timer))))) (draw-texture background) @@ -174,9 +178,9 @@ (translate 440 440) (draw-grid next) (translate -40 -100) - (render-text (format nil "Points: ~d" (get-points)) font) + (render-text (format #f "Points: ~a" (get-points)) font) (translate 0 -30) - (render-text (format nil "Lines: ~d" (get-lines)) font)))) + (render-text (format #f "Lines: ~a" (get-lines)) font)))) (define (run-gacela-tetris) (let ((frame 0.0) (fps (make-timer)) (update (make-timer))) @@ -188,5 +192,4 @@ (cond ((> (get-time update) 1000) (display (/ frame (/ (get-time fps) 1000.0))) (newline) - (start-timer update)))) - (quit-game))) + (start-timer update))))))