Ucigame - Gallery - SpinIt

Home | Getting Started | Reference | Introduction to Java | Gallery

Your browser cannot show Java applets. SpinIt illustrates the rotation of sprites, and in particular how rotating a sprite also moves any sprites pinned to it.

Apologies for the programmer art.

SpinIt.java
import ucigame.*;

public class SpinIt extends Ucigame
{
    Sprite tower, ring1, ring2, star1, star2;

    int towerRotation = 0;
    int ring1Rotation = 0;
    int ring2Rotation = 0;
    int star1Rotation = 0;
    int star2Rotation = 0;

    public void setup()
    {
        window.size(250, 250);
        window.title("Spin It");
        framerate(20);
        window.showFPS();

        canvas.background(200);

        Image image = getImage("images/SpinItImages.png", 0);
        tower = makeSprite(220, 225);
        tower.addFrame(image, 42, 23);
        ring1 = makeSprite(55, 55);
        ring1.addFrame(image, 278, 198);
        ring2 = makeSprite(55, 55);
        ring2.addFrame(image, 278, 198);
        star1 = makeSprite(78, 93);
        star1.addFrame(image, 305, 73);
        star1.addFrame(image, 398, 73);
        star2 = makeSprite(78, 93);
        star2.addFrame(image, 305, 73);
        star2.addFrame(image, 398, 73);

        tower.position(20, 20);
        tower.pin(ring1, 0, 0);
        tower.pin(ring2, 100, 0);
        ring1.pin(star1, 10, 0);
        ring2.pin(star2, 8, 0);
    }

    public void draw()
    {
        canvas.clear();  // draw background

        tower.rotate(towerRotation);
        ring1.rotate(ring1Rotation);
        ring2.rotate(ring2Rotation);
        star1.rotate(star1Rotation);
        star2.rotate(star2Rotation);

        tower.draw();
    }

    public void onKeyPress()
    {
        // Arrow keys move the tower
        if (keyboard.isDown(keyboard.UP))
            tower.nextY(tower.y() - 2);
        else if (keyboard.isDown(keyboard.DOWN))
            tower.nextY(tower.y() + 2);
        if (keyboard.isDown(keyboard.LEFT))
            tower.nextX(tower.x() - 2);
        else if (keyboard.isDown(keyboard.RIGHT))
            tower.nextX(tower.x() + 2);
        // Q, W, A, S, and Z rotate things
        if (keyboard.isDown(keyboard.Q))
            star1Rotation++;
        if (keyboard.isDown(keyboard.W))
            star2Rotation++;
        if (keyboard.isDown(keyboard.A))
            ring1Rotation++;
        if (keyboard.isDown(keyboard.S))
            ring2Rotation++;
        if (keyboard.isDown(keyboard.Z))
            towerRotation++;
        if (keyboard.isDown(keyboard.SPACE))
        {
            towerRotation = 0;
            ring1Rotation = 0;
            ring2Rotation = 0;
            star1Rotation = 0;
            star2Rotation = 0;
        }
        if (keyboard.isDown(keyboard.SHIFT))
            canvas.background(0, 0, 255);
    }
}