The Nature of Code with p5 Python: exercise i.1
Date: 2020-01-16 | p5 | p5py | thenatureofcode | python |
Here's a quick video of my solution:
Here's the code:
# prompt - create a random walker that has a tendency to move down and to the right
from p5 import *
from random import randint
from typing import Optional
class Walker:
x: float
y: float
def __init__(self, x: float = 0, y: float = 0) -> None:
self.x = x
self.y = y
def move(self, x_offset: float, y_offset: float) -> None:
self.x += x_offset
self.y += y_offset
def display(self) -> None:
circle((self.x, self.y), 1)
walker: Optional[Walker] = None
should_start: bool = False
def setup():
global walker
size(640, 640)
stroke(Color("#be403b"))
background(204)
walker = Walker(width / 2, height / 2)
def draw():
global walker, should_start
if should_start:
walker.move(randint(-1,1) + randint(0, 1), randint(-1,1) + randint(0,1))
walker.display()
def key_pressed():
global should_start
if key == " ":
should_start = True
def main():
run()
main()
A quick explanation of what's going on:
- we create a walker class with the ability to store its location, move, and display itself on line 26
- on 44 we setup our canvas to draw on and create a walker on it
- on 53 we tell the walker to move and display each time we draw. We accomplish the down and right bias by just adding in another (0, 1) in that direction. Rudimentary to be sure, but it works.
- then on 66 and 69 we start our program
You can disregard the key_pressed
and should_start
business on 56 and 60 as those are just to make it easier for me to capture the animations.
Want more like this?
The best / easiest way to support my work is by subscribing for future updates and sharing with your network.