Ejemplo n.º 1
0
 def ai_move(self):
     wht_default = Records(self.size, [0, 0], self)
     # If there are no white moves available after a valid black turn.
     if wht_default.turns_avail is False:
         print("No white moves available!")
         wht_default.add_skipped_turn()
         self.player_color(self.color)
         blk_test = Records(self.size, [0, 0], self)
         # If no more possible black moves, declare a winner.
         if blk_test.turns_avail is False:
             print("No black moves available!")
             print(blk_test.winner_is(blk_test.score_counter("black"),
                   blk_test.score_counter("white")))
             self.black_score = blk_test.score_counter("black")
             self.winner_declared = True
             turtle.bye()
     else:
         to_play = wht_default.best_move
         wht_default.play_ai_move(to_play)
         print("White is thinking.....")
         print("White plays coordinate {}".format(to_play[:2]))
         self.comp_draw_piece(to_play)
         for entry in wht_default.will_flip:
             x_coord = entry[0]
             y_coord = entry[1]
             self.draw_piece(x_coord, y_coord, self.color)
         # If no more open squares after white plays, declare a winner.
         if wht_default.is_winner() is True:
             print(wht_default.winner_is(wht_default.score_counter("black"),
                   wht_default.score_counter("white")))
             self.black_score = wht_default.score_counter("black")
             self.winner_declared = True
             turtle.bye()
         else:
             print("Current score - Black: {}, White: {}".format
                   (wht_default.score_counter("black"),
                    wht_default.score_counter("white")))
             blk_test = Records(self.size, [0, 0], self)
             # After white goes, determine if there is a possible black move.
             if blk_test.turns_avail is False:
                 print("No black moves available!")
                 blk_test.add_skipped_turn()
                 self.player_color(self.color)
                 white_test = Records(self.size, [0, 0], self)
                 # If no possible black or white move, declare a winner.
                 if white_test.turns_avail is False:
                     print("No white moves available!")
                     print(white_test.winner_is(white_test.score_counter
                           ("black"), white_test.score_counter("white")))
                     self.black_score = white_test.score_counter("black")
                     self.winner_declared = True
                     turtle.bye()
                 else:
                     self.ai_move()
Ejemplo n.º 2
0
def test_chunk_chaining_with_token():
    records = Records(salt='hello world')
    for n in range(36):
        records.write(id=f"id-{n + 1}", content=f"hello {n + 1}")

    chunk = records.chunk(token=None)
    assert chunk.count == 10
    assert chunk.token == 'aGVsbG8gd29ybGQxMA=='

    chunk = records.chunk(token=records._encode_token(-235))
    assert chunk.count == 10
    assert chunk.token == 'aGVsbG8gd29ybGQxMA=='

    with py_raises(ValueError) as error:
        chunk = records.chunk(token='EOF')

    chunk = records.chunk(token=records._encode_token(235))
    assert chunk.count == 0
    assert chunk.token == 'EOF'

    with py_raises(ValueError) as error:
        chunk = records.chunk(token='azerty')

    with py_raises(ValueError) as error:
        chunk = records.chunk(token='12345')
Ejemplo n.º 3
0
Archivo: main.py Proyecto: Velnbur/labs
def process(path_to_ini: str):
    """ Program main function """
    input_paths, output_path = load_ini(path_to_ini)
    records = Records()
    load(records, input_paths["csv"], input_paths["json"],
         input_paths["encoding"])
    records.output(output_path["fname"], output_path["encoding"])
Ejemplo n.º 4
0
def _read_log(fname):
    """
    Read a log file 'fname' to produce instance of Config and Records.
    """

    print(f'Reading data from: {fname}')

    cf = Config()
    rs = Records()

    with open(fname, 'r') as f:
        cf.readin(f)
        skip_lines(3, f)
        rs.runs = [int(f.readline().split()[2])]
        rs.seed = [int(f.readline().split()[2])]
        rs.lattice_dims = [int(x) for x in f.readline().split()[2:]]
        skip_lines(4, f)
        while True:
            r = Records.read(f)
            if r == '' or r[0] == '\n':
                break
            rs.add(r)

    print(f'read in: {len(rs.inds)} records')

    return cf, rs
Ejemplo n.º 5
0
    def test_that_it_writes_multi_line_data_to_file(self):
        # given
        records = Records(
            (SensorFake("aa"), SensorFake("bb"), SensorFake("cc")))

        test_output_file = "/tmp/ultra_garden_test_multi"
        with suppress(FileNotFoundError):
            os.remove(test_output_file)

        now = datetime.now()
        expected_content = """var chartData = [
{{  date: new Date("{0}"), aa: 1, bb: 2, cc: 3  }},
{{  date: new Date("{0}"), aa: 4, bb: 5, cc: 6  }},
{{  date: new Date("{0}"), aa: 7, bb: 8, cc: 9  }},
{{  date: new Date("{0}"), aa: 10, bb: 11, cc: 12  }},
{{  date: new Date("{0}"), aa: 13, bb: 14, cc: 15  }},
];""".format(now.strftime('%Y-%m-%dT%H:%M'))

        # when
        for record in range(5):
            for i, s in enumerate(records.sensors, 1):
                s.value = len(records.sensors) * record + i
            records.write_values(test_output_file)

        # then
        with open(test_output_file) as f:
            self.assertEqual(expected_content, f.read())
Ejemplo n.º 6
0
def test_is_occupied():
    r = Records(8, [0, 0], Board(8))
    r.plays_used_coord_only = [[0, 0]]
    r.plays_used = [[0, 0, "white"]]
    assert (r.is_occupied([[0, 1], [1, 1], [1, 0]]) == [])
    assert (r.is_occupied([[0, 1], [0, 0], [1, 1], [2, 1],
                           [2, 0]]) == [[0, 0, "white"]])
Ejemplo n.º 7
0
 def board_click(self, x, y):
     x = self.correct_coordinate(x)
     y = self.correct_coordinate(y)
     proposed_move = [x, y]
     # If click it outside of the boundaries of the board, do nothing.
     if x == -1 or y == -1:
         pass
     else:
         records = Records(self.size, proposed_move, self)
         records_check = records.record_validation(proposed_move)
         if records_check is False:
             pass
         else:
             self.draw_piece(x, y, self.player_color(self.color))
             for entry in records.will_flip:
                 x_coord = entry[0]
                 y_coord = entry[1]
                 self.draw_piece(x_coord, y_coord, self.color)
             print("End of {}'s turn!".format(self.color))
             # If no more open squares, will announce the winner.
             if records.is_winner() is True:
                 print(records.winner_is(records.score_counter("black"),
                       records.score_counter("white")))
                 self.black_score = records.score_counter("black")
                 self.winner_declared = True
                 turtle.bye()
             else:
                 print("Current score - Black: {}, White: {}".format
                       (records.score_counter("black"),
                        records.score_counter("white")))
                 self.ai_move()
Ejemplo n.º 8
0
def test_player_color():
    r = Records(2, [0, 0], Board(2))
    r.plays_used = [[0, 0, "white"], [0, 1, "black"], [1, 1, "white"]]
    r.skipped_turns = 0
    assert (r.player_color() == "white")
    r.skipped_turns = 1
    assert (r.player_color() == "black")
    def run(self):

        print("starting run")
        self.records = Records()
        # print(len(self.requestList))
        # print(self.requestList)
        self.startIndex = 0

        endPos = cylinders
        direction = 1  # values 1 or -1
        while len(self.requestList) > 0:
            self.activeRequestQueue = []
            for i in range(self.queueSize):
                #print(i)
                if len(self.requestList) > 0:
                    self.activeRequestQueue.append(self.requestList.pop(0))
            while len(self.activeRequestQueue) > 0:
                for track in range(self.headPos, endPos, direction):
                    if track in self.activeRequestQueue:
                        # print(track)
                        self.nextTrack = track
                        self.activeRequestQueue.remove(track)
                        self.records.addRecord(self.headPos, self.nextTrack)
                        self.headPos = self.nextTrack
                    if track == 199:
                        direction *= -1
                        endPos = -1

                    if track == 0:
                        endPos = cylinders
                        direction *= -1
        print(self.records)
Ejemplo n.º 10
0
    def run(self):
        print("starting run")
        self.records = Records()
        print(len(self.requestList))
        print(self.requestList)
        self.startIndex = 0
        self.requestList.sort()
        finished = False
        endPos = cylinders
        direction = 1  # values 1 or -1
        while len(self.requestList) > 0:
            for track in range(self.headPos, endPos, direction):
                if track in self.requestList:
                    print(track)
                    self.nextTrack = track
                    self.requestList.remove(track)
                    self.records.addRecord(self.headPos, self.nextTrack)
                    self.headPos = self.nextTrack
                if track == 199:
                    direction *= -1
                    endPos = -1

                if track == 0:
                    endPos = cylinders
                    direction *= -1
        print(self.records)
Ejemplo n.º 11
0
def test_is_winner():
    r = Records(2, [0, 0], Board(2))
    r.plays_used = [[0, 0, "white"]]
    r.total_pieces = 2
    assert (r.is_winner() is False)
    r.plays_used = [[0, 0, "white"], [0, 1, "black"]]
    assert (r.is_winner() is True)
Ejemplo n.º 12
0
def test_winner_is():
    r = Records(2, [0, 0], Board(2))
    assert (r.winner_is(0, 0) == "Tie! Each player has 0 points.")
    assert (r.winner_is(3, 2) == "Black wins with 3 points, defeating white "
            "with only 2 points!")
    assert (r.winner_is(2, 3) == "White wins with 3 points, defeating black "
            "with only 2 points!")
Ejemplo n.º 13
0
def test_to_flip():
    r = Records(8, [0, 0], Board(8))
    r.color = "black"
    assert (r.to_flip([1, 1], [3, 4, "white"]) == [])
    assert (r.to_flip([1, 1], [7, 7, "white"]) == [])
    assert (r.to_flip([1, 0], [3, 4, "white"]) == [[3, 4, "white"],
                                                   ["Valid move"]])
Ejemplo n.º 14
0
def test_index_of_best_move():
    r = Records(8, [0, 0], Board(8))
    r.best_move = [0, 0]
    r.legal_moves_avail = [[0, 0], [0, 1]]
    r.turns_avail = False
    assert (r.index_of_best_move() is None)
    r.turns_avail = True
    assert (r.index_of_best_move() == 0)
Ejemplo n.º 15
0
    def init_project(self):
        """Common code for initialising project"""
        self.load_project()

        self.records = Records(self.db_file, self.index_file, self.passfile,
                               self.config.options['num_backups'],
                               self.config.options['backup_freq'])
        self.register = Register(self, self.records, self.project_name)
Ejemplo n.º 16
0
 def __init__(self):
     self.garden = Garden()
     self.records = Records(sensors=self.garden.sensors)
     self.scheduler = BackgroundScheduler({
         'apscheduler.executors.default': {
             'class': 'apscheduler.executors.pool:ThreadPoolExecutor',
             'max_workers': '1'
         }
     })
Ejemplo n.º 17
0
def _records():
    items = [
        dict(id="id-{}".format(n + 1), text='hello world') for n in range(5)
    ]

    records = Records()
    for item in items:
        records.write(**item)

    return records
Ejemplo n.º 18
0
def test_ideal_move():
    r = Records(8, [0, 0], Board(8))
    r.turns_avail = False
    assert (r.ideal_move() is None)
    r.turns_avail = True
    r.legal_moves_avail = [[1, 6], [2, 4], [2, 6], [3, 7]]
    r.total_flips_avail = [[[2, 5, 'white'], [3, 4, 'black']],
                           [[3, 4, 'white']], [[3, 5, 'white']],
                           [[3, 6, 'white'], [3, 5, 'black'], [3, 4, 'black']]]
    assert (r.ideal_move() == [3, 7])
Ejemplo n.º 19
0
    def run(self):
        print("starting run")
        self.records = Records()
        print(len(self.queue))
        for i in range(len(self.queue)):
            self.nextTrack = self.accessNextTrack()
            self.records.addRecord(self.currentTrack, self.nextTrack)

            self.currentTrack = self.nextTrack

        print(self.records)
Ejemplo n.º 20
0
def _context():
    print("getting a new context")

    channel = channels['universe']
    channel.store = Records(salt='hello there')

    class Context:
        def __init__(self, **kwargs):
            self.__dict__.update(kwargs)

    return Context(channel=channel)
    def run(self):
        self.queue.reverse()
        print("starting run")
        self.records = Records()
        print("length of request list: " + str(len(self.queue)))
        for i in range(len(self.queue)):
            self.nextTrack = self.accessNextTrack()
            self.records.addRecord(self.currentTrack, self.nextTrack)

            self.currentTrack = self.nextTrack

        print(self.records)
Ejemplo n.º 22
0
def test_box_around():
    r = Records(8, [0, 0], Board(8))
    assert (r.box_around([0, 0]) == [[0, 1], [1, 1], [1, 0]])
    assert (r.box_around([0, 1]) == [[0, 2], [0, 0], [1, 2], [1, 1], [1, 0]])
    assert (r.box_around([0, 7]) == [[0, 6], [1, 7], [1, 6]])
    assert (r.box_around([3, 4]) == [[2, 5], [2, 4], [2, 3], [3, 5], [3, 3],
                                     [4, 5], [4, 4], [4, 3]])
    assert (r.box_around([1, 7]) == [[0, 7], [0, 6], [1, 6], [2, 7], [2, 6]])
    assert (r.box_around([1, 0]) == [[0, 1], [0, 0], [1, 1], [2, 1], [2, 0]])
    assert (r.box_around([7, 0]) == [[6, 1], [6, 0], [7, 1]])
    assert (r.box_around([7, 1]) == [[6, 2], [6, 1], [6, 0], [7, 2], [7, 0]])
    assert (r.box_around([7, 7]) == [[6, 7], [6, 6], [7, 6]])
def _test():
    # 無作為にQuizの成績を作る
    random_random = random.random
    random_randrange = random.randrange
    random_sample = random.sample
    LANGS = 'Japanese Chinese Korean English'.split()
    LEN_LANGS_PLUS1 = len(LANGS) + 1
    records = Records(filepath='./test_records.json')
    today = datetime.date.today().isoformat()
    for i in range(50):
        n_answered = random_randrange(10, 20)
        records.add(mode='endless',
                    result={
                        'date':
                        today,
                        'n_cleared':
                        random_randrange(0, n_answered),
                        'n_answered':
                        n_answered,
                        'langs':
                        random_sample(LANGS,
                                      random_randrange(1, LEN_LANGS_PLUS1)),
                    })
    for i in range(50):
        time = random_random() * 300
        n_answered = random_randrange(10, 20)
        n_cleared = random_randrange(0, n_answered)
        records.add(mode='timeattack',
                    result={
                        'date':
                        today,
                        'points':
                        round(time * n_cleared / n_answered, 2),
                        'n_cleared':
                        n_cleared,
                        'n_answered':
                        n_answered,
                        'time':
                        time,
                        'langs':
                        random_sample(LANGS,
                                      random_randrange(1, LEN_LANGS_PLUS1)),
                    })
    #
    appglobals = AppGlobals()
    appglobals.records = records
    root = ScreenManager()
    root.add_widget(scenes.records.instantiate(appglobals=appglobals))
    runTouchApp(root)
Ejemplo n.º 24
0
 def __init__(self, records=None, parameters=None, policy=None):
     # initialise embedded Records object
     if records is None:
         self.records = Records()
     elif isinstance(records, Records):
         self.records = copy.deepcopy(records)
     else:
         raise ValueError('records must be None or a Records object')
     self.stored_records = None
     # initialise embedded Parameters object
     if parameters is None:
         self.parameters = Parameters()
     elif isinstance(parameters, Parameters):
         self.parameters = copy.deepcopy(parameters)
     else:
         raise ValueError('parameters must be None or a Parameters object')
Ejemplo n.º 25
0
 def __init__(self, name='', permissions=None, store=None, emitter=None):
     self.name = name or 'universe'
     self.prefix = '' if name == 'universe' else name
     self.permissions = permissions or Permissions(
         path='fixtures/permissions.yaml')
     self.store = store or Records()
     self.emitter = emitter
     self.replay_stamp = None
     self.record_maximum_size = 1000000
     self.page_size = 10
     self.routes = []
     self._add_url_rule('/', 'index', self.index)
     self._add_url_rule('/page/<token>', 'page', self.page)
     self._add_url_rule('/', 'post', self.post, methods=['POST'])
     self._add_url_rule('/<id>', 'get', self.get)
     self._add_url_rule('/<id>', 'put', self.put, methods=['PUT'])
     self._add_url_rule('/<id>', 'delete', self.delete, methods=['DELETE'])
Ejemplo n.º 26
0
 def build(self):
     self.root = root = MostxScreenManager()
     appglobals = self.appglobals
     appglobals.funcs.update(
         switch_scene=root.switch_screen,
         play_sound=_create_function_play_sound(),
     )
     user_data_dir = PurePath(self.user_data_dir)
     appglobals.update(
         records=Records(user_data_dir / 'records.json'),
         langsettings=LangSettings(user_data_dir / 'langsettings.json'),
         quizsettings=QuizSettings(user_data_dir / 'quizsettings.json'),
     )
     appglobals.data.devmode = self.config.get('game', 'devmode') != '0'
     root.add_widget(Screen(name='blank'))
     self._setup_all_scenes()
     return root
Ejemplo n.º 27
0
    def display_menu(self, window):
        display = True
        pygame.font.init()
        screen = pygame.Surface((800, 630))

        login_font = pygame.font.Font(None, 35)
        while display:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_DOWN:
                        if len(self.punkti) - 1 != self.punkt:
                            self.punkt += 1
                        else:
                            self.punkt = 0
                    if event.key == pygame.K_UP:
                        if self.punkt != 0:
                            self.punkt -= 1
                        else:
                            self.punkt = len(self.punkti) - 1
                    if event.key == pygame.K_RETURN:
                        if self.punkt == 0:
                            display = False
                        elif self.punkt == 1:
                            Records().record(window)
                        else:
                            sys.exit()

                    if event.key == pygame.K_BACKSPACE:
                        self.current_login = self.current_login[0:-1]
                    elif event.key == pygame.K_RETURN:
                        break
                    elif event.key <= 127:
                        self.current_login.append(chr(event.key))

            screen.fill((40, 110, 120))
            self.render(screen)
            pygame.draw.rect(screen, (0, 0, 0), (180, 100, 200, 30), 1)
            screen.blit(
                login_font.render(
                    'Enter login: ' + "".join(self.current_login), 1,
                    (255, 154, 43)), (40, 100))
            window.blit(screen, (0, 0))

            pygame.display.flip()
Ejemplo n.º 28
0
    def export_record(self, event):
        """Export the selected record into another project db.
        Matching fields are alone exported while others are ignored"""
        # get project to export to
        project_chooser = ProjectChooser(None, self.config)
        if project_chooser.ShowModal() == wx.ID_OK:
            chosen_project = project_chooser.default_project

        # cancel export otherwise
        else:
            return
         
        # Get the record vals
        selected_record = self.register.record_display.GetFirstSelected()
        if selected_record == -1:
            self.register.SetStatusText('No record selected', 0)
            return

        id = str(self.register.record_display.GetItemData(selected_record))
        record_vals = self.records.retrieve_record(id)
        record_vals['LOCK_STATUS'] = 'unlocked'

        # if same project is selected, clone it
        if chosen_project == self.config.options['default_project']:
            self.records.insert_record(record_vals)
            self.register.refresh_records()

        # if other project selected, open that db and enter compatible vals
        # get values for other project
        other_project_dir = self.config.options['projects'][chosen_project]
   
        # load paths for other project
        #self.fields_file = os.path.join(self.project_dir, 'fields.yaml')
        index_file = os.path.join(other_project_dir, 'index.yaml')
        db_file = os.path.join(other_project_dir, 'records.db')
        passfile = os.path.join(other_project_dir, 'pass.hsh')

        self.recipient_records = Records(db_file, index_file, passfile,
                                         self.config.options['num_backups'],
                                         self.config.options['backup_freq'])
        self.recipient_records.insert_record(record_vals)
Ejemplo n.º 29
0
def test_determine_legal_moves():
    r = Records(8, [0, 0], Board(8))
    r.plays_used = [[3, 4, 'white'], [4, 4, 'black'], [3, 3, 'black'],
                    [4, 3, 'white']]
    r.plays_used_coord_only = [[3, 4], [4, 4], [3, 3], [4, 3]]
    r.color = "black"
    r.comp_color = "white"
    assert (r.determine_legal_moves([[0, 0], [0, 1], [0, 2], [0, 3], [0, 4],
                                     [0, 5], [0, 6], [0, 7], [1, 0], [1, 1],
                                     [1, 2], [1, 3], [1, 4], [1, 5], [1, 6],
                                     [1, 7], [2, 0], [2, 1], [2, 2], [2, 3],
                                     [2, 4], [2, 5], [2, 6], [2, 7], [3, 0],
                                     [3, 1], [3, 2], [3, 5], [3, 6], [3, 7],
                                     [4, 0], [4, 1], [4, 2], [4, 5], [4, 6],
                                     [4, 7], [5, 0], [5, 1], [5, 2], [5, 3],
                                     [5, 4], [5, 5], [5, 6], [5, 7], [6, 0],
                                     [6, 1], [6, 2], [6, 3], [6, 4], [6, 5],
                                     [6, 6], [6, 7], [7, 0], [7, 1], [7, 2],
                                     [7, 3], [7, 4], [7, 5], [7, 6],
                                     [7, 7]]) == [[2, 4], [3, 5], [4, 2],
                                                  [5, 3]])
Ejemplo n.º 30
0
def _test():
    appglobals = AppGlobals()
    appglobals.update(
        records=Records(filepath='./test_records.json'),
    )
    appglobals.data.update(
        devmode=False,
        mode='timeattack',
        result=attrdict(
            points=12.34,
            n_cleared=20,
            n_answered=37,
            time=123,
            langs=['python'],
        ),
    )
    root = ScreenManager()
    root.add_widget(
        scenes.result.instantiate(appglobals=appglobals)
    )
    runTouchApp(root)