pac-man-phaser 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +61 -0
  2. package/assets/spritesheet.png +0 -0
  3. package/dist/game/_scenes/game-over-scene.d.ts +9 -0
  4. package/dist/game/_scenes/game-over-scene.d.ts.map +1 -0
  5. package/dist/game/_scenes/game-over-scene.js +59 -0
  6. package/dist/game/_scenes/game-over-scene.js.map +1 -0
  7. package/dist/game/_scenes/pac-man-scene.d.ts +14 -0
  8. package/dist/game/_scenes/pac-man-scene.d.ts.map +1 -0
  9. package/dist/game/_scenes/pac-man-scene.js +148 -0
  10. package/dist/game/_scenes/pac-man-scene.js.map +1 -0
  11. package/dist/game/_scenes/pause-scene.d.ts +5 -0
  12. package/dist/game/_scenes/pause-scene.d.ts.map +1 -0
  13. package/dist/game/_scenes/pause-scene.js +28 -0
  14. package/dist/game/_scenes/pause-scene.js.map +1 -0
  15. package/dist/game/constants.d.ts +19 -0
  16. package/dist/game/constants.d.ts.map +1 -0
  17. package/dist/game/constants.js +27 -0
  18. package/dist/game/constants.js.map +1 -0
  19. package/dist/game/sprites/abstracts/action-item.d.ts +5 -0
  20. package/dist/game/sprites/abstracts/action-item.d.ts.map +1 -0
  21. package/dist/game/sprites/abstracts/action-item.js +4 -0
  22. package/dist/game/sprites/abstracts/action-item.js.map +1 -0
  23. package/dist/game/sprites/abstracts/item.d.ts +6 -0
  24. package/dist/game/sprites/abstracts/item.d.ts.map +1 -0
  25. package/dist/game/sprites/abstracts/item.js +12 -0
  26. package/dist/game/sprites/abstracts/item.js.map +1 -0
  27. package/dist/game/sprites/characters/character.d.ts +20 -0
  28. package/dist/game/sprites/characters/character.d.ts.map +1 -0
  29. package/dist/game/sprites/characters/character.js +125 -0
  30. package/dist/game/sprites/characters/character.js.map +1 -0
  31. package/dist/game/sprites/ghosts/blinky.d.ts +11 -0
  32. package/dist/game/sprites/ghosts/blinky.d.ts.map +1 -0
  33. package/dist/game/sprites/ghosts/blinky.js +26 -0
  34. package/dist/game/sprites/ghosts/blinky.js.map +1 -0
  35. package/dist/game/sprites/ghosts/clyde.d.ts +10 -0
  36. package/dist/game/sprites/ghosts/clyde.d.ts.map +1 -0
  37. package/dist/game/sprites/ghosts/clyde.js +31 -0
  38. package/dist/game/sprites/ghosts/clyde.js.map +1 -0
  39. package/dist/game/sprites/ghosts/ghost.d.ts +48 -0
  40. package/dist/game/sprites/ghosts/ghost.d.ts.map +1 -0
  41. package/dist/game/sprites/ghosts/ghost.js +323 -0
  42. package/dist/game/sprites/ghosts/ghost.js.map +1 -0
  43. package/dist/game/sprites/ghosts/inky.d.ts +11 -0
  44. package/dist/game/sprites/ghosts/inky.d.ts.map +1 -0
  45. package/dist/game/sprites/ghosts/inky.js +50 -0
  46. package/dist/game/sprites/ghosts/inky.js.map +1 -0
  47. package/dist/game/sprites/ghosts/pinky.d.ts +10 -0
  48. package/dist/game/sprites/ghosts/pinky.d.ts.map +1 -0
  49. package/dist/game/sprites/ghosts/pinky.js +42 -0
  50. package/dist/game/sprites/ghosts/pinky.js.map +1 -0
  51. package/dist/game/sprites/pac-man.d.ts +17 -0
  52. package/dist/game/sprites/pac-man.d.ts.map +1 -0
  53. package/dist/game/sprites/pac-man.js +264 -0
  54. package/dist/game/sprites/pac-man.js.map +1 -0
  55. package/dist/game/sprites/pellet.d.ts +7 -0
  56. package/dist/game/sprites/pellet.d.ts.map +1 -0
  57. package/dist/game/sprites/pellet.js +15 -0
  58. package/dist/game/sprites/pellet.js.map +1 -0
  59. package/dist/game/sprites/super-pellet.d.ts +13 -0
  60. package/dist/game/sprites/super-pellet.d.ts.map +1 -0
  61. package/dist/game/sprites/super-pellet.js +67 -0
  62. package/dist/game/sprites/super-pellet.js.map +1 -0
  63. package/dist/game/sprites/wall.d.ts +5 -0
  64. package/dist/game/sprites/wall.d.ts.map +1 -0
  65. package/dist/game/sprites/wall.js +16 -0
  66. package/dist/game/sprites/wall.js.map +1 -0
  67. package/dist/game/ui/score-display.d.ts +7 -0
  68. package/dist/game/ui/score-display.d.ts.map +1 -0
  69. package/dist/game/ui/score-display.js +19 -0
  70. package/dist/game/ui/score-display.js.map +1 -0
  71. package/dist/index.d.ts +3 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +3 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/pac-man.d.ts +2 -0
  76. package/dist/pac-man.d.ts.map +1 -0
  77. package/dist/pac-man.js +19 -0
  78. package/dist/pac-man.js.map +1 -0
  79. package/package.json +73 -0
@@ -0,0 +1,264 @@
1
+ import { directions, PAC_MAN_SPEED, PAC_MAN_SPEED_EATING, PAC_MAN_SPEED_TUNNEL, } from '../constants';
2
+ import { Character } from './characters/character';
3
+ export class Pacman extends Character {
4
+ constructor(scene, gameMap) {
5
+ const x = 14 * 32;
6
+ const y = 17 * 32 + 16;
7
+ const texMap = {
8
+ [directions.LEFT]: 'pacman-left',
9
+ [directions.RIGHT]: 'pacman-right',
10
+ [directions.UP]: 'pacman-up',
11
+ [directions.DOWN]: 'pacman-down',
12
+ };
13
+ super(scene, gameMap, x, y, texMap, 'spritesheet', 'pacman-whole');
14
+ this.nextDir = -1;
15
+ this.eatCoords = null;
16
+ this.speed = PAC_MAN_SPEED;
17
+ this.hasMoved = false;
18
+ if (scene.input.keyboard) {
19
+ this.setEventListeners(scene.input.keyboard);
20
+ }
21
+ }
22
+ handleDeath() {
23
+ this.setVelocity(0, 0);
24
+ this.anims.play('pacman-death', false);
25
+ const animDuration = (11 / 8) * 1000; // 10 frames at 8fps = 1.25 seconds
26
+ this.scene.time.delayedCall(animDuration, () => {
27
+ this.scene.events.emit('game-over');
28
+ });
29
+ }
30
+ update() {
31
+ // Game starts
32
+ if (this.nextDir !== -1 && !this.hasMoved) {
33
+ this.changeDirection(this.nextDir);
34
+ this.nextDir = -1;
35
+ this.hasMoved = true;
36
+ }
37
+ super.update();
38
+ }
39
+ eatPellet(x, y) {
40
+ this.eatCoords = `${x},${y}`;
41
+ }
42
+ onCenter(cell) {
43
+ const key = `${cell.x},${cell.y}`;
44
+ if (this.eatCoords === key) {
45
+ this.speed = PAC_MAN_SPEED_EATING;
46
+ this.changeDirection(this.direction); // Refresh velocity
47
+ }
48
+ else if (this.gameMap[cell.y]?.[cell.x]?.type === 'teleporter') {
49
+ this.speed = PAC_MAN_SPEED_TUNNEL;
50
+ this.changeDirection(this.direction); // Refresh velocity
51
+ }
52
+ else {
53
+ this.eatCoords = null;
54
+ this.speed = PAC_MAN_SPEED;
55
+ this.changeDirection(this.direction); // Refresh velocity
56
+ }
57
+ // Change direction if possible
58
+ if (this.nextDir !== -1 && this.canMove(cell, this.nextDir)) {
59
+ this.changeDirection(this.nextDir);
60
+ this.nextDir = -1;
61
+ }
62
+ // Stop if can't continue in current direction
63
+ else if (!this.canMove(cell, this.direction)) {
64
+ this.setVelocity(0, 0);
65
+ this.anims.stop();
66
+ }
67
+ }
68
+ setEventListeners(input) {
69
+ const left = () => {
70
+ this.nextDir = directions.LEFT;
71
+ };
72
+ const right = () => {
73
+ this.nextDir = directions.RIGHT;
74
+ };
75
+ const up = () => {
76
+ this.nextDir = directions.UP;
77
+ };
78
+ const down = () => {
79
+ this.nextDir = directions.DOWN;
80
+ };
81
+ input.on('keydown-LEFT', left);
82
+ input.on('keydown-A', left);
83
+ input.on('keydown-RIGHT', right);
84
+ input.on('keydown-D', right);
85
+ input.on('keydown-UP', up);
86
+ input.on('keydown-W', up);
87
+ input.on('keydown-DOWN', down);
88
+ input.on('keydown-S', down);
89
+ }
90
+ static loadTextures(textures) {
91
+ const tex = textures.get('spritesheet');
92
+ const pacManSprites = [
93
+ {
94
+ key: 'pacman-left-small',
95
+ xPos: 0,
96
+ yPos: 0,
97
+ },
98
+ {
99
+ key: 'pacman-left-large',
100
+ xPos: 0,
101
+ yPos: 2,
102
+ },
103
+ {
104
+ key: 'pacman-right-small',
105
+ xPos: 2,
106
+ yPos: 0,
107
+ },
108
+ {
109
+ key: 'pacman-right-large',
110
+ xPos: 2,
111
+ yPos: 2,
112
+ },
113
+ {
114
+ key: 'pacman-down-small',
115
+ xPos: 4,
116
+ yPos: 0,
117
+ },
118
+ {
119
+ key: 'pacman-down-large',
120
+ xPos: 4,
121
+ yPos: 2,
122
+ },
123
+ {
124
+ key: 'pacman-up-small',
125
+ xPos: 6,
126
+ yPos: 0,
127
+ },
128
+ {
129
+ key: 'pacman-up-large',
130
+ xPos: 6,
131
+ yPos: 2,
132
+ },
133
+ {
134
+ key: 'pacman-whole',
135
+ xPos: 8,
136
+ yPos: 0,
137
+ },
138
+ {
139
+ key: 'pacman-dead-1',
140
+ xPos: 0,
141
+ yPos: 12,
142
+ },
143
+ {
144
+ key: 'pacman-dead-2',
145
+ xPos: 2,
146
+ yPos: 12,
147
+ },
148
+ {
149
+ key: 'pacman-dead-3',
150
+ xPos: 4,
151
+ yPos: 12,
152
+ },
153
+ {
154
+ key: 'pacman-dead-4',
155
+ xPos: 6,
156
+ yPos: 12,
157
+ },
158
+ {
159
+ key: 'pacman-dead-5',
160
+ xPos: 8,
161
+ yPos: 12,
162
+ },
163
+ {
164
+ key: 'pacman-dead-6',
165
+ xPos: 10,
166
+ yPos: 12,
167
+ },
168
+ {
169
+ key: 'pacman-dead-7',
170
+ xPos: 12,
171
+ yPos: 12,
172
+ },
173
+ {
174
+ key: 'pacman-dead-8',
175
+ xPos: 14,
176
+ yPos: 12,
177
+ },
178
+ {
179
+ key: 'pacman-dead-9',
180
+ xPos: 16,
181
+ yPos: 12,
182
+ },
183
+ {
184
+ key: 'pacman-dead-10',
185
+ xPos: 18,
186
+ yPos: 12,
187
+ },
188
+ {
189
+ key: 'pacman-dead-11',
190
+ xPos: 20,
191
+ yPos: 12,
192
+ },
193
+ ];
194
+ for (let i = 0; i < pacManSprites.length; i++) {
195
+ const { key, xPos, yPos } = pacManSprites[i];
196
+ tex.add(key, 0, xPos * 16, yPos * 16, 32, 32);
197
+ }
198
+ }
199
+ static loadAnimations(anims) {
200
+ anims.create({
201
+ key: 'pacman-left',
202
+ frames: [
203
+ { key: 'spritesheet', frame: 'pacman-left-small' },
204
+ { key: 'spritesheet', frame: 'pacman-left-large' },
205
+ { key: 'spritesheet', frame: 'pacman-left-small' },
206
+ { key: 'spritesheet', frame: 'pacman-whole' },
207
+ ],
208
+ repeat: -1,
209
+ frameRate: 16,
210
+ });
211
+ anims.create({
212
+ key: 'pacman-right',
213
+ frames: [
214
+ { key: 'spritesheet', frame: 'pacman-right-small' },
215
+ { key: 'spritesheet', frame: 'pacman-right-large' },
216
+ { key: 'spritesheet', frame: 'pacman-right-small' },
217
+ { key: 'spritesheet', frame: 'pacman-whole' },
218
+ ],
219
+ repeat: -1,
220
+ frameRate: 16,
221
+ });
222
+ anims.create({
223
+ key: 'pacman-down',
224
+ frames: [
225
+ { key: 'spritesheet', frame: 'pacman-down-small' },
226
+ { key: 'spritesheet', frame: 'pacman-down-large' },
227
+ { key: 'spritesheet', frame: 'pacman-down-small' },
228
+ { key: 'spritesheet', frame: 'pacman-whole' },
229
+ ],
230
+ repeat: -1,
231
+ frameRate: 16,
232
+ });
233
+ anims.create({
234
+ key: 'pacman-up',
235
+ frames: [
236
+ { key: 'spritesheet', frame: 'pacman-up-small' },
237
+ { key: 'spritesheet', frame: 'pacman-up-large' },
238
+ { key: 'spritesheet', frame: 'pacman-up-small' },
239
+ { key: 'spritesheet', frame: 'pacman-whole' },
240
+ ],
241
+ repeat: -1,
242
+ frameRate: 16,
243
+ });
244
+ anims.create({
245
+ key: 'pacman-death',
246
+ frames: [
247
+ { key: 'spritesheet', frame: 'pacman-dead-1' },
248
+ { key: 'spritesheet', frame: 'pacman-dead-2' },
249
+ { key: 'spritesheet', frame: 'pacman-dead-3' },
250
+ { key: 'spritesheet', frame: 'pacman-dead-4' },
251
+ { key: 'spritesheet', frame: 'pacman-dead-5' },
252
+ { key: 'spritesheet', frame: 'pacman-dead-6' },
253
+ { key: 'spritesheet', frame: 'pacman-dead-7' },
254
+ { key: 'spritesheet', frame: 'pacman-dead-8' },
255
+ { key: 'spritesheet', frame: 'pacman-dead-9' },
256
+ { key: 'spritesheet', frame: 'pacman-dead-10' },
257
+ { key: 'spritesheet', frame: 'pacman-dead-11' },
258
+ ],
259
+ frameRate: 10,
260
+ repeat: 0,
261
+ });
262
+ }
263
+ }
264
+ //# sourceMappingURL=pac-man.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pac-man.js","sourceRoot":"","sources":["../../../src/game/sprites/pac-man.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Item } from './abstracts/item';
2
+ export declare class Pellet extends Item {
3
+ readonly points: number;
4
+ constructor(scene: Phaser.Scene, x: number, y: number);
5
+ static addPelletGraphics(scene: Phaser.Scene): void;
6
+ }
7
+ //# sourceMappingURL=pellet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pellet.d.ts","sourceRoot":"","sources":["../../../src/game/sprites/pellet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,qBAAa,MAAO,SAAQ,IAAI;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAK;gBAEhB,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAIrD,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK;CAO7C"}
@@ -0,0 +1,15 @@
1
+ import { Item } from './abstracts/item';
2
+ export class Pellet extends Item {
3
+ constructor(scene, x, y) {
4
+ super(scene, x, y, 12, 'pellet');
5
+ this.points = 10;
6
+ }
7
+ static addPelletGraphics(scene) {
8
+ const graphics = scene.add.graphics();
9
+ graphics.fillStyle(0xffffff, 1); // white pellet
10
+ graphics.fillCircle(4, 4, 4); // 4 radius
11
+ graphics.generateTexture('pellet', 8, 8);
12
+ graphics.destroy();
13
+ }
14
+ }
15
+ //# sourceMappingURL=pellet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pellet.js","sourceRoot":"","sources":["../../../src/game/sprites/pellet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,MAAM,OAAO,MAAO,SAAQ,IAAI;IAG9B,YAAY,KAAmB,EAAE,CAAS,EAAE,CAAS;QACnD,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;QAHzB,WAAM,GAAW,EAAE,CAAA;IAI5B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,KAAmB;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QACrC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA,CAAC,eAAe;QAC/C,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,WAAW;QACxC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxC,QAAQ,CAAC,OAAO,EAAE,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { PacManMap } from 'pac-man-map-generator';
2
+ import { ActionItem } from './abstracts/action-item';
3
+ export declare class SuperPellet extends ActionItem {
4
+ readonly points: number;
5
+ constructor(scene: Phaser.Scene, x: number, y: number);
6
+ onCollect(): void;
7
+ static addSuperPelletGraphics(scene: Phaser.Scene): void;
8
+ static getFourCorners(gameMap: PacManMap): {
9
+ x: number;
10
+ y: number;
11
+ }[];
12
+ }
13
+ //# sourceMappingURL=super-pellet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"super-pellet.d.ts","sourceRoot":"","sources":["../../../src/game/sprites/super-pellet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,qBAAa,WAAY,SAAQ,UAAU;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAK;gBAEhB,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAIrD,SAAS;IAIT,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK;IAYjD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS;WAQJ,MAAM;WAAK,MAAM;;CAgDtD"}
@@ -0,0 +1,67 @@
1
+ import { ActionItem } from './abstracts/action-item';
2
+ export class SuperPellet extends ActionItem {
3
+ constructor(scene, x, y) {
4
+ super(scene, x, y, 8, 'super-pellet');
5
+ this.points = 50;
6
+ }
7
+ onCollect() {
8
+ this.destroy();
9
+ }
10
+ static addSuperPelletGraphics(scene) {
11
+ const graphics = scene.add.graphics();
12
+ graphics.fillStyle(0xffffff, 1); // white pellet
13
+ graphics.fillCircle(8, 8, 8); // 8 radius
14
+ graphics.generateTexture('super-pellet', 16, 16);
15
+ graphics.destroy();
16
+ }
17
+ // Since we use a random map generator,
18
+ // the location of the four corners is not fixed.
19
+ // This function finds the four 'corners' of the map,
20
+ // defined as the four empty spaces closest to each corner of the map.
21
+ static getFourCorners(gameMap) {
22
+ const corners = [
23
+ { x: 1, y: 1 }, // Top-left
24
+ { x: gameMap[0].length - 2, y: 1 }, // Top-right
25
+ { x: 1, y: gameMap.length - 2 }, // Bottom-left
26
+ { x: gameMap[0].length - 2, y: gameMap.length - 2 }, // Bottom-right
27
+ ];
28
+ const cornerPelletPositions = [];
29
+ // BFS from each corner to find the nearest empty cell
30
+ corners.forEach((corner) => {
31
+ const queue = [corner];
32
+ const visited = new Set();
33
+ visited.add(`${corner.x},${corner.y}`);
34
+ while (queue.length > 0) {
35
+ const current = queue.shift();
36
+ if (!current) {
37
+ continue;
38
+ }
39
+ const cell = gameMap[current.y][current.x];
40
+ if (cell?.type === 'empty') {
41
+ cornerPelletPositions.push({ x: current.x, y: current.y });
42
+ break;
43
+ }
44
+ const directions = [
45
+ { x: 0, y: -1 },
46
+ { x: 1, y: 0 },
47
+ { x: 0, y: 1 },
48
+ { x: -1, y: 0 },
49
+ ];
50
+ directions.forEach((dir) => {
51
+ const nextX = current.x + dir.x;
52
+ const nextY = current.y + dir.y;
53
+ if (nextX >= 0 &&
54
+ nextX < gameMap[0].length &&
55
+ nextY >= 0 &&
56
+ nextY < gameMap.length &&
57
+ !visited.has(`${nextX},${nextY}`)) {
58
+ visited.add(`${nextX},${nextY}`);
59
+ queue.push({ x: nextX, y: nextY });
60
+ }
61
+ });
62
+ }
63
+ });
64
+ return cornerPelletPositions;
65
+ }
66
+ }
67
+ //# sourceMappingURL=super-pellet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"super-pellet.js","sourceRoot":"","sources":["../../../src/game/sprites/super-pellet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class Wall extends Phaser.Physics.Arcade.Sprite {
2
+ constructor(scene: Phaser.Scene, x: number, y: number);
3
+ static addWallGraphics(scene: Phaser.Scene): void;
4
+ }
5
+ //# sourceMappingURL=wall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wall.d.ts","sourceRoot":"","sources":["../../../src/game/sprites/wall.ts"],"names":[],"mappings":"AAAA,qBAAa,IAAK,SAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;gBACxC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAQrD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK;CAO3C"}
@@ -0,0 +1,16 @@
1
+ export class Wall extends Phaser.Physics.Arcade.Sprite {
2
+ constructor(scene, x, y) {
3
+ super(scene, x * 32, y * 32, 'wall');
4
+ // Add to scene and to the walls group
5
+ this.setOrigin(0, 0); // Top-left origin
6
+ scene.add.existing(this);
7
+ }
8
+ static addWallGraphics(scene) {
9
+ const graphics = scene.add.graphics();
10
+ graphics.fillStyle(0x333333, 1); // dark gray wall
11
+ graphics.fillRect(0, 0, 32, 32); // 32x32 square
12
+ graphics.generateTexture('wall', 32, 32);
13
+ graphics.destroy();
14
+ }
15
+ }
16
+ //# sourceMappingURL=wall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wall.js","sourceRoot":"","sources":["../../../src/game/sprites/wall.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,IAAK,SAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;IACpD,YAAY,KAAmB,EAAE,CAAS,EAAE,CAAS;QACnD,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;QAEpC,sCAAsC;QACtC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,kBAAkB;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,KAAmB;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QACrC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA,CAAC,iBAAiB;QACjD,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA,CAAC,eAAe;QAC/C,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACxC,QAAQ,CAAC,OAAO,EAAE,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export declare class ScoreDisplay extends Phaser.GameObjects.Text {
2
+ private score;
3
+ constructor(scene: Phaser.Scene, x: number, y: number);
4
+ addPoints(points: number): void;
5
+ getScore(): number;
6
+ }
7
+ //# sourceMappingURL=score-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-display.d.ts","sourceRoot":"","sources":["../../../src/game/ui/score-display.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,MAAM,CAAC,WAAW,CAAC,IAAI;IACvD,OAAO,CAAC,KAAK,CAAY;gBAEb,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAS9C,SAAS,CAAC,MAAM,EAAE,MAAM;IAKxB,QAAQ;CAGhB"}
@@ -0,0 +1,19 @@
1
+ export class ScoreDisplay extends Phaser.GameObjects.Text {
2
+ constructor(scene, x, y) {
3
+ super(scene, x, y, 'Score: 0', {
4
+ fontFamily: 'Arial',
5
+ fontSize: '24px',
6
+ color: '#ffffff',
7
+ });
8
+ this.score = 0;
9
+ scene.add.existing(this);
10
+ }
11
+ addPoints(points) {
12
+ this.score += points;
13
+ this.setText(`Score: ${this.score}`);
14
+ }
15
+ getScore() {
16
+ return this.score;
17
+ }
18
+ }
19
+ //# sourceMappingURL=score-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score-display.js","sourceRoot":"","sources":["../../../src/game/ui/score-display.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,CAAC,IAAI;IAGvD,YAAY,KAAmB,EAAE,CAAS,EAAE,CAAS;QACnD,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE;YAC7B,UAAU,EAAE,OAAO;YACnB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;QAPI,UAAK,GAAW,CAAC,CAAA;QAQvB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAEM,SAAS,CAAC,MAAc;QAC7B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACtC,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import { PacMan } from './pac-man';
2
+ export { PacMan };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAE,MAAM,EAAE,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ import { PacMan } from './pac-man';
2
+ export { PacMan };
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function PacMan(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=pac-man.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pac-man.d.ts","sourceRoot":"","sources":["../src/pac-man.tsx"],"names":[],"mappings":"AAGA,wBAAgB,MAAM,4CAkBrB"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { createPacManScene } from './game/_scenes/pac-man-scene';
4
+ export function PacMan() {
5
+ const container = useRef(null);
6
+ const gameRef = useRef(null);
7
+ useEffect(() => {
8
+ if (gameRef.current || !container.current) {
9
+ return;
10
+ }
11
+ gameRef.current = createPacManScene(container.current);
12
+ return () => {
13
+ gameRef.current?.destroy(true);
14
+ gameRef.current = null;
15
+ };
16
+ }, []);
17
+ return _jsx("div", { style: { width: '448px', height: '496px' }, ref: container });
18
+ }
19
+ //# sourceMappingURL=pac-man.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pac-man.js","sourceRoot":"","sources":["../src/pac-man.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE,MAAM,UAAU,MAAM;IACpB,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAA;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC1C,OAAM;QACR,CAAC;QAED,OAAO,CAAC,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAEtD,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;QACxB,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,GAAQ,CAAA;AAChF,CAAC"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "pac-man-phaser",
3
+ "type": "module",
4
+ "version": "1.0.0",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "assets"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts"
15
+ }
16
+ },
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "dev": "tsc --watch",
20
+ "lint": "eslint ./src --fix",
21
+ "patch": "npm version patch --no-git-tag-version",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "peerDependencies": {
25
+ "react": "^19.1.1",
26
+ "react-dom": "^19.1.1"
27
+ },
28
+ "devDependencies": {
29
+ "@eslint/js": "^9.33.0",
30
+ "@types/react": "^19.1.10",
31
+ "@types/react-dom": "^19.1.7",
32
+ "eslint": "^9.33.0",
33
+ "eslint-config-prettier": "^10.1.8",
34
+ "eslint-plugin-prettier": "^5.5.4",
35
+ "eslint-plugin-react": "^7.37.5",
36
+ "eslint-plugin-react-hooks": "^5.2.0",
37
+ "eslint-plugin-react-refresh": "^0.4.20",
38
+ "eslint-plugin-unused-imports": "^4.2.0",
39
+ "globals": "^16.3.0",
40
+ "react": "^19.1.1",
41
+ "react-dom": "^19.1.1",
42
+ "typescript": "~5.8.3",
43
+ "typescript-eslint": "^8.39.1"
44
+ },
45
+ "keywords": [
46
+ "pacman",
47
+ "map",
48
+ "generator",
49
+ "game"
50
+ ],
51
+ "author": "parkerstovall",
52
+ "license": "MIT",
53
+ "description": "Game of Pac-Man built using Phaser JS",
54
+ "publishConfig": {
55
+ "access": "public",
56
+ "registry": "https://registry.npmjs.org/"
57
+ },
58
+ "bugs": {
59
+ "url": "https://github.com/parkerstovall/pac-man/issues"
60
+ },
61
+ "homepage": "https://github.com/parkerstovall/pac-man",
62
+ "prettier": {
63
+ "singleQuote": true,
64
+ "trailingComma": "all",
65
+ "tabWidth": 2,
66
+ "semi": false,
67
+ "printWidth": 80
68
+ },
69
+ "dependencies": {
70
+ "pac-man-map-generator": "^1.0.4",
71
+ "phaser": "^3.90.0"
72
+ }
73
+ }