]> git.jsancho.org Git - gacela.git/commitdiff
(no commit message)
authorjsancho <devnull@localhost>
Thu, 11 Aug 2011 19:18:27 +0000 (19:18 +0000)
committerjsancho <devnull@localhost>
Thu, 11 Aug 2011 19:18:27 +0000 (19:18 +0000)
gacela_tetris.lisp [deleted file]
gacela_tetris.scm

diff --git a/gacela_tetris.lisp b/gacela_tetris.lisp
deleted file mode 100644 (file)
index 5435e96..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-(in-package :gacela)
-
-(set-game-properties :title "Gacela Tetris" :fps 15)
-
-(defun tetramine-i ()
-  (let ((color '(1 0 0)))
-    `((,color ,color ,color ,color))))
-
-(defun tetramine-j ()
-  (let ((color '(1 0.5 0)))
-    `((,color ,color ,color)
-      (nil nil ,color))))
-
-(defun tetramine-l ()
-  (let ((color '(1 0 1)))
-    `((nil nil ,color)
-      (,color ,color ,color))))
-
-(defun tetramine-o ()
-  (let ((color '(0 0 1)))
-    `((,color ,color)
-      (,color ,color))))
-
-(defun tetramine-s ()
-  (let ((color '(0 1 0)))
-    `((nil ,color ,color)
-      (,color ,color nil))))
-
-(defun tetramine-t ()
-  (let ((color '(0.5 0 0)))
-    `((,color ,color ,color)
-      (nil ,color nil))))
-
-(defun tetramine-z ()
-  (let ((color '(0 1 1)))
-    `((,color ,color nil)
-      (nil ,color ,color))))
-
-(defun random-tetramine ()
-  (let ((n (random 7)))
-    (cond ((= n 0) (tetramine-i))
-         ((= n 1) (tetramine-j))
-         ((= n 2) (tetramine-l))
-         ((= n 3) (tetramine-o))
-         ((= n 4) (tetramine-s))
-         ((= n 5) (tetramine-t))
-         ((= n 6) (tetramine-z)))))
-
-(defun draw-cell (cell)
-  (cond ((null cell) nil)
-       (t (with-color cell (draw-square :size 20)))))
-
-(defun draw-row (row)
-  (mapcar (lambda (cell) (draw-cell cell) (translate 23 0)) row))
-
-(defun draw-grid (grid)
-  (mapcar (lambda (row) (draw-row row) (translate (* -23 (length row)) -23)) grid))
-
-(defun join-rows (source destination &optional (offset 0))
-  (cond ((null source) destination)
-       ((null destination) nil)
-       ((> offset 0) (cons (car destination) (join-rows source (cdr destination) (- offset 1))))
-       (t (cons (or (car source) (car destination))
-                (join-rows (cdr source) (cdr destination) offset)))))
-
-(defun join-grids (source destination &optional (x 0) (y 0))
-  (cond ((null source) destination)
-       ((null destination) nil)
-       ((> y 0) (cons (car destination)
-                      (join-grids source (cdr destination) x (- y 1))))
-       (t (cons (join-rows (car source) (car destination) x)
-                (join-grids (cdr source) (cdr destination) x y)))))
-
-(defun collide-rows (row1 row2 &optional (offset 0))
-  (cond ((not (or row1 row2)) nil)
-       ((> offset 0) (collide-rows row1 (cdr row2) (- offset 1)))
-       (t (or (and (car row1) (car row2)) (collide-rows (cdr row1) (cdr row2))))))
-
-(defun collide-grids (grid1 grid2 &optional (x 0) (y 0))
-  (cond ((not (or grid1 grid2)) nil)
-       ((> y 0) (collide-grids grid1 (cdr grid2) x (- y 1)))
-       (t (or (collide-rows (car grid1) (car grid2) x)
-              (collide-grids (cdr grid1) (cdr grid2) x y)))))
-
-(defun rotate-tetramine (grid)
-  (labels ((rot (grid res)
-               (cond ((null grid) res)
-                     (t (rot (cdr grid) (mapcar #'cons (car grid) res))))))
-         (rot grid (make-list (length (car grid))))))
-
-(defun row-completed (row)
-  (cond ((null row) t)
-       (t (and (car row) (row-completed (cdr row))))))
-
-(defun remove-rows-completed (grid)
-  (let ((res (remove-if (lambda (x) (row-completed x)) grid)))
-    (inc-points (- (length grid) (length res)))
-    (labels ((fill (grid n)
-                  (cond ((< n 1) grid)
-                        (t (fill (cons (make-list 14) grid) (- n 1))))))
-           (fill res (- 20 (length res))))))
-
-(let ((points 0) (lines 0))
-  (defun get-points ()
-    points)
-
-  (defun get-lines ()
-    lines)
-
-  (defun inc-points (l)
-    (incf points
-         (labels ((more-lines-better (n)
-                                     (cond ((= n 0) n)
-                                           (t (+ n (more-lines-better (- n 1)))))))
-                 (* (more-lines-better l) 10)))
-    (incf lines l)))
-
-(let ((tetramine (random-tetramine)) (x 6) (y 0)
-      (next (random-tetramine))
-      (timer (make-timer))
-      (grid (make-list 20 :initial-element (make-list 14)))
-      (background (load-texture "fondo_tetris.png"))
-;      (background (load-texture "../../nehe/lesson06/data/nehe.bmp"))
-      (font (load-font "lazy.ttf" :size 20))
-      (game-over))
-
-  (defun game ()
-    (if game-over (game-over) (tetramine)))
-
-  (defun game-over ()
-    (translate -100 0)
-    (render-text "Game Over" font :size 50))
-
-  (defun tetramine ()
-    (cond ((eq (timer-state timer) 'stopped) (start-timer timer)))
-
-    (cond ((key? 'right)
-          (cond ((not (collide-grids tetramine grid (+ x 1) y))
-                 (incf x)))))
-    (cond ((key? 'left)
-          (cond ((not (collide-grids tetramine grid (- x 1) y))
-                 (decf x)))))
-    (cond ((< x 0) (setq x 0))
-         ((> (+ x (length (car tetramine))) 14) (setq x (- 14 (length (car tetramine))))))
-
-    (cond ((key-pressed? 'up)
-          (let ((t1 (rotate-tetramine tetramine)))
-            (cond ((not (collide-grids t1 grid x y))
-                   (setq tetramine t1))))))
-
-    (cond ((or (key? 'down) (> (get-time timer) 5000))
-          (cond ((or (collide-grids tetramine grid x (+ y 1))
-                     (> (+ y 1 (length tetramine)) 20))
-                 (setq grid (remove-rows-completed (join-grids tetramine grid x y)))
-                 (setq tetramine next x 6 y 0)
-                 (cond ((collide-grids tetramine grid x y) (setq game-over t)))
-                 (setq next (random-tetramine)))
-                (t (incf y) (start-timer timer)))))
-    (draw-texture background)
-    (translate -288 218)
-    (draw-grid (join-grids tetramine grid x y))
-    (translate 440 440)
-    (draw-grid next)
-    (translate -40 -100)
-    (render-text (format nil "Points: ~d" (get-points)) font)
-    (translate 0 -30)
-    (render-text (format nil "Lines: ~d" (get-lines)) font)))
-
-(let ((frame 0.0) (fps (make-timer)) (update (make-timer)))
-  (start-timer update)
-  (start-timer fps)
-  (run-game
-   (game)
-   (incf frame)
-   (cond ((> (get-time update) 1000) (print (/ frame (/ (get-time fps) 1000.0))) (start-timer update))))
-  (quit-game))
index dbda408ef28cab2c4bbcdb858080d07b71250c11..6d8a747138021d22e45f5eef4a73b7ebd5efa4c7 100644 (file)
@@ -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))
        (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)
          (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)
+                       (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)