Het ontwerpen van spellen met Game Maker
Het toetsenbord
De volgende variabelen en functies bestaan voor keyboardinteractie:
keyboard_lastkey Code van de laatste ingedrukte toets. Kijk lager voor toetscodes. Het is mogelijk deze waarde te veranderen. Zet hem bijv. naar nul als je de waarde niet meer nodig hebt.
keyboard_key Code van de toets die momenteel is ingedrukt. Kijk lager voor toetscodes. 0 betekent dat er geen toets is ingedrukt.
keyboard_lastchar Laatste ingedrukte toets (als string).
keyboard_string Een string die maximaal de laatste 1024 karakters bevat. Deze string bevat alleen printbare karakters. Het reageert ook op de juiste manier wanneer je backspace gebruikt, dus door het laatste karakter te wissen.
Soms is het handig om toetsen te kopiëren naar andere toetsen. Het kan bijvoorbeeld zo zijn dat de speler de pijltjestoetsen en de numpadtoetsen mag gebruiken. In dat geval is het niet handig alle acties te kopiëren, maar is het mogelijk om de pijltjestoetsen als het ware te kopiëren naar de numpadtoetsen. Ook kan je een systeem inbouwen waarmee de speler zelf kan kiezen met welke toetsen hij speelt. De volgende bijbehorende functies zijn beschikbaar:
keyboard_set_map(key1, key2) Kopieert de eigenschappen van de toets met de toetscode key1 naar de toets met de toetscode key2.
keyboard_get_map(key) Geeft de toetscode van de toets waarvan de eigenschappen gekopieerd zijn.
keyboard_unset_map() Wist alle gekopieerde eigenschappen.
Om te controleren of een bepaalde toets of muistoets is ingedrukt kun je de volgende functies gebruiken. Dit is voornamelijk handig wanneer meerdere toetsen tegelijk worden ingedrukt.
keyboard_check(key) Geeft aan of een bepaalde toets is ingedrukt.
keyboard_check_pressed(key) Geeft aan of een toets sinds de vorige stap ingedrukt is.
keyboard_check_released(key) Geeft aan of een toets sinds de vorige stap is losgelaten.
keyboard_check_direct(key) Geeft aan of een bepaalde toets is ingedrukt door direct de hardware te controleren. Het resultaat houdt geen rekening met de applicatie die momenteel voorrang heeft. Het heeft toegang tot een aantal extra controles. Je kan bijvoorbeeld de keyboardcodes vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol, en vk_ralt gebruiken om te controleren of de linker- of rechtershift, -control of -alt is ingedrukt.
De volgende functies kunnen worden gebruikt om de status van het toetsenbord te veranderen:
keyboard_get_numlock() Geeft aan of numlock aanstaat.
keyboard_set_numlock(on) Zet numlock aan (true) of uit (false).
keyboard_key_press(key) Doet net alsof de toets met toetscode key ingedrukt is.
keyboard_key_release(key) Doet net alsof de toets met toetscode key losgelaten wordt.
De volgende virtuele toetscodes bestaan:
vk_nokey toetscode die aangeeft dat er geen toets is ingedrukt
vk_anykey toetscode die aangeeft dat er minimaal één toets is ingedrukt
vk_left toetscode voor pijltjestoets 'links'
vk_right toetscode voor pijltjestoets 'rechts'
vk_up toetscode voor pijltjestoets 'boven'
vk_down toetscode voor pijltjestoets 'onder'
vk_enter entertoets
vk_escape escapetoets
vk_space spacetoets
vk_shift shifttoets
vk_control controltoets
vk_alt alttoets
vk_backspace backspacetoets
vk_tab tabtoets
vk_home hometoets
vk_end endtoets
vk_delete deletetoets
vk_insert inserttoets
vk_pageup pageuptoets
vk_pagedown pagedowntoets
vk_pause pausetoets/breaktoets
vk_printscreen printscreentoets/sysrqtoets
vk_f1 ... vk_f12toetscodes voor de toetsen F1 tot en met F12
vk_numpad0 ... vk_numpad9 toetscodes voor de numpadgetallen
vk_multiply vermenigvuldigtoets in het numerieke gedeelte van het toetsenbord
vk_divide deeltoets in het numerieke gedeelte van het toetsenbord
vk_add plustoets in het numerieke gedeelte van het toetsenbord
vk_subtract mintoets in het numerieke gedeelte van het toetsenbord
vk_decimal toets van het decimale teken in het numerieke gedeelte van het toetsenbord
Gebruik voor de lettertoetsen bijvoorbeeld dit ord('A'). (De hoofdletters!) Gebruik voor de cijfertoetsen bijvoorbeeld dit ord('5') om de <5> toets te krijgen. De volgende constanten kunnen alleen gebruikt worden in keyboard_check_direct:
vk_lshift linker shifttoets
vk_lcontrol linker controltoets
vk_lalt linker alttoets
vk_rshift rechter shifttoets
vk_rcontrol rechter controltoets
vk_ralt rechter alttoets
Je kan bijvoorbeeld de volgende code gebruiken in de step-event van het object, als je het object wil controleren met de pijltjestoetsen:
{ if (keyboard_check(vk_left)) x -= 4; if (keyboard_check(vk_right)) x += 4; if (keyboard_check(vk_up)) y -= 4; if (keyboard_check(vk_down)) y += 4; }
Natuurlijk is dit een stuk makkelijker met behulp van de toetsenbordevents.
Er zijn nog enkele functies met betrekking tot toetsenbord interactie.
keyboard_clear(key) Neutraliseert de status van de toets. Dit betekent dat het geen toetsenbord-events meer genereert, totdat de toets opnieuw wordt ingedrukt.
io_clear() Neutraliseert de status van alle toetsen.
io_handle() Update de status van alle toetsenbord- en muistoetsen.
keyboard_wait() Wacht totdat de gebruiker een toets indrukt.