emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/pacmacs d637985f0b 095/472: Fix BFS wraparound bug. Close


From: ELPA Syncer
Subject: [nongnu] elpa/pacmacs d637985f0b 095/472: Fix BFS wraparound bug. Close #73
Date: Thu, 6 Jan 2022 21:59:16 -0500 (EST)

branch: elpa/pacmacs
commit d637985f0b1dd169e66ee7c1f9f530a1379589ec
Author: rexim <reximkut@gmail.com>
Commit: rexim <reximkut@gmail.com>

    Fix BFS wraparound bug. Close #73
---
 maps/map03.txt |  7 +++++++
 maps/map04.txt |  3 +++
 pacmacs.el     | 34 +++++++++++++++++++++-------------
 3 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/maps/map03.txt b/maps/map03.txt
new file mode 100644
index 0000000000..fc3e294953
--- /dev/null
+++ b/maps/map03.txt
@@ -0,0 +1,7 @@
+######
+#    #
+# ## #
+# ## #
+# ## #
+# o  #
+######
diff --git a/maps/map04.txt b/maps/map04.txt
new file mode 100644
index 0000000000..e748cabdc7
--- /dev/null
+++ b/maps/map04.txt
@@ -0,0 +1,3 @@
+#######
+   o   
+#######
diff --git a/pacmacs.el b/pacmacs.el
index ad805c2575..8b5b8767ae 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -45,6 +45,8 @@
 (defconst pacmacs-tick-duration-ms 100)
 (defconst pacmacs-debug-output nil)
 
+(setq pacmacs-debug-output t)
+
 (defvar pacmacs-timer nil)
 
 (defvar pacmacs-board-width 10)
@@ -148,7 +150,8 @@
       (kill-buffer buffer-or-name))))
 
 (defun pacmacs--object-at-p (row column objects)
-  (member (cons row column)
+  (member (cons (mod row pacmacs-board-height)
+                (mod column pacmacs-board-width))
           (mapcar #'(lambda (object)
                       (plist-bind ((row :row)
                                    (column :column))
@@ -168,7 +171,8 @@
     (pacmacs--kill-buffer-and-its-window pacmacs-buffer-name)))
 
 (defun pacmacs--cell-tracked-p (row column)
-  (aref (aref pacmacs-track-board row) column))
+  (aref (aref pacmacs-track-board (mod row pacmacs-board-height))
+        (mod column pacmacs-board-width)))
 
 (defun pacmacs--within-of-map-p (row column)
   (and (<= 0 row (1- pacmacs-board-height))
@@ -221,22 +225,24 @@
 (defun pacmacs--filter-candidates (p)
   (let ((row (car p))
         (column (cdr p)))
-    (or (not (pacmacs--within-of-map-p row column))
-        (pacmacs--wall-at-p row column)
+    (or (pacmacs--wall-at-p row column)
         (pacmacs--cell-tracked-p row column))))
 
-(defun pacmacs--track-point (p q)
-  (let* ((p-row (car p))
-         (p-column (cdr p))
+(defun pacmacs--track-point (start end)
+  (let* ((start-row (car start))
+         (start-column (cdr start))
 
-         (q-row (car q))
-         (q-column (cdr q))
+         (end-row (car end))
+         (end-column (cdr end))
 
-         (d-row (- q-row p-row))
-         (d-column (- q-column p-column)))
-    (aset (aref pacmacs-track-board p-row) p-column
+         (d-row (- end-row start-row))
+         (d-column (- end-column start-column)))
+    ;; (insert (format "(%d, %d)\n" d-row d-column))
+    (aset (aref pacmacs-track-board (mod start-row pacmacs-board-height))
+          (mod start-column pacmacs-board-width)
           (cdr
-           (assoc (cons d-column d-row)
+           (assoc (cons d-column
+                        d-row)
                   pacmacs-inversed-direction-table)))))
 
 (defun pacmacs--recalc-track-board ()
@@ -249,6 +255,8 @@
       pacmacs-player-state
     (let ((wave (list (cons player-row player-column))))
       (while (not (null wave))
+        ;; (pacmacs-render-track-board)
+        ;; (insert "------------------------------\n")
         (let ((next-wave nil))
           (dolist (p wave)
             (let* ((row (car p))



reply via email to

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