def main():
    text_input = get_raw_input()
    int_code = IntCode(text_input)

    int_code._int_code[0] = 2

    tiles = dict()

    score = 0
    paddle = Paddle()
    ball = Ball()
    while not int_code.finished:
        for co in tiles.keys():
            if tiles[co] == Tiles.PADDLE:
                paddle.x = co[0]
            elif tiles[co] == Tiles.BALL:
                ball.set_x_pos(co[0])

        ball.update_direction()

        if ball.direction == Directions.LEFT and paddle.x > ball.x:
            int_code.add_input(Joystick.LEFT)
        elif ball.direction == Directions.RIGHT and ball.x > paddle.x:
            int_code.add_input(Joystick.RIGHT)
        elif paddle.x > ball.x:
            int_code.add_input(Joystick.LEFT)
        elif paddle.x < ball.x:
            int_code.add_input(Joystick.RIGHT)
        else:
            int_code.add_input(Joystick.NEUTRAL)

        int_code.execute_till_halt()

        output_instructions = list(int_code.output_buffer.queue)

        i = 0
        while i + 2 < len(output_instructions):
            x, y, id_ = output_instructions[i:i + 3]
            if x == -1 and y == 0:
                score = id_
            else:
                tiles[(x, y)] = id_
            i += 3

        print_tiles(tiles)

    print('Score after all blocks are broken:', score)
Beispiel #2
0
def main():
    text_input = get_raw_input()
    int_code = IntCode(text_input)

    int_code.execute_till_halt()

    output_instructions = list(int_code.output_buffer.queue)
    tiles = dict()
    i = 0
    while i + 2 < len(output_instructions):
        tiles[(output_instructions[i],
               output_instructions[i + 1])] = output_instructions[i + 2]
        i += 3

    count = 0
    for tile in tiles.values():
        if tile == 2:
            count += 1

    print(count)