Functions | |
int | _Flyweight_GenerateBigResource (int numImages, int width, int height) |
Generate a big resource, in this case, a text master "image" of the specified height, containing the specified number of smaller images laid out horizontally, using the given width for each image. | |
None | _Flyweight_ClearDisplay (list[bytearray] display) |
Clear the "display" to a background image, erasing whatever was there before. | |
list[bytearray] | _Flyweight_GenerateDisplay (int width, int height) |
Generate a display area in which to render the big resource. | |
None | _Flyweight_ShowDisplay (list[bytearray] display) |
Render the display to the screen. | |
None | _Flyweight_MoveFlyweights (list[Flyweight_Class] flyweightInstances, int display_width, int display_height) |
Move the given flyweight instances within the display, bouncing them off the edges of the display. | |
None | _Flyweight_RenderFlyweights (list[Flyweight_Class] flyweightInstances, list[bytearray] displayArea) |
Render the image into the display, once for each flyweight instance. | |
float | GenerateVelocity () |
Generate a random velocity, which includes a speed and a direction. | |
list[Flyweight_Class] | _Flyweight_GenerateFlyweightClasses (int bigResourceId, int numFlyweights, int image_width, int image_height, int display_width, int display_height) |
Helper method to generate the specified number of flyweight class instances and associate those instances with individual contexts and a single big resource. | |
def | Flyweight_Exercise () |
Example of using the Flyweight Pattern. | |
|
protected |
Clear the "display" to a background image, erasing whatever was there before.
display | A list of bytearray s representing the display. |
Definition at line 56 of file flyweight_exercise.py.
Referenced by DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_GenerateDisplay(), and DesignPatternExamples_python.flyweight.flyweight_exercise.Flyweight_Exercise().
|
protected |
Generate a big resource, in this case, a text master "image" of the specified height, containing the specified number of smaller images laid out horizontally, using the given width for each image.
If there are 5 images requested, then create a single image that is 5 * width
wide and 1 * height
tall.
numImages | Number of images to images to store in the single big resource (horizontally), between 1 and 9. |
width | Width of the "text" image, in characters. Minimum width is 3. |
height | Height of the "text" image, in characters. Minimum height is 3. |
Definition at line 29 of file flyweight_exercise.py.
Referenced by DesignPatternExamples_python.flyweight.flyweight_exercise.Flyweight_Exercise().
|
protected |
Generate a display area in which to render the big resource.
width | Width of the display area. |
height | Height of the display area. |
Definition at line 70 of file flyweight_exercise.py.
References DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_ClearDisplay().
Referenced by DesignPatternExamples_python.flyweight.flyweight_exercise.Flyweight_Exercise().
|
protected |
Helper method to generate the specified number of flyweight class instances and associate those instances with individual contexts and a single big resource.
The image and display sizes are provided so as to randomize the position of each flyweight within the display.
bigResourceId | ID of the big resource to use.` |
numFlyweights | Number of flyweight instances to create. |
image_width | Width of the big resource image. |
image_height | Height of the big resource image. |
display_width | Width of the display in which the flyweight is to be rendered. |
display_height | Height of the display in which the flyweight is to be rendered. |
Definition at line 181 of file flyweight_exercise.py.
References DesignPatternExamples_python.flyweight.flyweight_exercise.GenerateVelocity().
Referenced by DesignPatternExamples_python.flyweight.flyweight_exercise.Flyweight_Exercise().
|
protected |
Move the given flyweight instances within the display, bouncing them off the edges of the display.
The display size and image size are provided here
flyweightInstances | List of Flyweight_Class instances to move. |
display_width | Width of display. |
display_height | Height of display. |
Definition at line 102 of file flyweight_exercise.py.
Referenced by DesignPatternExamples_python.flyweight.flyweight_exercise.Flyweight_Exercise().
|
protected |
Render the image into the display, once for each flyweight instance.
flyweightInstances | List of Flyweight_Class instances to render. |
displayArea | The "display" in which to render. |
Definition at line 139 of file flyweight_exercise.py.
Referenced by DesignPatternExamples_python.flyweight.flyweight_exercise.Flyweight_Exercise().
|
protected |
Render the display to the screen.
display | A list of bytearray s representing the display. |
Definition at line 84 of file flyweight_exercise.py.
Referenced by DesignPatternExamples_python.flyweight.flyweight_exercise.Flyweight_Exercise().
def Flyweight_Exercise | ( | void | ) |
Example of using the Flyweight Pattern.
The Flyweight pattern is used when a large object needs to be represented by a much lighter weight class, possibly multiple instances of said light-weight class.
In this example, a large object is represented by a so-called "big resource" (a two-dimensional array of text characters) containing multiple images, one associated with each flyweight class. Flyweight classes that represent offset into the big resource, along with position and velocity, are attached to the big resource image so they all share the same image but have different positions and velocities. The image is rendered to a display area through the Flyweight class. The Flyweight class instances then have their positions updated, bouncing off the edges of the display area 60 times a second. This continues for 1000 iterations or until a key is pressed.
Definition at line 224 of file flyweight_exercise.py.
References DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_ClearDisplay(), DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_GenerateBigResource(), DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_GenerateDisplay(), DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_GenerateFlyweightClasses(), DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_MoveFlyweights(), DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_RenderFlyweights(), and DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_ShowDisplay().
float GenerateVelocity | ( | void | ) |
Generate a random velocity, which includes a speed and a direction.
The velocity is 0.2 to 1.0 (in increments of 0.2) and the direction is either + or -.
Definition at line 153 of file flyweight_exercise.py.
Referenced by DesignPatternExamples_python.flyweight.flyweight_exercise._Flyweight_GenerateFlyweightClasses().