예제 #1
0
def deal_with_command(s):
    if s[0] != ID:
        return 0

    if s[1] != ord(b'S') and s[1] != ord(b'R') and s[1] != ord(b'Q'):
        return 0

    if s[1] == ord(b'S'):
        for i in range(4, 8, 1):
            speed[i - 4] = s[i]
        set_car_speed()

    st = struct.pack('4s4B6i', s[0:4], speed[0], speed[1], speed[2], speed[3],
                     compass.get_x(), compass.get_y(), compass.get_z(),
                     accelerometer.get_x(), accelerometer.get_y(),
                     accelerometer.get_z())
    uart.write(st)

    sleep(20)

    if s[1] == ord(b'R'):
        display.show(Image.SAD)
        uart.write('+++')
        for i in range(4, 8, 1):
            speed[i - 4] = 0
        set_car_speed()
        sleep(1000)
        reset()
    return 1
예제 #2
0
def place1x1Ship(playerSeaX, playerSeaY):
    posX = 0
    posY = 0
    display.scroll("1X1 ship")
    sleep(10000)
    posX = button_a.get_presses()
    posY = button_b.get_presses()
    if posX > 4:
        display.scroll("Invalid position, please try again")
        microbit.reset()
    if posY > 4:
        display.scroll("Invalid position, please try again")
        microbit.reset()
    playerSeaX.append(posX)
    playerSeaY.append(posY)
예제 #3
0
while True:
    sleep(100)
    if -256 < accelerometer.get_y() < 450:
        bird = max(0, bird - 1)
    elif 568 < accelerometer.get_y() < 1024:
        bird = min(4, bird + 1)

    display.clear()
    display.set_pixel(0, bird, 9)

    pos_terrain = pos // terrain_multiplier
    lost_status = False
    for column, (top,
                 bottom) in enumerate(terrain[pos_terrain:pos_terrain + 5]):
        for y in range(top):
            display.set_pixel(column, y, 4)
            if column == 0 and bird == y:
                lost_status = True
        for y in range(bottom):
            display.set_pixel(column, 4 - y, 4)
            if column == 0 and bird == (4 - y):
                lost_status = True
    if lost_status:
        display.show(Image.SAD)
        music.play(music.FUNERAL)
        reset()
    pos += 1
    if pos_terrain > len(terrain):
        pos = 0
예제 #4
0
        plot(ballX, ballY, brightness[2])        # Turn-on LED (ball) at new position

    # Other cases where ball is either rising or falling
    else:
        # Debug code:
        print("ballX =" + str(ballX))       # View print() output using REPL
        
        plot(oldBallX, oldBallY, brightness[0])  # Turn-off LED at old position
        plot(ballX, ballY, brightness[2])        # Turn-on LED at new position

    # Make ball speed-up as it falls and slow-down as it rises.
    delay = 128 - 8 * ballX
    sleep(delay)

    if button_a.is_pressed():
        display.scroll(hitCount)            # Show current score

# End of "while gameOn:" loop
# ===========================
display.scroll("Game Over,")
if hitCount >= maxScore:
    display.scroll(" You won.")
    display.show(hapFace)
else:
    display.scroll(" Micro:bit won.")
    display.show(sadFace)
sleep(3000)
reset()        # Start a new game.

# EOF
예제 #5
0
while True:
    sleep(100)
    if -256 < accelerometer.get_y() < 450:
        bird = max(0, bird - 1)
    elif 568 < accelerometer.get_y() < 1024:
        bird = min(4, bird + 1)

    display.clear()
    display.set_pixel(0, bird, 9)

    pos_terrain = pos // terrain_multiplier
    lost_status = False
    for column, (top, bottom) in enumerate(
            terrain[pos_terrain:pos_terrain + 5]):
        for y in range(top):
            display.set_pixel(column, y, 4)
            if column == 0 and bird == y:
                lost_status = True
        for y in range(bottom):
            display.set_pixel(column, 4 - y, 4)
            if column == 0 and bird == (4 - y):
                lost_status = True
    if lost_status:
        display.show(Image.SAD)
        music.play(music.FUNERAL)
        reset()
    pos += 1
    if pos_terrain > len(terrain):
        pos = 0
예제 #6
0
    field = m.compass.get_field_strength()
    t = time.ticks_ms()  # pylint: disable=no-member

    if not crossing and abs(field - baseline) > THRESHOLD:
        crossing = True
        delta = t - last_change
        if delta > TIME_LIMIT:
            num = num + 1
            update_temperature()
            send_single_event(t, num)
            last_change = t
        update_display()
    elif crossing and abs(field - baseline) <= THRESHOLD:
        crossing = False
        update_display()

    if t - last_sync >= SYNC_TIME:
        sync_data()

    if m.button_a.was_pressed():
        baseline = m.compass.get_field_strength()  # Update baseline
        show_num = not show_num
        if not show_num:
            m.display.clear()
        else:
            send_full_log()
        update_display()
    elif m.button_b.was_pressed():
        remove_files()
        m.reset()
        plot(ballX, ballY, brightness[2])  # Turn-on LED (ball) at new position

    # Other cases where ball is either rising or falling
    else:
        # Debug code:
        print("ballX =" + str(ballX))  # View print() output using REPL

        plot(oldBallX, oldBallY, brightness[0])  # Turn-off LED at old position
        plot(ballX, ballY, brightness[2])  # Turn-on LED at new position

    # Make ball speed-up as it falls and slow-down as it rises.
    delay = 128 - 8 * ballX
    sleep(delay)

    if button_a.is_pressed():
        display.scroll(hitCount)  # Show current score

# End of "while gameOn:" loop
# ===========================
display.scroll("Game Over,")
if hitCount >= maxScore:
    display.scroll(" You won.")
    display.show(hapFace)
else:
    display.scroll(" Micro:bit won.")
    display.show(sadFace)
sleep(3000)
reset()  # Start a new game.

# EOF
예제 #8
0
 def reset(self):
     print("reset")
     microbit.reset()