Now with some text as well (and I grant this python code to the public domain as well.)
import time import board import displayio import digitalio import vectorio import gamepadshift import terminalio BUTTON_LEFT = 128 BUTTON_UP = 64 BUTTON_DOWN = 32 BUTTON_RIGHT = 16 BUTTON_SELECT = 8 BUTTON_START = 4 BUTTON_A = 2 BUTTON_B = 1 print('About to begin.') for i in range(3,0,-1): print(i) time.sleep(0.2) circle = vectorio.Circle(10) circle2 = vectorio.Circle(6) display = board.DISPLAY palette = displayio.Palette(2) palette[0] = 0x000000 palette[1] = 0xFFFFFF palette.make_transparent(0) def get_char_tile(c, x, y): g = terminalio.FONT.get_glyph(ord(c)) tile = displayio.TileGrid(g.bitmap, pixel_shader=palette, tile_width=g.width, tile_height=g.height, default_tile=g.tile_index, x=x, y=y) return tile def get_string_group(s, x, y): text_w, text_h = terminalio.FONT.get_bounding_box() group = displayio.Group(max_size=len(s)) for i, c in enumerate(s): group.append(get_char_tile(c, x+text_w*i, y)) return group palette2 = displayio.Palette(2) palette2[0] = 0xFF0000 palette2[1] = 0x0000FF palette2.make_transparent(0) vect = vectorio.VectorShape(shape=circle, pixel_shader=palette) vect2 = vectorio.VectorShape(shape=circle2, pixel_shader=palette2, x=5, y=-5) s = get_string_group("Hey World!",15,0) vect3 = vectorio.VectorShape(shape=vectorio.Rectangle(2, 10), pixel_shader=palette2) move_group = displayio.Group() move_group.append(vect) move_group.append(vect2) group = displayio.Group() group.append(move_group) group.append(s) group.append(vect3) display.show(group) #display.show(group2) group.x = 20 group.y = 20 pad = gamepadshift.GamePadShift(digitalio.DigitalInOut(board.BUTTON_CLOCK), digitalio.DigitalInOut(board.BUTTON_OUT), digitalio.DigitalInOut(board.BUTTON_LATCH)) button = 0 while button != BUTTON_START: button = pad.get_pressed() if button & BUTTON_UP == BUTTON_UP: move_group.y += -1 if button & BUTTON_DOWN == BUTTON_DOWN: move_group.y += 1 if button & BUTTON_LEFT == BUTTON_LEFT: move_group.x += -1 if button & BUTTON_RIGHT == BUTTON_RIGHT: move_group.x += 1 time.sleep(0.01) move_group.x %= display.width move_group.y %= display.height