View difference between Paste ID: GJ9kS5qu and SwGqEGJk
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()