O'Reilly logo

Killer Game Programming in Java by Andrew Davison

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Wraparound Ribbons

A Ribbon object manages a wraparound, movable image, which should be wider than the game panel. This width requirement is important for the amount of work needed to draw the image as it wraps around the JPanel.

A wide image means that its display on-screen requires, at most, two drawImage() calls (with associated calculations for the coordinates and image dimensions): one to draw the tail of the image on the left side and the other for its start on the right. If the image is narrower than the panel, then three drawImage() calls (or more) might be needed, with an increase in the number of calculations.

Furthermore, if the panel width is constant, as here, then some parts of the calculations need only be carried out once and can be reused after that.

The constructor of this class initializes the graphic, its moveSize value, two movement flags, and a position variable called xImHead:

 // globals private BufferedImage im; private int width; // the width of the image (>= pWidth) private int pWidth, pHeight; // dimensions of display panel private int moveSize; // size of the image move (in pixels) private boolean isMovingRight; // movement flags private boolean isMovingLeft; private int xImHead; // panel position of image's left side public Ribbon(int w, int h, BufferedImage im, int moveSz) { pWidth = w; pHeight = h; this.im = im; width = im.getWidth(); // no need to store the height if (width < pWidth) System.out.println("Ribbon width < panel width"); moveSize = moveSz; ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required