[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/pacmacs 28fc537f40 084/472: Multiple ghost support. Close
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/pacmacs 28fc537f40 084/472: Multiple ghost support. Close #64 |
Date: |
Thu, 6 Jan 2022 21:59:15 -0500 (EST) |
branch: elpa/pacmacs
commit 28fc537f400829e7835f4730c12dcf024448afc5
Author: rexim <reximkut@gmail.com>
Commit: rexim <reximkut@gmail.com>
Multiple ghost support. Close #64
---
maps/map01.txt | 2 +-
pacmacs.el | 121 ++++++++++++++++++++++++++-------------------------------
2 files changed, 56 insertions(+), 67 deletions(-)
diff --git a/maps/map01.txt b/maps/map01.txt
index 674169eee4..9cf8388efe 100644
--- a/maps/map01.txt
+++ b/maps/map01.txt
@@ -2,6 +2,6 @@
#.......#####
#. . #
#.g## . ##
-#. ## . o#
+#. ##g . o#
#.......####
#########
diff --git a/pacmacs.el b/pacmacs.el
index 5096a483d0..2f2a37d945 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -43,12 +43,13 @@
(defconst pacmacs-buffer-name "*Pacmacs*")
(defconst pacmacs-tick-duration-ms 100)
+(defconst pacmacs-debug-output nil)
(defvar pacmacs-timer nil)
-(defvar pacmacs-counter 0)
(defvar pacmacs-board-width 10)
(defvar pacmacs-board-height 10)
+(defvar pacmacs-score 0)
(defvar pacmacs-direction-table nil)
(setq pacmacs-direction-table
@@ -64,19 +65,6 @@
(cons (cons 0 -1) 'up)
(cons (cons 0 1) 'down)))
-(defvar pacmacs-player-state nil)
-(setq pacmacs-player-state
- (list :row 0
- :column 0
- :direction 'right
- :current-animation (pacmacs-load-anim "Pacman-Chomping-Right")
- :direction-animations (list 'left (pacmacs-load-anim
"Pacman-Chomping-Left")
- 'right (pacmacs-load-anim
"Pacman-Chomping-Right")
- 'up (pacmacs-load-anim
"Pacman-Chomping-Up")
- 'down (pacmacs-load-anim
"Pacman-Chomping-Down"))
- :speed 0
- :speed-counter 0))
-
(defvar pacmacs-ghost-state nil)
(setq pacmacs-ghost-state
(list :row 1
@@ -90,51 +78,20 @@
:speed 1
:speed-counter 0))
+(defvar pacmacs-ghosts nil)
+(defvar pacmacs-wall-cells nil)
+(defvar pacmacs-pills nil)
+
(defvar pacmacs-empty-cell nil)
(setq pacmacs-empty-cell
(list :current-animation
- (pacmacs-make-anim '((0 0 40 40))
- (pacmacs-create-transparent-block 40 40))))
+ (pacmacs-make-anim (list (pacmacs-make-frame '(0 0 40 40) 100))
+ (pacmacs-create-transparent-block 40 40))))
-(defvar pacmacs-score 0)
-
-(defun pacmacs--make-wall-cell (row column)
- (list :current-animation (pacmacs-make-anim '((0 0 40 40))
- (pacmacs-create-color-block 40 40 "red"))
- :row row
- :column column))
-(defvar pacmacs-wall-cells nil)
-(setq pacmacs-wall-cells
- (mapcar (lambda (n)
- (pacmacs--make-wall-cell n n))
- (number-sequence 1 9)))
-
-(defun pacmacs--make-pill (row column)
- (list :current-animation (pacmacs-load-anim "Pill")
- :row row
- :column column))
-
-(defvar pacmacs-pills nil)
-(setq pacmacs-pills
- (mapcar (lambda (n)
- (pacmacs--make-pill n (1+ n)))
- (number-sequence 1 8)))
-
-(defun pacmacs-init-board (width height)
- (let ((board (make-vector height nil)))
- (dotimes (row height)
- (aset board row (make-vector width nil)))
- board))
(defvar pacmacs-board nil)
-(setq pacmacs-board (pacmacs-init-board pacmacs-board-width
- pacmacs-board-height))
-
-
(defvar pacmacs-track-board nil)
-(setq pacmacs-track-board (pacmacs-init-board pacmacs-board-width
- pacmacs-board-height))
(define-derived-mode pacmacs-mode special-mode "pacmacs-mode"
(define-key pacmacs-mode-map (kbd "<up>") 'pacmacs-up)
@@ -149,6 +106,7 @@
(interactive)
(switch-to-buffer-other-window pacmacs-buffer-name)
(pacmacs-mode)
+ (pacmacs-load-map "map01")
(unless pacmacs-timer
(setq pacmacs-timer (run-at-time nil (* pacmacs-tick-duration-ms 0.001)
'pacmacs-tick))))
@@ -157,6 +115,35 @@
(cancel-timer pacmacs-timer)
(setq pacmacs-timer nil)))
+(defun pacmacs--make-wall-cell (row column)
+ (list :current-animation (pacmacs-make-anim (list (pacmacs-make-frame '(0 0
40 40) 100))
+ (pacmacs-create-color-block 40
40 "red"))
+ :row row
+ :column column))
+
+(defun pacmacs--make-pill (row column)
+ (list :current-animation (pacmacs-load-anim "Pill")
+ :row row
+ :column column))
+
+(defun pacmacs--make-ghost (row column)
+ (list :row row
+ :column column
+ :direction 'right
+ :current-animation (pacmacs-load-anim "Red-Ghost-Right")
+ :direction-animations (list 'left (pacmacs-load-anim "Red-Ghost-Left")
+ 'right (pacmacs-load-anim
"Red-Ghost-Right")
+ 'up (pacmacs-load-anim "Red-Ghost-Up")
+ 'down (pacmacs-load-anim
"Red-Ghost-Down"))
+ :speed 1
+ :speed-counter 0))
+
+(defun pacmacs-init-board (width height)
+ (let ((board (make-vector height nil)))
+ (dotimes (row height)
+ (aset board row (make-vector width nil)))
+ board))
+
(defun pacmacs--kill-buffer-and-its-window (buffer-or-name)
(let ((buffer-window (get-buffer-window buffer-or-name)))
(if (and buffer-window
@@ -222,7 +209,7 @@
(aset (aref board row) column value))))
(defun pacmacs--possible-ways (row column)
- (list (cons (1+ row) column)
+ (list (cons (1+ row) column)
(cons row (1+ column))
(cons (1- row) column)
(cons row (1- column))))
@@ -250,9 +237,9 @@
(defun pacmacs--recalc-track-board ()
(pacmacs--fill-board pacmacs-track-board
- pacmacs-board-width
- pacmacs-board-height
- nil)
+ pacmacs-board-width
+ pacmacs-board-height
+ nil)
(plist-bind ((player-row :row)
(player-column :column))
pacmacs-player-state
@@ -283,7 +270,8 @@
(with-current-buffer pacmacs-buffer-name
(let ((inhibit-read-only t))
(pacmacs-anim-object-next-frame pacmacs-player-state
pacmacs-tick-duration-ms)
- (pacmacs-anim-object-next-frame pacmacs-ghost-state
pacmacs-tick-duration-ms)
+ (dolist (ghost pacmacs-ghosts)
+ (pacmacs-anim-object-next-frame ghost pacmacs-tick-duration-ms))
(dolist (pill pacmacs-pills)
(pacmacs-anim-object-next-frame pill pacmacs-tick-duration-ms))
@@ -305,8 +293,9 @@
pacmacs-pills)))))
(pacmacs--recalc-track-board)
- (pacmacs--track-object pacmacs-ghost-state)
- (pacmacs-step-object pacmacs-ghost-state)
+ (dolist (ghost pacmacs-ghosts)
+ (pacmacs--track-object ghost)
+ (pacmacs-step-object ghost))
(erase-buffer)
(pacmacs-render-state))))
@@ -345,7 +334,8 @@
(defun pacmacs-render-state ()
(insert (format "Score: %d\n" pacmacs-score))
- (pacmacs-render-track-board)
+ (when pacmacs-debug-output
+ (pacmacs-render-track-board))
(pacmacs--fill-board pacmacs-board
pacmacs-board-width
@@ -357,7 +347,8 @@
(dolist (pill pacmacs-pills)
(pacmacs-put-object pill))
- (pacmacs-put-object pacmacs-ghost-state)
+ (dolist (ghost pacmacs-ghosts)
+ (pacmacs-put-object ghost))
(dolist (wall pacmacs-wall-cells)
(pacmacs-put-object wall))
@@ -397,12 +388,13 @@
(setq pacmacs-board-height board-height)
(setq pacmacs-board (pacmacs-init-board pacmacs-board-width
- pacmacs-board-height))
+ pacmacs-board-height))
(setq pacmacs-track-board (pacmacs-init-board pacmacs-board-width
- pacmacs-board-height))
+ pacmacs-board-height))
(setq pacmacs-wall-cells nil)
(setq pacmacs-pills nil)
+ (setq pacmacs-ghosts nil)
(loop
for line being the element of lines using (index row)
@@ -418,10 +410,7 @@
(plist-put pacmacs-player-state :column column))
((char-equal x ?g)
- (plist-put pacmacs-ghost-state :row row)
- (plist-put pacmacs-ghost-state :column column)))))))
-
-(pacmacs-load-map "map01")
+ (add-to-list 'pacmacs-ghosts (pacmacs--make-ghost row
column))))))))
(provide 'pacmacs)
- [nongnu] elpa/pacmacs 4e935a6d89 050/472: The 4th mystical cookie appears! Close #30, (continued)
- [nongnu] elpa/pacmacs 4e935a6d89 050/472: The 4th mystical cookie appears! Close #30, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs fbde339ff0 052/472: All the mystical cookies are merged into one! Close #15, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 1efc678194 053/472: Implement сonveyor rendering. Close #35, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 1414723d42 059/472: Implement wall mechanics. Close #36, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 420c485197 054/472: Implement pacman mechanics. Close #32, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs c20aa8089c 058/472: Implement plist-bind macro. Close #47, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 07e18ca1e6 067/472: Implement pills. Close #34, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs ef0cd69d99 072/472: Add copyright header to pacman-utils module, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 66f585899a 080/472: Fix pacman image UTs, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs f7b17f7cde 079/472: Set same background as foreground for color block. Close #59, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 28fc537f40 084/472: Multiple ghost support. Close #64,
ELPA Syncer <=
- [nongnu] elpa/pacmacs d637985f0b 095/472: Fix BFS wraparound bug. Close #73, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 952801d94a 098/472: UT for pacmacs--fill-board-test (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 428b994240 096/472: Remove debug output stuff, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 9614f394e7 106/472: Merge branch 'board-functions-uts-75'. Close #75, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 1e29c2f943 101/472: UTs for pacmacs--cell-tracked-p (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 0839611f42 108/472: Refactor out pacmacs--make-board function (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 8aa9d50dda 102/472: Remove pacmacs--within-of-map-p (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 7714743aa8 103/472: UTs for pacmacs--track-point (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 2c0bcf993f 107/472: Use two-argumented `<=`. Close #76, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs e5bd77740d 119/472: Fix NPEs (#74), ELPA Syncer, 2022/01/06