emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 879e09b: Place apples randomly in Snake


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] master 879e09b: Place apples randomly in Snake
Date: Tue, 23 Feb 2016 09:29:15 +0000

branch: master
commit 879e09bbbce79f78db14eb32c714452efd53b268
Author: Vasilij Schneidermann <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>

    Place apples randomly in Snake
    
    * lisp/play/snake.el (snake-score): New variable (bug#21359).
    (snake-set-dot): Place the apples randomly.
---
 lisp/play/snake.el |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/lisp/play/snake.el b/lisp/play/snake.el
index 243f019..371c713 100644
--- a/lisp/play/snake.el
+++ b/lisp/play/snake.el
@@ -144,7 +144,6 @@
 (defvar snake-velocity-x 1)
 (defvar snake-velocity-y 0)
 (defvar snake-positions nil)
-(defvar snake-cycle 0)
 (defvar snake-score 0)
 (defvar snake-paused nil)
 (defvar snake-moved-p nil)
@@ -164,7 +163,6 @@ and then start moving it leftwards.")
 (make-variable-buffer-local 'snake-velocity-x)
 (make-variable-buffer-local 'snake-velocity-y)
 (make-variable-buffer-local 'snake-positions)
-(make-variable-buffer-local 'snake-cycle)
 (make-variable-buffer-local 'snake-score)
 (make-variable-buffer-local 'snake-paused)
 (make-variable-buffer-local 'snake-moved-p)
@@ -237,7 +235,6 @@ and then start moving it leftwards.")
        snake-velocity-x        snake-initial-velocity-x
        snake-velocity-y        snake-initial-velocity-y
        snake-positions         nil
-       snake-cycle             1
        snake-score             0
        snake-paused            nil
        snake-moved-p           nil
@@ -251,6 +248,14 @@ and then start moving it leftwards.")
       (cl-incf y snake-velocity-y)))
   (snake-update-score))
 
+(defun snake-set-dot ()
+  (let ((x (random snake-width))
+       (y (random snake-height)))
+    (while (not (= (gamegrid-get-cell x y) snake-blank))
+      (setq x (random snake-width))
+      (setq y (random snake-height)))
+    (gamegrid-set-cell x y snake-dot)))
+
 (defun snake-update-game (snake-buffer)
   "Called on each clock tick.
 Advances the snake one square, testing for collision.
@@ -268,23 +273,20 @@ Argument SNAKE-BUFFER is the name of the buffer."
        (cond ((= c snake-dot)
               (cl-incf snake-length)
               (cl-incf snake-score)
-              (snake-update-score))
+              (snake-update-score)
+              (snake-set-dot))
              (t
               (let* ((last-cons (nthcdr (- snake-length 2)
                                         snake-positions))
                      (tail-pos (cadr last-cons))
                      (x0 (aref tail-pos 0))
                      (y0 (aref tail-pos 1)))
-                (gamegrid-set-cell x0 y0
-                                   (if (= (% snake-cycle 5) 0)
-                                       snake-dot
-                                     snake-blank))
-                (cl-incf snake-cycle)
+                (gamegrid-set-cell x0 y0 snake-blank)
                 (setcdr last-cons nil))))
        (gamegrid-set-cell x y snake-snake)
        (setq snake-positions
              (cons (vector x y) snake-positions))
-         (setq snake-moved-p nil)))))
+       (setq snake-moved-p nil)))))
 
 (defun snake-update-velocity ()
   (unless snake-moved-p
@@ -339,6 +341,7 @@ Argument SNAKE-BUFFER is the name of the buffer."
   "Start a new game of Snake."
   (interactive)
   (snake-reset-game)
+  (snake-set-dot)
   (use-local-map snake-mode-map)
   (gamegrid-start-timer snake-tick-period 'snake-update-game))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]