<< Chapter < Page Chapter >> Page >

The update method

The body of the update method is empty so it isn't shown here. You can view it in Listing 13 .

The render method

The interesting code in this program is in the render method, which begins in Listing 4 . There is nothing in Listing 4 that you haven't seen before.

Listing 4 . The render method.
public void render(GameContainer gc, Graphics g) throws SlickException{//set the drawing mode to honor transparent pixels g.setDrawMode(g.MODE_NORMAL);g.setBackground(Color.white);

Draw top four images

The code in Listing 5 calls four different overloaded versions of the draw method on the rabbit image to draw the top four images in Figure 1 .

Listing 5 . Draw the top four images.
rabbit.draw(0f,0f); rabbit.draw(133f,0f,new Color(1.0f,0.0f,1.0f));rabbit.draw(266f,0f,0.5f); rabbit.draw(335f,0f,128f,192);

Draw unchanged at the origin

The first call to the draw method in Listing 5 simply draws the image unchanged with its upper-left corner at the upper-left corner (the origin) of the game window.

Apply a color filter before drawing

The second call to the draw method in Listing 5 applies a color filter to the rabbit image and draws it with its upper-left corner at 133,0.

I haven't found an explanation as to exactly how the color filter is applied. It appears from experimentation that the pixel color values in the originalimage are multiplied by the red, green, and blue color values (expressed in the range from 0 to 1.0) in the color object that is passed as a parameter to the method. However, the Image class defines two constants named FILTER_LINEAR and FILTER_NEAREST that may have something to do with how color filtering is applied.

Apply a uniform scale factor before drawing

The third call to the draw method in Listing 5 applies a scale factor of 0.5 to both dimensions of the rabbit image and draws it with its upper-left corner at266,0.

Change the dimensions before drawing

The fourth call to the draw method in Listing 5 resizes the rabbit image to a width of 128 pixels and a height of 192 pixels and draws the modified image with its upper-left corner at 335,0.

Draw three more images

The code in Listing 6 calls three different overloaded versions of the draw method on the rabbit image to draw the two images on the center left and the large image on the bottom left of Figure 1 .

Listing 6 . Draw three more images.
rabbit.draw(0f,133f); rabbit.draw(133f,133f,32f,32f,96f,96f);rabbit.draw(0f,266f,256f,532f,32f,32f,96f,96f,new Color(1.0f,1.0f,0.0f));

Draw another unchanged version

The first call to the draw method in Listing 6 simply draws another unchanged version of the rabbit image in a new location, 0,133.

Extract and draw a rectangular section

The second call to the draw method in Listing 6 extracts a rectangular section from the original image and draws it the same size as the original image with its upper-left corner at 133,133.

The third and fourth parameters (32,32) specify the coordinates of the upper-left corner of the rectangle that is extracted. The fifth and sixthparameters (96,96) specify the coordinates of the lower-right corner of the rectangle that is extracted.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Anatomy of a game engine. OpenStax CNX. Feb 07, 2013 Download for free at https://legacy.cnx.org/content/col11489/1.13
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Anatomy of a game engine' conversation and receive update notifications?

Ask