Created
July 22, 2022 20:33
-
-
Save schadocalex/0a171ced4d06e50809af167d5bbaa517 to your computer and use it in GitHub Desktop.
Boulder Dash (PuzzleScript Script)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Play this game by pasting the script in http://www.puzzlescript.net/editor.html |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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