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:

counter

RELOAD_ACTUAL_IMAGE

LOAD_NEW_IMAGE

font_size

animation_speed

is_textured

If True, the image is tiled over the background.

is_rotatable

If True, costume will be rotated with token direction

is_centered

orientation

If True, the image will be rotated by parent orientation before it is rotated.

is_flipped

Flips the costume or background.

is_scaled

Scales the actor to parent-size without remaining aspect-ratio.

is_upscaled

If True, the image will be upscaled remaining aspect-ratio.

is_scaled_to_width

is_scaled_to_height

fill_color

coloring

Defines a colored layer.

transparency

Defines a transparency.

alpha

transparent, 255: visible If value < 1, it will be multiplied with 255.

is_animated

If True, the costume will be animated.

color

->See fill color

is_filled

Is token filled with color?

stroke_color

see border color

border_color

border color of token

border

The border-size of token.

text

Sets text of appearance .

images

image

Performs all actions in image pipeline

dirty

board

Implemented in subclasses Costume and Background

image_manager

Public Methods:

__init__()

set_defaults(rotatable, is_animated, ...)

rtype:

Appearance

after_init()

set_font(font, font_size)

set_animation_speed(value)

flip(value)

get_text_width()

get_text_height()

remove_last_image()

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

after_animation()

the method is overwritten in subclasses costume and appearance

to_colors_array()

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)

get_image()

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:

None

_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:

int

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()
after_init()[source]#
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()
Textured image
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#
abstract property board: Board#

Implemented in subclasses Costume and Background

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#
draw(source, position, width, height)[source]#
draw_color_on_image(color, position, width, height)[source]#
draw_image_append(surface, rect)[source]#
draw_image_set(surface, rect)[source]#
draw_on_image(path, position, width, height)[source]#
draw_shape_append(shape, arguments)[source]#
draw_shape_set(shape, arguments)[source]#
fill(value)[source]#

Set default fill color for borders and lines

property fill_color#
flip(value)[source]#
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:

converted image
get_color(position)[source]#
get_image()[source]#

If dirty, the image will be reloaded. The image pipeline will be processed, defined by “set_dirty”

get_rect()[source]#
get_text_height()[source]#
get_text_width()[source]#
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()
Textured image Textured image
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()
Textured image>

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()
Textured image
Type:

bool

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()
Textured image
Type:

bool

register(method)[source]#

Register method for decorator. Registers method to token or background.

remove_last_image()[source]#
set_animation_speed(value)[source]#
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:

Appearance

set_dirty(value='all', status=1)[source]#
set_font(font, font_size)[source]#
set_image(source)[source]#

Sets the displayed image of costume/background to selected index

Return type:

bool

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()
set_text(value)[source]#
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:

converted image
property transparency#

Defines a transparency.

If transparency``is ``True, the che transparency value is defined by the attribute appearance.alpha

update()[source]#

Loads the next image, called 1/frame