Appearance#
Appearance is the base class for Costume and Background
The Appearance class contains all the logic common to both, e.g. scaling and rotating images. The child classes contain the actions that are specific to these classes (e.g. certain overlays).
All actions performed on the images can be found in the class ImageRenderer
Warning
You do not need instances of this class.
If you work with tokens, then you use the child class Costume.
If you work with the board, you use the child class Background.
Appearance#
- class miniworldmaker.appearances.appearance.Appearance(*args, **kwargs)[source]#
Base class of token costumes and board backgrounds
The class contains all methods and attributes to display and animate images of the objects, render text on the images or display overlays.
Public Data Attributes:
If True, the image is tiled over the background.
If True, costume will be rotated with token direction
If True, the image will be rotated by parent orientation before it is rotated.
Flips the costume or background.
Scales the actor to parent-size without remaining aspect-ratio.
If True, the image will be upscaled remaining aspect-ratio.
Defines a colored layer.
Defines a transparency.
transparent, 255: visible If value < 1, it will be multiplied with 255.
If True, the costume will be animated.
->See fill color
Is token filled with color?
see border color
border color of token
The border-size of token.
Sets text of appearance .
Performs all actions in image pipeline
Implemented in subclasses Costume and Background
image_manager
Public Methods:
__init__
()set_defaults
(rotatable, is_animated, ...)- rtype:
set_font
(font, font_size)set_animation_speed
(value)flip
(value)add_image
(source)Adds an image to the appearance
set_image
(source)Sets the displayed image of costume/background to selected index
add_images
(sources)Adds multiple images to background/costume.
animate
([loop])Animates the costume
the method is overwritten in subclasses costume and appearance
Create an array from costume or background.
from_array
(arr)Create a background or costume from array.
fill
(value)Set default fill color for borders and lines
get_color
(position)get_rect
()draw
(source, position, width, height)draw_on_image
(path, position, width, height)draw_color_on_image
(color, position, width, ...)__str__
()Return str(self).
set_text
(value)If dirty, the image will be reloaded.
update
()Loads the next image, called 1/frame
register
(method)Register method for decorator.
draw_shape_append
(shape, arguments)draw_shape_set
(shape, arguments)draw_image_append
(surface, rect)draw_image_set
(surface, rect)set_dirty
([value, status])Private Data Attributes:
_abc_impl
Private Methods:
_before_transformation_pipeline
()Called in get_image, if image is "dirty" (e.g.
_after_transformation_pipeline
()Called in get_image, if image is "dirty" (e.g.
_load_image
()Loads the image,
_update_draw_shape
()- rtype:
_inner_shape
()Returns inner shape of costume
_outer_shape
()Returns outer shape of costume
_inner_shape_arguments
()def setGets arguments for inner shape
_outer_shape_arguments
()Gets arguments for outer shape
- LOAD_NEW_IMAGE = 2#
- RELOAD_ACTUAL_IMAGE = 1#
- add_image(source)[source]#
Adds an image to the appearance
- Return type:
- Returns:
Index of the created image.
- add_images(sources)[source]#
Adds multiple images to background/costume.
Each source in sources parameter must be a valid parameter for
Appearance.cimage
- after_animation()[source]#
the method is overwritten in subclasses costume and appearance
Examples
The token will be removed after the animation - This can be used for explosions.
from miniworldmaker import * board = Board() token = Token() costume = token.add_costume("images/1.png") costume.add_image("images/2.png") costume.animate() @costume.register def after_animation(self): self.parent.remove() board.run()
- property alpha#
transparent, 255: visible If value < 1, it will be multiplied with 255.
Examples
from miniworldmaker import * board = Board(800,400) t = Token((600,250)) t.add_costume("images/alien1.png") t.costume.alpha = 50 t.width = 40 t.border = 1 board.run()
- Type:
defines transparency of Token
- Type:
0
- animate(loop=False)[source]#
Animates the costume
- Parameters:
loop – If loop = True, the animation will be processed as loop. (you can stop this with self.loop)
from miniworldmaker import * board = Board(80,40) robo = Token() robo.costume.add_images(["images/1.png"]) robo.costume.add_images(["images/2.png","images/3.png","images/4.png"]) robo.costume.animation_speed = 20 robo.costume.is_animated = True board.run()
- property animation_speed#
- property border#
The border-size of token.
The value is 0, if token has no border
- Returns:
int
- Return type:
_type_
- property border_color#
border color of token
- property color#
->See fill color
- property coloring#
Defines a colored layer.
coloring can be True or false. The color is defined by the attribute appearance.color.
- counter = 0#
- property dirty#
- property fill_color#
- property font_size#
- from_array(arr)[source]#
Create a background or costume from array. The array must be a
numpy.ndarray, which can be created with ``.to_colors_array
Examples
Convert grey default-background to gradient
from miniworldmaker import * board = Board() arr = board.background.to_colors_array() for x in range(len(arr)): for y in range(len(arr[0])): arr[x][y][0] = ((x +1 ) / board.width) * 255 arr[x][y][1] = ((y +1 ) /board.width) * 255 board.background.from_array(arr) board.run() board.background.from_array(arr) board.run()
Output:
- get_image()[source]#
If dirty, the image will be reloaded. The image pipeline will be processed, defined by “set_dirty”
- property image: Surface#
Performs all actions in image pipeline
- property images#
- property is_animated#
If True, the costume will be animated.
from miniworldmaker import * board = Board(80,40) robo = Token() robo.costume.add_images(["images/1.png"]) robo.costume.add_images(["images/2.png","images/3.png","images/4.png"]) robo.costume.animation_speed = 20 robo.costume.is_animated = True board.run()
- property is_centered#
- property is_filled#
Is token filled with color?
- property is_flipped#
Flips the costume or background. The image is mirrored over the y-axis of costume/background.
Examples
Flips actor:
from miniworldmaker import * board = Board() token = Token() token.add_costume("images/alien1.png") token.height= 400 token.width = 100 token.is_rotatable = False @token.register def act(self): if self.board.frame % 100 == 0: if self.costume.is_flipped: self.costume.is_flipped = False else: self.costume.is_flipped = True board.run()
- property is_rotatable#
If True, costume will be rotated with token direction
- property is_scaled#
Scales the actor to parent-size without remaining aspect-ratio.
- property is_scaled_to_height#
- property is_scaled_to_width#
- property is_textured#
If True, the image is tiled over the background.
Examples
Texture the board with the given image:
from miniworldmaker import * board = Board() background = board.add_background("images/stone.png") background.is_textured = True board.run()
Set texture size
from miniworldmaker import * board = Board() background = board.add_background("images/stone.png") background.is_textured = True background.texture_size = (15,15) board.run()
- Type:
- property is_upscaled#
If True, the image will be upscaled remaining aspect-ratio.
- property orientation#
If True, the image will be rotated by parent orientation before it is rotated.
Examples
Both tokens are moving up. The image of t2 is correctly aligned. t1 is looking in the wrong direction.
from miniworldmaker import * board = TiledBoard() t1 = Token((4,4)) t1.add_costume("images/player.png") t1.move() t2 = Token((4,5)) t2.add_costume("images/player.png") t2.orientation = - 90 t2.move() @t1.register def act(self): self.move() @t2.register def act(self): self.move() board.run()
- Type:
- set_defaults(rotatable, is_animated, animation_speed, is_upscaled, is_scaled_to_width, is_scaled_to_height, is_scaled, is_flipped, border)[source]#
- Return type:
- set_image(source)[source]#
Sets the displayed image of costume/background to selected index
- Return type:
- Parameters:
source – The image index or an image.
- Returns:
True, if image index exists
Examples
Add two images two background and switch to image 2
from miniworldmaker import * board = Board() background = board.add_background("images/1.png") background.add_image("images/2.png") background.set_image(1) board.run()
- property stroke_color#
see border color
- property text#
Sets text of appearance .. rubric:: Examples
explosion = Explosion(position=other.position.up(40).left(40)) explosion.costume.is_animated = True explosion.costume.text_position = (100, 100) explosion.costume.text = "100"
- to_colors_array()[source]#
Create an array from costume or background. The array can be re-written to appearance with
.from_array
Examples: :rtype:
ndarray
Convert a background image to grayscale
from miniworldmaker import * board = Board(600,400) board.add_background("images/sunflower.jpg") arr = board.background.to_colors_array() def brightness(r, g, b): return (int(r) + int(g) + int(b)) / 3 for x in range(len(arr)): for y in range(len(arr[0])): arr[x][y] = brightness(arr[x][y][0], arr[x][y][1], arr[x][y][2]) board.background.from_array(arr) board.run()
Output:
- property transparency#
Defines a transparency.
If
transparency``is ``True
, the che transparency value is defined by the attributeappearance.alpha