Exerpad
🔥 0
0 XP
Exercise 4 · Chapter: Colour and TimeRequired+50 XP

Rainbow Wave

Fill the whole picture with colour bands, and slide them sideways.

For every column, work the colour out from the column plus the clock:

colour = COLOURS[(col + state["t"]) % len(COLOURS)]

Each column lands one step further along the colour list than its neighbour, so you get stripes. Adding t shifts every band by one each frame, so the whole rainbow appears to travel.

Nothing in this animation moves. No position changes. The colours just take turns, and your eye does the rest — which is a fair description of how a lot of screen effects actually work.

Expected output
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEFABCD
Need a hint?
3 available · costs 5 XP each
python
COLOURS = ["red", "orange", "gold", "lime", "cyan", "violet"]


def new_game():
return {"t": 0}


def update(state, keys):
state["t"] = state["t"] + 1
return state


def draw(state):
grid = blank_grid()
# For every column, pick COLOURS[(col + t) % len(COLOURS)] and paint it.
return grid