puzzlescript

Zelf logische puzzelspellen ontwerpen

View project on GitHub

Inhoud

14 - Meer informatie

Nog niet uitgepuzzeld? Kijk dan eens naar deze technieken waar we nog niet aan toegekomen zijn. Misschien brengt eentje je op een fantastisch idee!

Voorbeelden

Elk voorbeeld opent in een nieuw tabblad, dus het overschrijft je eigen spel niet.

Twee karakters die je ombeurten kunt besturen

Druk op X om te wisselen tussen twee spelerkarakters. Zo worden je puzzels extra moeilijk.

Drempel waar speler overheen kan maar kistjes niet

Nog iets om je puzzels ingewikkelder te maken: een speciaal type vloer waar wel spelers maar geen kistjes overheen kunnen.

Portals

Een portal verbindt twee plekken in het level. Spelers en kistjes kunnen door de portal van de ene naar de andere plek springen!

3-op-een-rij spelletje

Een bekend soort spelletje waarbij je steeds drie dezelfde symbolen op een rij moet krijgen om ze te laten verdwijnen. Gebruik de pijltjestoetsen om een symbool te kiezen, druk X om het te selecteren, en druk een richting om het symbool te wisselen met z’n buurman. Wisselen mag alleen als het drie (of meer) op een rij oplevert.

Schietspel

Een klassiek soort spelletje waarbij je een ruimteschip bestuurt en boosaardige buitenaardse wezens moet schieten. Vijanden komen telkens op willekeurige plaatsen te staan.

Ingebouwde voorbeeldspellen

Misschien heb je bovenin al “Load example” zien staan. Bij PuzzleScript zitten een aantal voorbeeldspellen waar je van kunt leren. Sla eerst jouw spel op (SAVE) en selecteer dan een van de spellen uit de lijst om de code te bekijken.

(Let op, jouw code wordt overschreven, maar je kunt altijd terug naar de laatst opgeslagen versie door de bovenste optie bij “Load” te kiezen)

Voor hardcore PuzzleScripters

Hier zijn nog een aantal andere hele knappe PuzzleScript-spellen die niet in de lijst voorbeelden staan:

Een hele verzameling uitdagende puzzelspellen van de maker van PuzzleScript (Stephen Lavelle, bijnaam ‘increpare’) vind je op zijn website.

Extra opties

Misschien had je al gezien dat helemaal bovenaan het programma deze regels staan:

title Mijn puzzelspel
author jij
homepage www.puzzlescript.net

Dit gedeelte bovenaan wordt de Prelude genoemd. Je kunt je spel hier een naam geven en je eigen naam erbij zetten. Maar in dit gedeelte van het programma kun je ook bepaalde extra opties van PuzzleScript opgeven. Dit zijn een paar interessante (sommige hebben we al gezien):

color_palette nummer
Gebruik een andere kleurenpalet (alle kleuren zien er iets anders uit). Nummer mag 1-14 zijn.
background_color kleur
Gebruik een andere achtergrondkleur voor titelscherm, berichten, etc.
text_color kleur
Verandert de tekstkleur.
scanline
Tekent je spel met horizontale strepen, zodat het er (nog meer) uitziet als een heel ouderwets computerspelletje.
noaction
Verbergt de regel "X to action" op het titelscherm. De meeste puzzelspellen hebben behalve de pijltjestoetsen geen aparte actietoets, dus dan is deze instructie niet nodig.
youtube wygy721nzRc
Laat het geluid van een YouTube-video als achtergrondmuziek horen. Let op, dit werkt alleen als je "SHARE" gebruikt, niet in de PuzzleScript-editor. Je moet de unieke "code" van de youtube-video weten. Dit vind je door naar het adres te kijken, bijvoorbeeld `https://www.youtube.com/watch?v=wygy721nzRc`. Het gedeelte na `v=` is de code die je hier moet gebruiken.
debug
verbose_logging
Toon hoe PuzzleScript jouw regels heeft uitgeschreven en hoe ze worden toegepast. Interessant als je beter wilt begrijpen hoe PuzzleScript werkt, of een moeilijk probleem probeert op te lossen.
flickscreen WxH
zoomscreen WxH
Met deze regels zie je steeds maar een deel van elk level. Met flickscreen 5x5 wordt je level in 5x5 vierkantjes opgedeeld, en zie je altijd maar 1 van die vierkantjes. Met zoomscreen 5x5 zie ook altijd maar 5x5 vakjes en beweegt de 'camera' mee met de speler.
run_rules_on_level_start
Soms is het handig als je regels alvast 1x worden toegepast voordat het spel begint. Met deze regel zorg je daar voor.
realtime_interval getal
Hiermee kun je je spel 'realtime' maken. Gebruik bijvoorbeeld realtime_interval 0.1 om je regels 10 keer per seconde toe te passen.

Vragen en antwoorden

Zijn er uitwerkingen van de vragen in deze CoderDojo?
Ja! Voor uitwerkingen van veel van de vragen in deze CoderDojo: zie voorbeeld van code na stap 5 en voorbeeld van code aan het eind. (sla het bestand op en open het in bijv. Kladblok. Gebruik kopieren en plakken om de code in PuzzleScript uit te proberen)
Waar vind ik meer informatie over PuzzleScript?
Klik op DOCS bovenin om de (Engelse) documentatie van PuzzleScript te bekijken. Hierin staan nog een aantal mogelijkheden die hier niet genoemd zijn. Er zijn ook een aantal stap-voor-stap instructies ("tutorials") voor PuzzleScript. Je vindt ze hier.
Hoe worden PuzzleScript-regels precies uitgevoerd?
Zie hier. Korte samenvatting: regels worden een voor een zo vaak mogelijk toegepast. Zet debug en verbose_logging bovenin om precies te zien hoe het werkt.
Hoe kun je meerdere kistjes tegelijk schuiven?
Gebruik deze twee regels:
[ > Speler | Kistje ] -> [ > Speler | > Kistje ]
[ > Kistje | Kistje ] -> [ > Kistje | > Kistje ]
Hoe kun je de actietoets (X) in een spel gebruiken?
Om bijvoorbeeld alle kistjes naast de speler weg te schuiven als je X drukt:
[ ACTION Speler | Kistje | no Voorwerp ] -> [ Speler | | Kistje ]
Hoe kun je een ander soort vloer maken waar voorwerpen op kunnen staan?
Je kunt een extra COLLISIONLAYER (laag) tussen Achtergrond en Voorwerp maken waar "vloerobjecten" kunnen staan. Objecten op verschillende lagen kunnen op hetzelfde vakje staan, dus een kistje kan bovenop een "vloerobject" staan. Als je een vloerobject Doel maakt en je wilt een regel die zegt dat Kistjes die op het Doel terechtkomen verdwijnen, doe je dat zo:
[ Kistje Doel ] -> [ Doel ]
Hoe kun je het zo maken dat een geduwd kistje doorbeweegt tot het tegen een muur botst?
Zonder animatie (Kistje springt direct naar eindpunt):
[ > Speler | Kistje ] -> [ Speler | > Kistje ]
[ > Kistje | no Object ] -> [ | > Kistje ]

Met animatie: zie volgende vraag.
Kan je een 'vijand' maken die naar de speler toe beweegt zodra hij die ziet?
[ Speler | ... | no Object | Vijand ] -> [ Speler | ... | Vijand | ]
Kan je 4 kistjes laten verdwijnen als ze een vierkant vormen?
Ja, maar dit is wat lastiger, omdat PuzzleScript-regels meestal alleen op 1 rij of kolom werken. Je zou (op een andere laag) een tijdelijk object moeten aanmaken, bijv. TweeKistjesBovenElkaar dat betekent "dit vakje en het vakje eronder bevat een kistje" en dan een regel die checkt op twee TweeKistjesBovenElkaar objecten naast elkaar en er andere tijdelijke objecten van maakt, bijv. VerdwijnendeKistjesBovenElkaar. Als een van de laatste regels zou je alle tijdelijke objecten weer moeten verwijderen.</a>
Kan je bijvoorbeeld een verfbom maken die alle voorwerpen om zich heen een bepaalde kleur geeft?
Ja, op een vergelijkbare manier als de vorige vraag. Je zou bijvoorbeeld eerst in de vakjes links en rechts van de bom een tijdelijk object VerfLinksRechts moeten aanmaken en dan met een volgende regel boven en onder die tijdelijke objecten meer tijdelijke objecten moeten aanmaken, bijv. VerfHoek. Daarna kun je regels maken die de tijdelijke objecten gebruikt om voorwerpen te kleuren, en tot slot verwijder je weer alle tijdelijke objecten.</a>