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()
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')
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"])
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
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())
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"]])
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()
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)
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)
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)
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!")
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"]])
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)
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)
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' } })
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
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])
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)
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)
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)
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')
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'])
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
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()
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)
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]])
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)