Note
Go to the end to download the full example code.
Snake game
Simple snake game based on bitmap rendering. Work in progress.
from collections import deque
import numpy as np
from rendercanvas.auto import RenderCanvas, loop
canvas = RenderCanvas(present_method=None, update_mode="continuous")
context = canvas.get_context("bitmap")
world = np.zeros((120, 160), np.uint8)
pos = [100, 100]
direction = [1, 0]
q = deque()
@canvas.add_event_handler("key_down")
def on_key(event):
    key = event["key"]
    if key == "ArrowLeft":
        direction[0] = -1
        direction[1] = 0
    elif key == "ArrowRight":
        direction[0] = 1
        direction[1] = 0
    elif key == "ArrowUp":
        direction[0] = 0
        direction[1] = -1
    elif key == "ArrowDown":
        direction[0] = 0
        direction[1] = 1
@canvas.request_draw
def animate():
    pos[0] += direction[0]
    pos[1] += direction[1]
    if pos[0] < 0:
        pos[0] = world.shape[1] - 1
    elif pos[0] >= world.shape[1]:
        pos[0] = 0
    if pos[1] < 0:
        pos[1] = world.shape[0] - 1
    elif pos[1] >= world.shape[0]:
        pos[1] = 0
    q.append(tuple(pos))
    world[pos[1], pos[0]] = 255
    while len(q) > 20:
        old_pos = q.popleft()
        world[old_pos[1], old_pos[0]] = 0
    context.set_bitmap(world)
loop.run()
Gallery generated by Sphinx-Gallery
Interactive example
This uses Pyodide. If this does not work, your browser may not have sufficient support for wasm/pyodide/wgpu (check your browser dev console).