[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/pacmacs 7d16738069 077/472: Implement custom map format. C
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/pacmacs 7d16738069 077/472: Implement custom map format. Close #61 |
Date: |
Thu, 6 Jan 2022 21:59:14 -0500 (EST) |
branch: elpa/pacmacs
commit 7d16738069c4abb11ae96371f45b7d1a585e0332
Author: rexim <reximkut@gmail.com>
Commit: rexim <reximkut@gmail.com>
Implement custom map format. Close #61
---
maps/map01.txt | 7 +++++++
pacman.el | 53 +++++++++++++++++++++++++++++++++++++++++++----------
2 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/maps/map01.txt b/maps/map01.txt
new file mode 100644
index 0000000000..761a725151
--- /dev/null
+++ b/maps/map01.txt
@@ -0,0 +1,7 @@
+#########
+#.......#####
+#. . #
+#. ## . ##
+#. ## . o#
+#.......####
+#########
diff --git a/pacman.el b/pacman.el
index 701b7f833e..4df9d27059 100644
--- a/pacman.el
+++ b/pacman.el
@@ -49,11 +49,11 @@
(defvar pacman-board-height 10)
(defvar pacman-player-state nil)
-(setq pacman-player-state
- (list :row 0
- :column 0
- :direction 'right
- :animation (pacman-load-anim "Red-Ghost-Right")))
+(list :row (setq pacman-player-state
+ 0
+ :column 0
+ :direction 'right
+ :animation (pacman-load-anim "Pacman-Chomping-Right")))
(defvar pacman-direction-table nil)
(setq pacman-direction-table
@@ -64,10 +64,10 @@
(defvar pacman-direction-animation-table nil)
(setq pacman-direction-animation-table
- (list 'left (pacman-load-anim "Red-Ghost-Left")
- 'right (pacman-load-anim "Red-Ghost-Right")
- 'up (pacman-load-anim "Red-Ghost-Up")
- 'down (pacman-load-anim "Red-Ghost-Down")))
+ (list 'left (pacman-load-anim "Pacman-Chomping-Left")
+ 'right (pacman-load-anim "Pacman-Chomping-Right")
+ 'up (pacman-load-anim "Pacman-Chomping-Up")
+ 'down (pacman-load-anim "Pacman-Chomping-Down")))
(defvar pacman-empty-cell nil)
(setq pacman-empty-cell
@@ -248,7 +248,7 @@
(defun pacman-down ()
(interactive)
- (plist-put pacman-player-state :direction 'down))
+ (plist-put pacman-player-state :direction 'down))
(defun pacman-left ()
(interactive)
@@ -258,6 +258,39 @@
(interactive)
(plist-put pacman-player-state :direction 'right))
+(defun pacman--file-content (filename)
+ (with-temp-buffer
+ (insert-file-contents filename)
+ (buffer-string)))
+
+(defun pacman-load-map (map-name)
+ (let* ((lines (split-string (pacman--file-content (format "maps/%s.txt"
map-name)) "\n" t))
+ (board-width (apply 'max (mapcar #'length lines)))
+ (board-height (length lines)))
+ (setq pacman-board-width board-width)
+ (setq pacman-board-height board-height)
+
+ (setq pacman-board (pacman-init-board pacman-board-width
+ pacman-board-height))
+
+ (setq pacman-wall-cells nil)
+ (setq pacman-pills nil)
+
+ (loop
+ for line being the element of lines using (index row)
+ do (loop for x being the element of line using (index column)
+ do (cond ((char-equal x ?#)
+ (add-to-list 'pacman-wall-cells
(pacman--make-wall-cell row column)))
+
+ ((char-equal x ?.)
+ (add-to-list 'pacman-pills (pacman--make-pill row
column)))
+
+ ((char-equal x ?o)
+ (plist-put pacman-player-state :row row)
+ (plist-put pacman-player-state :column column)))))))
+
+(pacman-load-map "map01")
+
(provide 'pacman)
;;; pacman.el ends here
- [nongnu] elpa/pacmacs 48ecc5cee9 159/472: Don't fail if the score file doesn't exist, (continued)
- [nongnu] elpa/pacmacs 48ecc5cee9 159/472: Don't fail if the score file doesn't exist, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 10b8a997dd 037/472: More precise instructions in README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 7e04991d4e 030/472: Add UT for pacman-compare-aseprite-frames function (#22), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 327332d32d 036/472: Update README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 68f876d0ba 043/472: Merge pull request #29 from rexim/license-28, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 298b950310 062/472: Rename pacman-resources to pacman-image (#51), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs e9703e9ba2 061/472: Rename function for loading images (#51), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 0a65793037 071/472: Use plist-bind for pacman-anim-object-next-frame (#54), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 7f706e2159 074/472: Add UTs for plist-map (#54), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 69d47fbb9a 075/472: Merge branch 'pacman-utils-ut-54'. Close #54, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 7d16738069 077/472: Implement custom map format. Close #61,
ELPA Syncer <=
- [nongnu] elpa/pacmacs 6d1831c746 081/472: Implement ghost mechanics. Close #62, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 427b4f823e 088/472: Add edebug specs for plist-bind macro (#68), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 1ed7f14e30 099/472: UTs for pacmacs--init-board-test (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs a802074eea 109/472: Add set/get functions for board (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs de66c1ce17 112/472: Refactor out pacmacs--step-point (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs b0561eb59f 111/472: Refactor pacmacs--cell-tracked-p (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 317f9b85b7 114/472: Refactor pacmacs--track-point (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 5233bac0c5 105/472: UT for pacmacs--put-object-test (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs d2c449734e 124/472: Merge branch 'pacman-death-69'. Close #69, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 1ed9c057cc 127/472: Add padding above the lives, ELPA Syncer, 2022/01/06