Skip to content

Instantly share code, notes, and snippets.

@10c8
Created June 14, 2020 19:22
Show Gist options
  • Save 10c8/5cecaa1e335a075e791fff14d927696b to your computer and use it in GitHub Desktop.
Save 10c8/5cecaa1e335a075e791fff14d927696b to your computer and use it in GitHub Desktop.
(-
- PacPac
- Pacman clone in PuzzlEscript
-
- Code by 0x77
- version 0.9
-)
title V0.9 PacPac
homepage 0x77.bit
background_color #000
text_color #FFFF00
realtime_interval .13
( Disable while editing )
run_rules_on_level_start
( Enable (maybe?) while editing )
(verbose_logging)
(debug)
========
OBJECTS
========
( Background )
BACKGROUND
BLACK
( Player )
PLAYER
BLACK
CLONE
TRANSPARENT
FRAME
TRANSPARENT #FFFF00
01110
11111
11111
11111
01110
PAC_S
TRANSPARENT #FFFF00
01110
11111
11111
11111
01110
PAC_U
TRANSPARENT #FFFF00
00000
10001
11011
11111
01110
PAC_D
TRANSPARENT #FFFF00
01110
11111
11011
10001
00000
PAC_L
TRANSPARENT #FFFF00
01110
00111
00011
00111
01110
PAC_R
TRANSPARENT #FFFF00
01110
11100
11000
11100
01110
( Ghosts )
GHOST_AB
BLACK #1818FF WHITE
01110
12121
11111
11111
10101
GHOST_BB
BLACK #1818FF WHITE
01110
12121
11111
11111
10101
GHOST_CB
BLACK #1818FF WHITE
01110
12121
11111
11111
10101
GHOST_DB
BLACK #1818FF WHITE
01110
12121
11111
11111
10101
GHOST_A
BLACK #FF0000 WHITE
01110
12121
11111
11111
10101
GHOST_B
BLACK #33FFFF WHITE
01110
12121
11111
11111
10101
GHOST_C
BLACK #FF99CC WHITE
01110
12121
11111
11111
10101
GHOST_D
BLACK #FFCC33 WHITE
01110
12121
11111
11111
10101
( PillS )
PILL
BLACK #FFB897
00000
00000
00100
00000
00000
SPECIAL
BLACK #FFB897
00000
01110
01110
01110
00000
( Walls )
WALL_H
BLACK #1818FF
00000
11111
00000
11111
00000
WALL_V
BLACK #1818FF
01010
01010
01010
01010
01010
WALL_SH
BLACK #1818FF
00000
00000
11111
00000
00000
WALL_SV
BLACK #1818FF
00100
00100
00100
00100
00100
WALL_SDD
BLACK #1818FF
00000
00000
11011
00100
00100
WALL_SL
BLACK #1818FF
00000
00000
00011
00100
00100
WALL_SLD
BLACK #1818FF
00100
00100
00011
00000
00000
WALL_SR
BLACK #1818FF
00000
00000
11000
00100
00100
WALL_SRD
BLACK #1818FF
00100
00100
11000
00000
00000
TP_L
BLACK
TP_R
BLACK
( Tokens )
R_TICK '
TRANSPARENT
M_TICK "
TRANSPARENT
PATH
TRANSPARENT
WALK
TRANSPARENT
T_NORMAL
BLACK
T_ENERGY
BLACK
TEMP
BLACK
HIDE
BLACK
U
TRANSPARENT
D
TRANSPARENT
L
TRANSPARENT
R
TRANSPARENT
X
TRANSPARENT
Y
TRANSPARENT
Z
TRANSPARENT
( Numbers )
CNT
BLACK
SPC
BLACK
N0
WHITE
.00..
0..0.
0..0.
0..0.
.00..
N1
WHITE
..0..
.00..
..0..
..0..
.000.
N2
WHITE
000..
...0.
.00..
0....
0000.
N3
WHITE
000..
...0.
.00..
...0.
000..
N4
WHITE
..0..
.00..
0.0..
0000.
..0..
N5
WHITE
0000.
0....
000..
...0.
000..
N6
WHITE
.00..
0....
000..
0..0.
.00..
N7
WHITE
0000.
...0.
..0..
.0...
0....
N8
WHITE
.00..
0..0.
.00..
0..0.
.00..
N9
WHITE
.00..
0..0.
.000.
...0.
000..
=======
LEGEND
=======
( Entities )
GHOST = GHOST_A or GHOST_B or GHOST_C or GHOST_D
GHOST_E = GHOST_AB or GHOST_BB or GHOST_CB or GHOST_DB
DUMB = GHOST_B or GHOST_C or GHOST_D
ENEMY = GHOST or GHOST_E
( Walls )
WALL = WALL_H or WALL_V or WALL_SH or WALL_SV or WALL_SDD or WALL_SL or WALL_SLD or WALL_SR or WALL_SRD
( Sprites )
PAC_SPR = PAC_S or PAC_U or PAC_D or PAC_L or PAC_R
( Pathfinding )
THING = WALL or PATH or TP_L or TP_R
ENT = BACKGROUND or PILL or SPECIAL
( Token )
DIR = U or D or L or R
( Numbers )
DIGIT = N0 or N1 or N2 or N3 or N4 or N5 or N6 or N7 or N8 or N9
( Letters )
. = BACKGROUND
@ = PLAYER
$ = CLONE
! = PILL and CLONE
_ = CNT
- = SPC
* = N0
¨ = N0
ü = GHOST_A
é = GHOST_B
â = GHOST_C
ä = GHOST_D
• = PILL
○ = SPECIAL
TIMER = T_NORMAL or T_ENERGY
═ = WALL_H
║ = WALL_V
─ = WALL_SH
│ = WALL_SV
┬ = WALL_SDD
┌ = WALL_SL
└ = WALL_SLD
┐ = WALL_SR
┘ = WALL_SRD
« = TP_L
» = TP_R
: = T_NORMAL
; = T_ENERGY
=======
SOUNDS
=======
================
COLLISIONLAYERS
================
( BG )
BACKGROUND
( Map )
TP_L TP_R
( Entity )
PLAYER
PAC_SPR
PILL SPECIAL
FRAME
ENEMY WALL
CLONE
( Token )
R_TICK M_TICK
PATH WALK
T_NORMAL T_ENERGY TEMP
DIR
X
Y
Z
( Numbers )
CNT SPC DIGIT
( Special )
HIDE
======
RULES
======
( Realtime fix )
[ STATIONARY @ ] ["] -> [ @ ] [']
[ MOVING @ ] ['] -> [ MOVING @ ] ["]
( Power pellets )
RIGHT [;][ N5 | N0 | - ] -> [:][ N0 | N0 | - ]
['][;][ - ] -> ['][;][ - X ]
[;][ GHOST_A ] -> [;][ GHOST_AB ]
[;][ GHOST_B ] -> [;][ GHOST_BB ]
[;][ GHOST_C ] -> [;][ GHOST_CB ]
[;][ GHOST_D ] -> [;][ GHOST_DB ]
[:][ GHOST_AB ] -> [:][ GHOST_A ]
[:][ GHOST_BB ] -> [:][ GHOST_B ]
[:][ GHOST_CB ] -> [:][ GHOST_C ]
[:][ GHOST_DB ] -> [:][ GHOST_D ]
( Player movement )
[ @ NO PAC_SPR ] -> [ @ PAC_S ]
UP [ PAC_D U | NO WALL ] -> [ PAC_D | ]
DOWN [ PAC_U D | NO WALL ] -> [ PAC_U | ]
LEFT [ PAC_R L | NO WALL ] -> [ PAC_R | ]
RIGHT [ PAC_L R | NO WALL ] -> [ PAC_L | ]
UP [ PAC_SPR U | NO WALL ] -> [ PAC_U | ]
DOWN [ PAC_SPR D | NO WALL ] -> [ PAC_D | ]
LEFT [ PAC_SPR L | NO WALL ] -> [ PAC_L | ]
RIGHT [ PAC_SPR R | NO WALL ] -> [ PAC_R | ]
UP [ > @ PAC_SPR | WALL ] -> [ @ PAC_SPR X U | WALL ]
DOWN [ > @ PAC_SPR | WALL ] -> [ @ PAC_SPR X D | WALL ]
LEFT [ > @ PAC_SPR | WALL ] -> [ @ PAC_SPR X L | WALL ]
RIGHT [ > @ PAC_SPR | WALL ] -> [ @ PAC_SPR X R | WALL ]
UP [ > @ | NO WALL ] -> [ @ PAC_U X | ]
DOWN [ > @ | NO WALL ] -> [ @ PAC_D X | ]
LEFT [ > @ | NO WALL ] -> [ @ PAC_L X | ]
RIGHT [ > @ | NO WALL ] -> [ @ PAC_R X | ]
LATE [ @ PILL ] [ _ ] -> [ @ ] [ _ X ]
LATE [ @ SPECIAL ] [ TIMER ] [ _ ] -> [ @ ] [ ; ] [ _ ]
UP ['][ @ PAC_U X DIR FRAME | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_U Y DIR FRAME ]
DOWN ['][ @ PAC_D X DIR FRAME | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_D Y DIR FRAME ]
LEFT ['][ @ PAC_L X DIR FRAME | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_L Y DIR FRAME ]
RIGHT ['][ @ PAC_R X DIR FRAME | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_R Y DIR FRAME ]
UP ['][ @ PAC_U X DIR | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_U Y DIR ]
DOWN ['][ @ PAC_D X DIR | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_D Y DIR ]
LEFT ['][ @ PAC_L X DIR | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_L Y DIR ]
RIGHT ['][ @ PAC_R X DIR | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_R Y DIR ]
UP ['][ @ PAC_U X FRAME | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_U Y FRAME ]
DOWN ['][ @ PAC_D X FRAME | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_D Y FRAME ]
LEFT ['][ @ PAC_L X FRAME | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_L Y FRAME ]
RIGHT ['][ @ PAC_R X FRAME | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_R Y FRAME ]
UP ['][ @ PAC_U X | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_U Y ]
DOWN ['][ @ PAC_D X | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_D Y ]
LEFT ['][ @ PAC_L X | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_L Y ]
RIGHT ['][ @ PAC_R X | NO WALL ENT ] -> ['][ TEMP | ENT @ PAC_R Y ]
[ @ PAC_SPR Y ] -> [ @ PAC_SPR X ]
UP [ @ | TEMP ] [ CLONE ] -> [ @ | ] [ > CLONE ]
DOWN [ @ | TEMP ] [ CLONE ] -> [ @ | ] [ > CLONE ]
LEFT [ @ | TEMP ] [ CLONE ] -> [ @ | ] [ > CLONE ]
RIGHT [ @ | TEMP ] [ CLONE ] -> [ @ | ] [ > CLONE ]
[ TEMP NO @ ] -> []
LEFT [ @ | « ] [ » ] [ CLONE ] -> [ @ | « ] [ » CLONE ] []
RIGHT [ @ | » ] [ « ] [ CLONE ] -> [ @ | » ] [ « CLONE ] []
[ @ PAC_SPR DIR » NO Z ] [ « ] -> [ » ] [ @ PAC_SPR X DIR « Z ]
[ @ PAC_SPR DIR « NO Z ] [ » ] -> [ « ] [ @ PAC_SPR X DIR » Z ]
[ @ PAC_SPR » NO Z ] [ « ] -> [ » ] [ @ PAC_SPR X « Z ]
[ @ PAC_SPR « NO Z ] [ » ] -> [ « ] [ @ PAC_SPR X » Z ]
[ Z ] -> []
['][ PAC_SPR NO FRAME NO Z ] -> ['][ PAC_SPR FRAME Z ]
['][ PAC_SPR FRAME NO Z ] -> ['][ PAC_SPR Z ]
LATE [ FRAME NO PAC_SPR ] -> []
LATE [ @ GHOST ] -> RESTART
( Score )
RIGHT [ DIGIT | _ X ] -> [ DIGIT X | _ ]
RIGHT [ DIGIT | - X ] -> [ DIGIT X | - ]
STARTLOOP
LATE [ N0 X ] -> [ N1 ]
LATE [ N1 X ] -> [ N2 ]
LATE [ N2 X ] -> [ N3 ]
LATE [ N3 X ] -> [ N4 ]
LATE [ N4 X ] -> [ N5 ]
LATE [ N5 X ] -> [ N6 ]
LATE [ N6 X ] -> [ N7 ]
LATE [ N7 X ] -> [ N8 ]
LATE [ N8 X ] -> [ N9 ]
LATE LEFT [ N9 X | DIGIT ] -> [ N0 | DIGIT X ]
ENDLOOP
( Pathfinding )
[:][ @ ] -> [:][ @ UP PATH ]
[;][ $ ] -> [;][ $ UP PATH ]
RANDOM ['][ DUMB ] -> ['][ RANDOMDIR DUMB ]
[ UP PATH | NO THING ] -> [ UP PATH | RIGHT PATH ]
+ [ RIGHT PATH | NO THING ] -> [ RIGHT PATH | DOWN PATH ]
+ [ DOWN PATH | NO THING ] -> [ DOWN PATH | UP PATH ]
STARTLOOP
RANDOM ['][ STATIONARY ENEMY DOWN PATH | RIGHT PATH ] -> ['][ > ENEMY DOWN PATH | RIGHT PATH ]
RANDOM ['][ STATIONARY ENEMY RIGHT PATH | UP PATH ] -> ['][ > ENEMY RIGHT PATH | UP PATH ]
RANDOM ['][ STATIONARY ENEMY UP PATH | DOWN PATH ] -> ['][ > ENEMY UP PATH | DOWN PATH ]
ENDLOOP
[ PATH ] -> []
==============
WINCONDITIONS
==============
NO PILL
NO SPECIAL
=======
LEVELS
=======
.***_....................:'
........................¨¨-
┌════════════┬════════════┐
║••••••••••••│••••••••••••║
║•┌──┐•┌───┐•│•┌───┐•┌──┐•║
║○│..│•│...│•│•│...│•│..│○║
║•└──┘•└───┘•│•└───┘•└──┘•║
║••••••••••••!••••••••••••║
║•┌──┐•┌┐•┌─────┐•┌┐•┌──┐•║
║•└──┘•││•└──┬──┘•││•└──┘•║
║••••••││••••│••••││••••••║
└════┐•│└──┐.│.┌──┘│•┌════┘
.....║•│┌──┘.│.└──┐│•║.....
.....║•││....ü....││•║.....
.....║•││.┌═...═┐.││•║.....
═════┘•└┘.║é....║.└┘•└═════
«.....•...║.....║...•.....»
═════┐•┌┐.║.â..ä║.┌┐•┌═════
.....║•││.└═════┘.││•║.....
.....║•││.........││•║.....
.....║•││.┌─────┐.││•║.....
┌════┘•└┘.└──┬──┘.└┘•└════┐
║••••••••••••│••••••••••••║
║•┌──┐•┌───┐•│•┌───┐•┌──┐•║
║•└─┐│•└───┘•│•└───┘•│┌─┘•║
║○••││•••••••@•••••••││••○║
└─┐•││•┌┐•┌─────┐•┌┐•││•┌─┘
┌─┘•└┘•││•└──┬──┘•││•└┘•└─┐
║••••••││••••│••••││••••••║
║•┌────┘└──┐•│•┌──┘└────┐•║
║•└────────┘•│•└────────┘•║
║•••••••••••••••••••••••••║
└═════════════════════════┘
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment