[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/pacmacs 420c485197 054/472: Implement pacman mechanics. Cl
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/pacmacs 420c485197 054/472: Implement pacman mechanics. Close #32 |
Date: |
Thu, 6 Jan 2022 21:59:12 -0500 (EST) |
branch: elpa/pacmacs
commit 420c48519737f8fd79f5f406b446ff70a68b7296
Author: rexim <reximkut@gmail.com>
Commit: rexim <reximkut@gmail.com>
Implement pacman mechanics. Close #32
---
pacman.el | 42 +++++++++++++++++++++++++++++++++++++-----
1 file changed, 37 insertions(+), 5 deletions(-)
diff --git a/pacman.el b/pacman.el
index 82ee87bbcd..47b242e4d0 100644
--- a/pacman.el
+++ b/pacman.el
@@ -46,6 +46,20 @@
(defvar pacman-board-width 10)
(defvar pacman-board-height 10)
(defvar pacman-player-state nil)
+(defvar pacman-direction-table
+ (list 'left (cons -1 0)
+ 'right (cons 1 0)
+ 'up (cons 0 -1)
+ 'down (cons 0 1)))
+(defvar pacman-direction-animation-table
+ (list 'left (pacman-load-anim "sprites/Pacman-Chomping-Left.json"
+ "sprites/Pacman-Chomping-Left.png")
+ 'right (pacman-load-anim "sprites/Pacman-Chomping-Right.json"
+ "sprites/Pacman-Chomping-Right.png")
+ 'up (pacman-load-anim "sprites/Pacman-Chomping-Up.json"
+ "sprites/Pacman-Chomping-Up.png")
+ 'down (pacman-load-anim "sprites/Pacman-Chomping-Down.json"
+ "sprites/Pacman-Chomping-Down.png")))
(setq pacman-player-state
(list :row 0
:column 0
@@ -99,13 +113,31 @@
(kill-buffer-and-window)
(kill-buffer pacman-buffer-name)))))
+(defun pacman-step-object (game-object)
+ (let* ((row (plist-get game-object :row))
+ (column (plist-get game-object :column))
+ (direction (plist-get game-object :direction))
+ (velocity (plist-get pacman-direction-table direction))
+ (new-row (+ row (cdr velocity)))
+ (new-column (+ column (car velocity))))
+ (when (and (<= 0 new-row (1- pacman-board-height))
+ (<= 0 new-column (1- pacman-board-width)))
+ (plist-put game-object :row new-row)
+ (plist-put game-object :column new-column))))
+
+
(defun pacman-tick ()
(interactive)
(with-current-buffer pacman-buffer-name
(let ((inhibit-read-only t))
- (erase-buffer)
(setq pacman-player-state
(pacman-anim-object-next-frame pacman-player-state))
+ (pacman-step-object pacman-player-state)
+ (let* ((direction (plist-get pacman-player-state :direction))
+ (animation (plist-get pacman-direction-animation-table
direction)))
+ (plist-put pacman-player-state :animation animation))
+
+ (erase-buffer)
(pacman-render-state))))
(defun pacman-render-object (anim-object)
@@ -136,19 +168,19 @@
(defun pacman-up ()
(interactive)
- )
+ (plist-put pacman-player-state :direction 'up))
(defun pacman-down ()
(interactive)
- )
+ (plist-put pacman-player-state :direction 'down))
(defun pacman-left ()
(interactive)
- )
+ (plist-put pacman-player-state :direction 'left))
(defun pacman-right ()
(interactive)
- )
+ (plist-put pacman-player-state :direction 'right))
(provide 'pacman)
- [nongnu] elpa/pacmacs 56968d5966 034/472: Require undercover in test-helpers (#27), (continued)
- [nongnu] elpa/pacmacs 56968d5966 034/472: Require undercover in test-helpers (#27), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 833e2d8de2 041/472: Add a note about the licensing to README (#28), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs cb29133875 045/472: Add UT for pacman-load-anim function, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 14e4a5a771 046/472: Mystical cookies appear! Close #15, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 39f6dbc6a3 049/472: Merge branch 'pacman-mechanics-5'. Close #5, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 4aa010be6e 051/472: Fix the Aseprite animation UTs. Close #31, ELPA Syncer, 2022/01/06
- [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 <=
- [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, 2022/01/06
- [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