[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/mines 82f1a92 17/43: Refactor code
From: |
Stefan Monnier |
Subject: |
[elpa] externals/mines 82f1a92 17/43: Refactor code |
Date: |
Mon, 30 Nov 2020 18:44:15 -0500 (EST) |
branch: externals/mines
commit 82f1a92db82ddaac97bf7dfa76b98f3a6442d2dc
Author: Tino Calancha <tino.calancha@gmail.com>
Commit: Tino Calancha <tino.calancha@gmail.com>
Refactor code
* mines.el (mines--near-bombs): New defun.
(mines-set-numbers): Use it.
---
mines.el | 58 ++++++++++++++++++++++++++--------------------------------
1 file changed, 26 insertions(+), 32 deletions(-)
diff --git a/mines.el b/mines.el
index dc9f702..6771975 100644
--- a/mines.el
+++ b/mines.el
@@ -277,44 +277,38 @@ If `custom' then ask user for these numbers."
(aset mines-grid (pop numbers) t))
(setq mines-mine-positions (mines--find-pos t mines-grid))))
+(defun mines--near-bombs (i j)
+ (let ((numb 0))
+ ;; Horizontal neighbours.
+ (when (> j 0)
+ (and (aref mines-grid (mines-matrix-2-index i (1- j))) (cl-incf numb)))
+ (when (< j (1- mines-number-cols))
+ (and (aref mines-grid (mines-matrix-2-index i (1+ j))) (cl-incf numb)))
+ ;; Previous row neighbours.
+ (when (> i 0)
+ (and (aref mines-grid (mines-matrix-2-index (1- i) j)) (cl-incf numb))
+ (when (> j 0)
+ (and (aref mines-grid (mines-matrix-2-index (1- i) (1- j))) (cl-incf
numb)))
+ (when (< j (1- mines-number-cols))
+ (and (aref mines-grid (mines-matrix-2-index (1- i) (1+ j))) (cl-incf
numb))))
+ ;; Next row neighbours.
+ (when (< i (1- mines-number-rows))
+ (and (aref mines-grid (mines-matrix-2-index (1+ i) j)) (cl-incf numb))
+ (when (> j 0)
+ (and (aref mines-grid (mines-matrix-2-index (1+ i) (1- j))) (cl-incf
numb)))
+ (when (< j (1- mines-number-cols))
+ (and (aref mines-grid (mines-matrix-2-index (1+ i) (1+ j))) (cl-incf
numb))))
+ numb))
+
(defun mines-set-numbers ()
"Set numbers for cells adjacent to cells with bombs."
(let ((tmp-grid (copy-sequence mines-grid)))
(dotimes (i mines-number-rows)
(dotimes (j mines-number-cols)
- (let ((idx (mines-matrix-2-index i j))
- (numb 0))
+ (let ((idx (mines-matrix-2-index i j)))
(unless (aref mines-grid idx)
- ;; Horizontal neighbours.
- (when (> j 0)
- (let ((tmp-idx (mines-matrix-2-index i (1- j))))
- (and (aref mines-grid tmp-idx) (cl-incf numb))))
- (when (< j (1- mines-number-cols))
- (let ((tmp-idx (mines-matrix-2-index i (1+ j))))
- (and (aref mines-grid tmp-idx) (cl-incf numb))))
- ;; Previous row neighbours.
- (when (> i 0)
- (let ((tmp-idx (mines-matrix-2-index (1- i) j)))
- (and (aref mines-grid tmp-idx) (cl-incf numb)))
- (when (> j 0)
- (let ((tmp-idx (mines-matrix-2-index (1- i) (1- j))))
- (and (aref mines-grid tmp-idx) (cl-incf numb))))
- (when (< j (1- mines-number-cols))
- (let ((tmp-idx (mines-matrix-2-index (1- i) (1+ j))))
- (and (aref mines-grid tmp-idx) (cl-incf numb)))))
- ;; Next row neighbours.
- (when (< i (1- mines-number-rows))
- (let ((tmp-idx (mines-matrix-2-index (1+ i) j)))
- (and (aref mines-grid tmp-idx) (cl-incf numb)))
- (when (> j 0)
- (let ((tmp-idx (mines-matrix-2-index (1+ i) (1- j))))
- (and (aref mines-grid tmp-idx) (cl-incf numb))))
- (when (< j (1- mines-number-cols))
- (let ((tmp-idx (mines-matrix-2-index (1+ i) (1+ j))))
- (and (aref mines-grid tmp-idx) (cl-incf numb)))))
- ;; Update `mines-grid'.
- (unless (zerop numb)
- (aset tmp-grid idx numb))))))
+ (let ((numb (mines--near-bombs i j)))
+ (unless (zerop numb) (aset tmp-grid idx numb)))))))
(setq mines-grid tmp-grid)))
(defun mines-list-game-conditions ()
- [elpa] externals/mines 9a1a1a4 13/43: * README.md: Update file, (continued)
- [elpa] externals/mines 9a1a1a4 13/43: * README.md: Update file, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 0fb75df 16/43: * mines.el (mines-set-numbers): Use mines-matrix-2-index, Stefan Monnier, 2020/11/30
- [elpa] externals/mines b419959 18/43: * mines.el (mines-init): Preserve board settings after restart game, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 4d800e0 09/43: * mines.el (mines--insert): Display flags with a different face, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 4bbe9a4 14/43: * mines.el (mines-dig): Fix update of board when touch a bomb at first trial, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 5ee08ac 15/43: * mines.el (mines-mode): Initialize mode map in the body, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 7247335 20/43: * mines.el: Assign copyright to FSF, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 1cf5d85 23/43: * .travis.yml: Dont test for Emacs-24.3, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 8eaf131 27/43: * mines.el: Bump version to 1.1, Stefan Monnier, 2020/11/30
- [elpa] externals/mines b490060 39/43: * packages/mines/mines.el: Streamline mines--insert, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 82f1a92 17/43: Refactor code,
Stefan Monnier <=
- [elpa] externals/mines 5ada7d3 06/43: * Readme: Add more screenshots, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 9f7404e 07/43: Delete file, Stefan Monnier, 2020/11/30
- [elpa] externals/mines dd8b0e3 11/43: Delete screenshots, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 1efe0e0 12/43: updated screenshots, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 909152f 19/43: * mines.el (mines-dig): Update element at point after avoid gameover in 1st trial, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 7660b39 21/43: Add test suite, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 3de39fb 22/43: * README.md: Show build state, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 6e7fc5c 24/43: * mines.el: Update dependency to Emacs-24.4, Stefan Monnier, 2020/11/30
- [elpa] externals/mines 226776a 25/43: * mines: Fix compilation warnings, Stefan Monnier, 2020/11/30
- [elpa] externals/mines abc8c9d 26/43: Move game documentation into `mines-mode' docstring, Stefan Monnier, 2020/11/30