Skip to content

Instantly share code, notes, and snippets.

@schadocalex
Created July 22, 2022 20:33
Show Gist options
  • Save schadocalex/0e3772b827fb54f6607b5d38be0d7f86 to your computer and use it in GitHub Desktop.
Save schadocalex/0e3772b827fb54f6607b5d38be0d7f86 to your computer and use it in GitHub Desktop.
Boulder Dash (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
title Boulder Dash
author Schad
homepage www.puzzlescript.net
realtime_interval 0.15
key_repeat_interval 0.15
========
OBJECTS
========
Background .
brown grey
00000
00000
00000
00000
00000
Wall #
blue white
00000
01000
00000
00000
00000
PlayerD P
green #d2b48c
.000.
01110
10101
.000.
.1.1.
PlayerL
green #d2b48c
0000.
11100
11000
0000.
1..1.
PlayerR
green #d2b48c
.0000
00111
00011
.0000
.1..1
PlayerU
green #d2b48c
10001
01110
00100
.000.
1...1
Rock O
grey lightgray
.000.
01100
01000
00000
.000.
Diamond X
#79f8f8
.000.
00000
00000
.000.
..0..
Dirt *
lightbrown brown
00000
01100
01000
00010
00000
End $
purple pink
00000
01110
01010
01110
00000
OpenEnd1
purple pink white
00000
01110
01210
01110
00000
OpenEnd2
pink white purple
00000
01110
01210
01110
00000
OpenEnd3
white purple pink
00000
01110
01210
01110
00000
OpenEndTemp
transparent
OpenEndTempFirst
transparent
WillKillFlag
orange
.....
.0.0.
..0..
.0.0.
.....
KillFlag
transparent red
.....
.0.0.
..0..
.0.0.
.....
StaticFlag
purple
00.00
0...0
.....
0...0
00.00
WithVoidLFlag
pink
.....
.....
0....
.....
.....
WithVoidRFlag
pink
.....
.....
....0
.....
.....
OnTopLFlag
pink
00...
0....
.....
.....
.....
OnTopRFlag
pink
...00
....0
.....
.....
.....
MoveUp
transparent
..0..
.0.0.
.....
.....
.....
MoveDown
transparent
.....
.....
.....
.0.0.
..0..
MoveLeft
transparent
.....
.0...
0....
.0...
.....
MoveRight
transparent
.....
...0.
....0
...0.
.....
=======
LEGEND
=======
Player = PlayerL or PlayerR or PlayerU or PlayerD
GravityObject = Rock or Diamond
Floor = Dirt or Wall
Obstacle = Player or Floor or GravityObject
OpenEnd = OpenEnd1 or OpenEnd2 or OpenEnd3 or OpenEndTemp or OpenEndTempFirst
AllMove = MoveUp or MoveDown or MoveLeft or MoveRight
=======
SOUNDS
=======
sfx0 47885102 (death)
sfx1 29957708 (end opened)
sfx2 65009700 (diamond)
sfx3 18250304 (dig)
sfx4 26466702 (collision with floor)
(65009700)
================
COLLISIONLAYERS
================
Background
End, OpenEnd,
Player, Wall, Rock, Dirt, Diamond
StaticFlag
WithVoidLFlag
WithVoidRFlag
OnTopLFlag
OnTopRFlag
WillKillFlag
KillFlag
MoveUp, MoveDown, MoveLeft, MoveRight
======
RULES
======
(((((((((((( real-time tick ))))))))))))
(player death if on KillFlag)
[ stationary Player KillFlag ] -> restart sfx0
(add StaticFlag above dirt)
down [ stationary Player ] [ GravityObject | Dirt ] -> [ Player ] [ GravityObject StaticFlag | Dirt ]
(add StaticFlag above wall and on walls because rocks can fall from walls)
down [ stationary Player ] [ GravityObject | Wall ] -> [ Player ] [ GravityObject StaticFlag | Wall StaticFlag ]
(remove KillFlag if StaticFlag)
down [ stationary Player ] [ KillFlag StaticFlag ] -> [ Player ] [ no KillFlag ]
(add StaticFlag above player if object not already moving)
down [ stationary Player ] [ GravityObject no KillFlag | Player ] -> [ Player ] [ GravityObject StaticFlag | Player ]
(propagate StaticFlag above StaticFlag)
down [ stationary Player ] [ GravityObject no StaticFlag | StaticFlag ] -> [ Player ] [ GravityObject StaticFlag | StaticFlag ]
(apply gravity)
down [ stationary Player ] [ GravityObject no StaticFlag | no GravityObject ] -> [ Player ] [ > GravityObject | WillKillFlag ]
(add WithVoidFlag if StaticFlag has void on left/right)
left [ stationary Player ] [ StaticFlag | no WillKillFlag no Obstacle ] -> [ Player ] [ StaticFlag WithVoidLFlag | ]
right [ stationary Player ] [ StaticFlag | no WillKillFlag no Obstacle ] -> [ Player ] [ StaticFlag WithVoidRFlag | ]
(add OnTop to the highest StaticFlag on a column of staticFlags)
down [ stationary Player ] [ no StaticFlag | StaticFlag | StaticFlag WithVoidLFlag ] -> [ Player ] [ | StaticFlag OnTopLFlag | StaticFlag WithVoidLFlag ]
down [ stationary Player ] [ no StaticFlag | StaticFlag | StaticFlag WithVoidRFlag ] -> [ Player ] [ | StaticFlag OnTopRFlag | StaticFlag WithVoidRFlag ]
(move gravity object on top to the left or right)
right [ stationary Player ] [ GravityObject OnTopRFlag | no WillKillFlag no Obstacle ] -> [ Player ] [ > GravityObject | WillKillFlag ]
left [ stationary Player ] [ GravityObject OnTopLFlag | no WillKillFlag no Obstacle ] -> [ Player ] [ > GravityObject | WillKillFlag ]
(transform chain WillKillFlag -> KillFlag -> empty)
[ stationary Player ] [ KillFlag ] -> [ Player ] [ ]
[ stationary Player ] [ WillKillFlag ] -> [ Player ] [ KillFlag ]
(remove all flags)
late [ StaticFlag ] -> [ ]
late [ WithVoidLFlag ] -> [ ]
late [ WithVoidRFlag ] -> [ ]
late [ OnTopLFlag ] -> [ ]
late [ OnTopRFlag ] -> [ ]
late down [ GravityObject KillFlag | Floor ] -> [ GravityObject | Floor ] sfx4
late down [ GravityObject KillFlag | GravityObject no KillFlag ] -> [ GravityObject | GravityObject ] sfx4
(((((((((((( moves ))))))))))))
(player cant move if moving to a diamond with KillFlag)
up [ stationary Player MoveUp | GravityObject KillFlag ] -> restart sfx0
left [ stationary Player MoveLeft | GravityObject KillFlag ] -> [ Player | GravityObject KillFlag ]
right [ stationary Player MoveRight | GravityObject KillFlag ] -> [ Player | GravityObject KillFlag ]
down [ stationary Player MoveDown | GravityObject KillFlag ] -> [ Player | GravityObject KillFlag ]
(move rocks)
left [ stationary Player ] [ Rock MoveLeft ] -> [ Player ] [ > Rock ]
right [ stationary Player ] [ Rock MoveRight ] -> [ Player ] [ > Rock ]
left [ stationary Player MoveLeft | Rock no KillFlag ] -> [ Player | Rock MoveLeft ]
right [ stationary Player MoveRight | Rock no KillFlag ] -> [ Player | Rock MoveRight ]
up [ stationary Player MoveUp | no Obstacle ] -> [ | Player ]
down [ stationary Player MoveDown | no Obstacle ] -> [ | Player ]
left [ stationary Player MoveLeft | no Obstacle ] -> [ | Player ]
right [ stationary Player MoveRight | no Obstacle ] -> [ | Player ]
up [ stationary Player MoveUp | Dirt ] -> [ | Player ] sfx3
down [ stationary Player MoveDown | Dirt ] -> [ | Player ] sfx3
left [ stationary Player MoveLeft | Dirt ] -> [ | Player ] sfx3
right [ stationary Player MoveRight | Dirt ] -> [ | Player ] sfx3
up [ stationary Player MoveUp | Diamond ] -> [ | Player ] sfx2
down [ stationary Player MoveDown | Diamond ] -> [ | Player ] sfx2
left [ stationary Player MoveLeft | Diamond ] -> [ | Player ] sfx2
right [ stationary Player MoveRight | Diamond ] -> [ | Player ] sfx2
(clear move flags)
[ stationary Player ] [ AllMove no Rock ] -> [ Player ] [ ]
(((((((((((( fx ))))))))))))
[ stationary Player ] [ OpenEnd3 ] -> [ Player ] [ OpenEndTemp ]
[ stationary Player ] [ OpenEnd2 ] -> [ Player ] [ OpenEnd3 ]
[ stationary Player ] [ OpenEnd1 ] -> [ Player ] [ OpenEnd2 ]
[ stationary Player ] [ OpenEndTemp ] -> [ Player ] [ OpenEnd1 ]
[ stationary Player ] [ End ] -> [ Player ] [ OpenEndTempFirst ]
[ stationary Player ] [ Diamond ] [ OpenEndTempFirst ] -> [ Player ] [ Diamond ] [ End ]
[ stationary Player ] [ OpenEndTempFirst ] -> [ Player ] [ OpenEnd1 ] sfx1
(((((((((((( input tick ))))))))))))
right [ > Player ] -> [ PlayerR MoveRight ]
left [ > Player ] -> [ PlayerL MoveLeft ]
down [ > Player ] -> [ PlayerD MoveDown ]
up [ > Player ] -> [ PlayerU MoveUp ]
==============
WINCONDITIONS
==============
All Player on OpenEnd
=======
LEVELS
=======
########################
#o*##*#oo*#***o#o**o****
#**p#*x*o*#***###**#*o**
#****#**ox**o****#*****o
#x*#**#o#o**o****#***o**
#o*#***#**o*##**o*##x***
#oo**o****#***o******o*o
#**o*##**o*oo***#****o*o
#**#***x******x*o**##o**
#o*o****#*##*ox*o**##o**
#*o*##*****oo#o**x*#*#o*
##*##******oo#o**o*#*#o*
#*#*o*o*#***##o**o****#*
#*#*o*o*#*x*#*#o**#o***$
##**#o#o**o****#***x***#
##***##o**#*x***#o**o*o*
##*x****o*##**o*##o*****
#**o****#***o******o*oo*
#o*##**o*##***#****o*oo*
##***o******o*ox******o*
#oo***#*****o*ox******#*
########################
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment