Beginning Python Games Development With Pygame (2015)
APPENDIX A
Game Object Reference
This appendix documents some of the most fundamental classes in the Game Objects library that provide a toolbox for creating 2D and 3D games. For up-to-date information regarding Game Objects, see https://github.com/PythonProgramming/Beginning-Game-Development-with-Python-and-Pygame.
Importing
The Game Objects library consists of a number of submodules that can be imported separately. Generally it is best to import only the classes you need using the from <module> import <object> syntax. For example, this line imports the Color class:
from gameobjects.color import Color
Occasionally there are helper functions from the submodules that you may also want to use. In this case you can use from <module> import * to import everything into your namespace. For example, the following line will import everything in the gameobjects.vector3class:
from gameobjects.vector3 import *
Contributing
The Game Objects library is an open source project, which means that any programmer may contribute. You are encouraged to submit any bug fixes you find, or classes that you think may be useful additions to the library.
gameobjects.color.Color
Color objects represent a color with an alpha value. The components are stored in the range zero to one, as used by OpenGL, but you can convert to integer RGBA format with the rgba8 attribute or as_tuple method. Color objects support the basic mathematical operators; multiply, divide, add, and subtract. You can also multiply or divide colors by a scalar value (e.g., an integer or float), but adding or subtracting a scalar will throw a TypeError exception.
Constructor
The gameobjects.color constructor takes the red, green, and blue components and an optional alpha component, in the range zero to one. The components can also be given as a sequence of three or four values. If a color is constructed without any parameters, it will default to black.
Attributes
The components can be retrieved and set with the r, g, b, and a attributes (see Table A-1). The rgba8 and rgb8 (read-only) attributes can be used to retrieve the component as a tuple of integers in the 0 to 255 range.
Table A-1. gameobjects.color Attributes
Attribute |
Purpose |
r |
Red component in the zero to one range |
g |
Green component in the zero to one range |
b |
Blue component in the zero to one range |
a |
Alpha component in the zero to one range |
rgba8 |
Tuple of (red, green, blue, alpha) components, in the 0 to 255 range (compatible with Pygame’s draw functions) |
rgb8 |
Tuple of (red, green, blue) components, in the 0 to 255 range |
Methods
Color objects support the methods shown in Table A-2.
Table A-2. Color Methods
Method Name |
Explanation |
copy() |
Returns a copy of the color |
as_tuple() |
Returns a copy of the color as a tuple of its components |
as_tuple_rgb() |
Returns a copy of the color as a tuple of its red, green, and blue components |
as_tuple_rgba() |
Identical to as_tuple |
as_html() |
Returns a string containing the color in HTML format |
saturate() |
Forces all components to be in the range zero to one |
get_saturate() |
Returns a copy of the color where all the components have been saturated to the range 0–1 |
invert() |
Inverts the color (sets each component to one minus itself) |
mul_alpha() |
Multiplies the red, green, and blue components by the alpha component |
Class Methods
The gameobjects.color class contains a number of class methods that offer alternative ways of creating new color objects (see Table A-3).
Table A-3. Color Class Methods
Method Name |
Explanation |
black() |
Returns a color object representing black. |
white() |
Returns a color object representing full white. |
from_rgba8(r, g, b, a) |
Creates a color object from color components in the range 0–255. |
from_html(col_str) |
Creates a color object from a color encoded in HTML format. |
gray (level) |
Creates a gray color object; level is a value in the zero to one range. |
from_palette(color_name) |
Creates a named color from an internal palette, for example, red, ivory, aquamarine, etc. See the online documentation for a full list. |
gameobjects.matrix44.Matrix44
The Matrix44 class stores a 4 x 4 matrix representing a 3D transform.
Constructor
If no parameters are given, the matrix is initialized to identity. If one parameter is given, it should be a sequence (e.g., a list) with the 16 components of the matrix. If four parameters are given, they should be four sequences of up to four values. Missing values in each row are padded out with values from the identity matrix (so you can use Vector3s or tuples of three values).
Attributes
The attributes of a matrix44 object (see Table A-4) represent the rows of the matrix. You can only retrieve or set the contents of these attributes as a whole—that is, you can’t set parts of the row individually. If you need to access the components of the matrix as individual values, use the index ([]) operator of the matrix44 object.
Table A-4. gameobjects.matrix44.Matrix44 Attributes
Attribute |
Explanation |
x_axis |
The x axis of the matrix |
right |
Alias for the x axis |
y_axis |
The y axis of the matrix |
up |
Alias for the y axis |
z_axis |
The z axis of the matrix |
forward |
Alias for the z axis |
translate |
The translation part of the matrix |
Methods
Matrix objects contain a large number of methods to manipulate the components of the matrix and use it to transform points (see Table A-5).
Table A-5. Matrix44 Attributes
Method Name |
Explanation |
to_opengl() |
Returns a list of the matrix components, compatible with OpenGL. |
set(row1, row2, row3, row4) |
Sets the four rows of the matrix. |
get_row(row_no) |
Retrieves a row of the matrix as a tuple of four values; row_no is the row index (0, 1, 2, or 3). |
fast_mul(rhs) |
Multiplies the matrix by another matrix. This is a little quicker than the *= operator, but can only be used with matrices that contain only rotate, scale, or translation. |
copy() |
Returns a copy of this matrix. |
components() |
Returns an iterator of the 16 matrix components. |
transposed_components() |
Returns an iterator of the 16 matrix components, in transposed order. |
rows() |
Returns an iterator of the matrix rows as tuples of four values. |
columns() |
Returns an iterator of the matrix columns as tuples of four values. |
get_row_vec3(row_no) |
Retrieves a row as a Vector3 object. |
get_column(col_no) |
Retrieves a column as a tuple of four values. |
set_row(row_no, row) |
Sets the contents of a row; row_no is the index of the row to set, and row is a sequence of up to four values to set it to. |
set_column(col_no, col) |
Sets the contents of a column; col_no is the index of the column and row is a sequence of up to four values to set it to. |
transform_vec3(v) |
Transforms a Vector3 object (v) with this matrix, and returns the result as another Vector3. |
transform(v) |
Transforms a vector and returns the result as a tuple. |
transform_sequence(points) |
Transforms a sequence of points and returns the result as a list of tuples. |
rotate(v) |
Transforms a point with the matrix, but ignores the translation part of the matrix. |
transpose() |
Swaps the rows and columns of the matrix. |
get_transpose() |
Returns a transposed copy of the matrix. |
get_inverse_rot_trans() |
Returns the inverse of a matrix with only rotation and translation. |
get_inverse() |
Returns the inverse of this matrix. |
invert() |
Inverts this matrix (in place). |
move(forward, right, up) |
Adds offsets to the translation based on its heading. The parameters are all optional and should be sequences of three values. |
Class Methods
The Matrix44 class contains a number of class methods to create basic transform matrices (see Table A-6).
Table A-6. Matrix44 Class Methods
Class Method Name |
Explanation |
from_iter(iterable) |
Creates a matrix from an iterable (anything that can work in a for loop) of 16 values. |
clone(m) |
Creates a copy of matrix m. |
identity() |
Creates an identity matrix. |
scale(x, y, z) |
Creates a scale matrix. If the y and z scales are omitted, a uniform scale matrix of x is returned. |
translation(x, y, z) |
Creates a translation matrix to (x, y, z). |
x_rotation(angle) |
Creates a rotation matrix of angle radians about the x axis. |
y_rotation(angle) |
Creates a rotation matrix of angle radians about the y axis. |
z_rotation(angle) |
Creates a rotation matrix of angle radians about the z axis. |
rotation_about_axis(axis, angle) |
Creates a rotation matrix about an axis. The axis parameter can be any sequence of three values; the angle parameter should be in radians. |
xyz_rotation(x, y, z) |
Creates a matrix that has the combined effect of rotating around all three axes. |
gameobjects.vector2.Vector2
The Vector2 class represents a two-dimensional vector and can be used to store headings and positions in a 2D game. The components of a Vector2 object can be accessed via the x and y attributes, or through the index operator ([]). Vector2 objects support the mathematical operators.
Constructor
The constructor for Vector2 objects takes either two values for the x and y components of the vector, or a sequence of two values. If no parameters are given, the vector will default to (0, 0).
Attributes
Table A-7 lists the attributes for Vector2 objects.
Table A-7. Vector2 Attributes
Attribute |
Explanation |
x |
The x component of the vector. |
y |
The y component of the vector. |
length |
The length of the vector. This attribute can also be set to change the length of the vector. |
Methods
Table A-8 lists the methods for Vector2 objects.
Table A-8. Vector2 Methods
Method Name |
Explanation |
copy() |
Returns a copy of this vector. |
get_length() |
Returns the length of this vector. |
get_magnitude() |
Returns the magnitude (same as length) of this vector. |
normalize() |
Normalizes this vector, so that it has a length of 1. Also returns the vector. |
get_normalized() |
Returns a normalized copy of the vector. |
get_distance:to() |
Returns the distance from this vector to a point. |
Class Methods
The Vector2 class has a number of methods to construct new Vector2 objects (see Table A-9).
Table A-9. Vector2 Class Methods
Class Method Name |
Explanation |
from_iter(iterable) |
Creates a Vector2 object from an iterable of values. |
from_points(p1, p2) |
Creates a Vector2 object from two points. |
gameobjects.vector3.Vector3
The Vector3 class represents a 3D vector, which can be used to store headings and position in three-dimensional space. Vector3 objects are very similar to Vector2 objects but contain an extra attribute, z.
Constructor
The constructor for Vector3 objects takes either three values for the x, y, and z components of the vector, or a sequence of three values. If no parameters are given, the vector will default to (0, 0, 0).
Attributes
Table A-10 lists the attributes for Vector3 objects.
Table A-10. Vector2 Attributes
Attribute |
Explanation |
x |
The x component of the vector. |
y |
The y component of the vector. |
z |
The z component of the vector. |
length |
The length of the vector. This attribute can also be set to change the length of the vector. |
Methods
Table A-11 lists the methods for Vector3 objects.
Table A-11. Vector3 Methods
Method Name |
Explanation |
set(x, y, z) |
Sets the components of the vector to the float values. |
as_tuple() |
Returns the vector as a tuple of three values. |
get_length() |
Retrieves the length of the vector. |
get_magnitude() |
Retrieves the magnitude (same as length) of the vector. |
set_length() |
Sets the length of the vector. |
get_distance:to(p) |
Retrieves the distance from this vector to a point. |
normalize() |
Normalizes the vector, so that it has a length of 1. Also returns the vector. |
get_normalized() |
Returns a normalized copy of the vector. |
dot(other) |
Returns the dot-product of this vector with another vector. |
cross(other) |
Returns the cross-product of this vector with another vector. |
Class Methods
Table A-12 lists the class methods that can be used to create new Vector3 objects.
Table A-12. Vector3 Class Methods
Class Method Name |
Explanation |
from_points(p1, p2) |
Creates a Vector3 object between two points. |
from_iter(iterable) |
Creates a Vector3 object from an iterable of three values. |