TypeAway illustrates Ucigame's typematic feature, which can apply to all
keyboard keys or to specified keys.
keyboard.lastCharacter() conveniently returns the character representation (in a String) of the last printable keyboard key pressed. Note here the usage of keyboard.isBackspace() so that Backspaces are correctly handled. |
|
TypeAway.java import ucigame.*; public class TypeAway extends Ucigame { String myFont; String playersName = ""; Sprite ball; public void setup() { window.size(250, 250); window.title("TypeAway"); framerate(30); window.showFPS(); keyboard.typematicOn(); canvas.background(255, 200, 200); ball = makeSprite(getImage("images/ball.gif", 255, 255, 255)); ball.position(120, 150); if (isAvailableFont("Georgia")) myFont = "Georgia"; else myFont = arrayOfAvailableFonts()[0]; // just choose first one } public void draw() { canvas.clear(); canvas.font(myFont, PLAIN, 11, 0, 150, 50); canvas.putText("Please enter your name: " + playersName, 10, 50); canvas.font(myFont, PLAIN, 11, 200, 0, 0); canvas.putText("F1: Turn typematic on for all keys", 10, 100); canvas.putText("F2: Turn typematic on for up arrow", 10, 115); canvas.putText("F3: Turn typematic on for down arrow", 10, 130); canvas.putText("F4: Turn typematic on for left arrow", 10, 145); canvas.putText("F5: Turn typematic on for right arrow", 10, 160); canvas.putText("F6: Turn typematic off for all keys", 10, 175); canvas.putText("F7: Turn typematic off for up arrow", 10, 190); canvas.putText("F8: Turn typematic off for down arrow", 10, 205); canvas.putText("F9: Turn typematic off for left arrow", 10, 220); canvas.putText("F10: Turn typematic off for right arrow", 10, 235); ball.draw(); } public void onKeyPress() { String last = keyboard.lastCharacter(); if (keyboard.isBackspace(last)) { if (playersName.length() > 0) playersName = playersName.substring(0, playersName.length()-1); } else playersName = playersName.concat(last); if (keyboard.isDown(keyboard.F1)) keyboard.typematicOn(); else if (keyboard.isDown(keyboard.F2)) keyboard.typematicOn(keyboard.UP); else if (keyboard.isDown(keyboard.F3)) keyboard.typematicOn(keyboard.DOWN); else if (keyboard.isDown(keyboard.F4)) keyboard.typematicOn(keyboard.LEFT); else if (keyboard.isDown(keyboard.F5)) keyboard.typematicOn(keyboard.RIGHT); else if (keyboard.isDown(keyboard.F6)) keyboard.typematicOff(); else if (keyboard.isDown(keyboard.F7)) keyboard.typematicOff(keyboard.UP); else if (keyboard.isDown(keyboard.F8)) keyboard.typematicOff(keyboard.DOWN); else if (keyboard.isDown(keyboard.F9)) keyboard.typematicOff(keyboard.LEFT); else if (keyboard.isDown(keyboard.F10)) keyboard.typematicOff(keyboard.RIGHT); // Arrow keys move the ball if (keyboard.isDown(keyboard.UP)) ball.nextY(ball.y() - 2); if (keyboard.isDown(keyboard.DOWN)) ball.nextY(ball.y() + 2); if (keyboard.isDown(keyboard.LEFT)) ball.nextX(ball.x() - 2); if (keyboard.isDown(keyboard.RIGHT)) ball.nextX(ball.x() + 2); } } |