SHOW:
|
|
- or go back to the newest paste.
| 1 | - | from microbit import * |
| 1 | + | from microbit import * |
| 2 | - | |
| 2 | + | |
| 3 | - | sleep_time = 200 |
| 3 | + | sleep_time = 200 |
| 4 | - | warning_time = 5000 |
| 4 | + | warning_time = 5000 |
| 5 | - | |
| 5 | + | |
| 6 | - | class Pinger: |
| 6 | + | class Pinger: |
| 7 | - | |
| 7 | + | |
| 8 | - | def __init__(self): |
| 8 | + | def __init__(self): |
| 9 | - | self.direction = 1 |
| 9 | + | self.direction = 1 |
| 10 | - | self.x = 2 |
| 10 | + | self.x = 2 |
| 11 | - | self.y = 2 |
| 11 | + | self.y = 2 |
| 12 | - | |
| 12 | + | |
| 13 | - | def update(self): |
| 13 | + | def update(self): |
| 14 | - | display.set_pixel(self.x, self.y, 0) |
| 14 | + | display.set_pixel(self.x, self.y, 0) |
| 15 | - | if self.x >= 4: |
| 15 | + | if self.x >= 4: |
| 16 | - | self.x = 4 |
| 16 | + | self.x = 4 |
| 17 | - | self.direction = -self.direction |
| 17 | + | self.direction = -self.direction |
| 18 | - | elif self.x <= 0: |
| 18 | + | elif self.x <= 0: |
| 19 | - | self.x = 0 |
| 19 | + | self.x = 0 |
| 20 | - | self.direction = -self.direction |
| 20 | + | self.direction = -self.direction |
| 21 | - | |
| 21 | + | |
| 22 | - | self.x += self.direction |
| 22 | + | self.x += self.direction |
| 23 | - | display.set_pixel(self.x, self.y, 9) |
| 23 | + | display.set_pixel(self.x, self.y, 9) |
| 24 | - | |
| 24 | + | |
| 25 | - | |
| 25 | + | |
| 26 | - | class DinosaurDetector: |
| 26 | + | class DinosaurDetector: |
| 27 | - | |
| 27 | + | |
| 28 | - | def __init__(self): |
| 28 | + | def __init__(self): |
| 29 | - | self.horizontal_start = 0 |
| 29 | + | self.horizontal_start = 0 |
| 30 | - | self.vertical_start = 0 |
| 30 | + | self.vertical_start = 0 |
| 31 | - | self.reset() |
| 31 | + | self.reset() |
| 32 | - | |
| 32 | + | |
| 33 | - | def dinosaur_detected(self): |
| 33 | + | def dinosaur_detected(self): |
| 34 | - | horizontal_now = accelerometer.get_x() |
| 34 | + | horizontal_now = accelerometer.get_x() |
| 35 | - | vertical_now = accelerometer.get_y() |
| 35 | + | vertical_now = accelerometer.get_y() |
| 36 | - | |
| 36 | + | |
| 37 | - | return self.horizontal_start != horizontal_now or self.vertical_start != vertical_now |
| 37 | + | return self.horizontal_start != horizontal_now or self.vertical_start != vertical_now |
| 38 | - | |
| 38 | + | |
| 39 | - | def reset(self): |
| 39 | + | def reset(self): |
| 40 | - | self.horizontal_start = accelerometer.get_x() |
| 40 | + | self.horizontal_start = accelerometer.get_x() |
| 41 | - | self.vertical_start = accelerometer.get_y() |
| 41 | + | self.vertical_start = accelerometer.get_y() |
| 42 | - | |
| 42 | + | |
| 43 | - | |
| 43 | + | |
| 44 | - | display.scroll('Dino Detector', delay=100) |
| 44 | + | display.scroll('Dino Detector', delay=100)
|
| 45 | - | |
| 45 | + | |
| 46 | - | detector = DinosaurDetector() |
| 46 | + | detector = DinosaurDetector() |
| 47 | - | pinger = Pinger() |
| 47 | + | pinger = Pinger() |
| 48 | - | |
| 48 | + | |
| 49 | - | glass1 = Image("00000:00000:00900:00000:00000") |
| 49 | + | glass1 = Image("00000:00000:00900:00000:00000")
|
| 50 | - | glass2 = Image("00000:00900:09090:00900:00000") |
| 50 | + | glass2 = Image("00000:00900:09090:00900:00000")
|
| 51 | - | glass3 = Image("09990:90009:90009:90009:09990") |
| 51 | + | glass3 = Image("09990:90009:90009:90009:09990")
|
| 52 | - | glass4 = Image("09090:90009:00000:90009:09090") |
| 52 | + | glass4 = Image("09090:90009:00000:90009:09090")
|
| 53 | - | ripple_animation = [glass1, glass2, glass3, glass4, glass3, glass2, glass1] |
| 53 | + | ripple_animation = [glass1, glass2, glass3, glass4, glass3, glass2, glass1] |
| 54 | - | |
| 54 | + | |
| 55 | - | while True: |
| 55 | + | while True: |
| 56 | - | |
| 56 | + | |
| 57 | - | pinger.update() |
| 57 | + | pinger.update() |
| 58 | - | sleep(sleep_time) |
| 58 | + | sleep(sleep_time) |
| 59 | - | |
| 59 | + | |
| 60 | - | if detector.dinosaur_detected(): |
| 60 | + | if detector.dinosaur_detected(): |
| 61 | - | detector.reset() |
| 61 | + | detector.reset() |
| 62 | - | display.show(ripple_animation, delay=100) |
| 62 | + | display.show(ripple_animation, delay=100) |
| 63 | - | display.show(Image.GIRAFFE) |
| 63 | + | display.show(Image.GIRAFFE) |
| 64 | - | sleep(warning_time) |
| 64 | + | sleep(warning_time) |
| 65 | display.clear() |