def raw_read(): c = getch() if c == chr(127): return EditorKeys.BACKSPACE elif c == '\t': return EditorKeys.TAB_KEY elif c == '\x1b': # ESC character c1 = getch() c2 = getch() if (not c1) or (not c2): return c if c1 == '[': if '0' <= c2 <= '9': c3 = getch() if not c3: return c if c3 == '~': if c2 == '1': return EditorKeys.HOME_KEY elif c2 == '3': return EditorKeys.DEL_KEY elif c2 == '4': return EditorKeys.END_KEY elif c2 == '5': return EditorKeys.PAGE_UP elif c2 == '6': return EditorKeys.PAGE_DOWN elif c2 == '7': return EditorKeys.HOME_KEY elif c2 == '8': return EditorKeys.END_KEY else: if c2 == 'A': return EditorKeys.ARROW_UP elif c2 == 'B': return EditorKeys.ARROW_DOWN elif c2 == 'C': return EditorKeys.ARROW_RIGHT elif c2 == 'D': return EditorKeys.ARROW_LEFT elif c2 == 'H': return EditorKeys.HOME_KEY elif c2 == 'F': return EditorKeys.END_KEY elif c1 == 'O': if c2 == 'H': return EditorKeys.HOME_KEY elif c2 == 'F': return EditorKeys.END_KEY return c
def main(): clear() try: conn.connect((HOST, PORT)) except socket.error as msg: print(msg) print('Well, it looks like server is shut down.') input('Press Enter for quit...') clear() sys.exit() while True: clear() show_menu() answer = getch() if answer == 'q': clear() sys.exit() if answer in menu: options = { '1': add_record, '2': edit_record, '3': delete_record, '4': search, '5': show_all, '6': sort } options[answer](answer)
def clean_invalid_experiments(cfg, experiments): valid_folders = [] for experiment in experiments: folder = core.get_folder(cfg, experiment) valid_folders.append(folder) raw_folder = core.get_raw_folder(cfg) meta_file = raw_folder + '/' + dimensions.META_FILE folders = glob.glob(raw_folder + '/*') folders = [f for f in folders if f not in valid_folders and f != meta_file] if len(folders) == 0: print "no invalid expfolders" return print "Removing following folders: " for folder in folders: print "\t", folder r = 'y' print "sure? [y/N]" r = utils.getch() if r == 'y': for folder in folders: shutil.rmtree(folder)
def handle_controls(player): while player.state != 'stopped': a = getch() if ord(a) == 3 or a == 'q': quit(player) elif a == 'f': if len(player.stream_chunks) != 0: player.stream_chunks.insert(0, 'forward') elif a == 'b': if len(player.stream_chunks) != 0: player.stream_chunks = [player.stream_chunks[0]] + ['backward'] elif a == '>': if player.current_song == len(player.playlist) - 1: pass else: player.stream_chunks = [] player.stream_chunks.append('reset_time') player.stream_chunks.append('next') elif a == '<': if player.current_song == 0: pass else: player.stream_chunks = [] player.stream_chunks.append('reset_time') player.stream_chunks.append('previous')
def main_loop(self): self.__game.load_top_scores('data.bin') self.__game.start() while self.__game.get_state() == State.running: self.refresh() char = getch() self.user_input(char) if char == chr(26): break if self.__game.get_state() == State.game_over: print('Game Over!') if self.__game.check_score(): print('Your score is within the top 10!') print('Enter your name:') name = input() score = self.__game.score() while not match(r'[a-zA-Z0-9]', name): print('\'{}\' is not a valid name.'.format(name)) print('Please try again.') print('Enter your name:') name = input() self.__game.add_player_to_chart(name, score) print('\nHigh Scores') self.print_high_scores() self.__game.save_top_scores('data.bin') print('Do you want to play again? y/n') choice = input() if choice == 'y' or choice == 'Y': self.__game.change_state(State.running) self.__game.reset() if self.__game.get_state() == State.game_won: self.refresh() print('Congratulations! You reached 2048!') print('Do you want to continue to play? y/n') choice = input() if choice == 'y' or choice == 'Y': self.__game.change_state(State.running) else: if self.__game.check_score(): print('Your score is within the top 10!') print('Enter your name:') name = input() score = self.__game.score() while not match(r'[a-zA-Z0-9]', name): print('\'{}\' is not a valid name.'.format(name)) print('Please try again.') print('Enter your name:') name = input() self.__game.add_player_to_chart(name, score) print('\nHigh Scores') self.print_high_scores() self.__game.save_top_scores('data.bin')
def main(): (sizeX, sizeY, difficulty) = argumentParser() gameMaze = GameMaze(1, (sizeX, sizeY)) game = Game(difficulty, gameMaze) for _ in range(0, difficulty): game.ghosts.append(Ghost(game.gameMaze.placeEnemy())) character = getch() while True: clear() game.multipleMoveNext(game.pacman) for i in game.ghosts: game.multipleMoveNext(i) print("Score: " + str(game.pacman.score)) print(game.gameMaze) character = getch() while character not in ['q', 'w', 'a', 's', 'd']: character = getch() if character == 'q': print("Exiting...") exit(0) elif character == 'w': game.pacman.moveUp() elif character == 'a': game.pacman.moveLeft() elif character == 's': game.pacman.moveDown() elif character == 'd': game.pacman.moveRight() if game.gameMaze.coinCount == 0: print("LEVEL WON! BOND!") character = getch() gameMaze = GameMaze(1, (sizeX, sizeY)) game = Game(difficulty, gameMaze, game.pacman.score) for i in range(0, difficulty): game.ghosts.append(Ghost(game.gameMaze.placeEnemy()))
def autorun(): def clearScreen(): os.system('clear') while True: msg = '例如:1元1角 + 2元2角 - 3元, 输入为:1.1 + 2.2 - 3\n请输入式子:\n' try: content = raw_input(msg) except NameError: content = input(msg) content.strip() if len(content) is 0: break try: clearScreen() formula = Formula.parse(content) print(formula) print('\n\n按任意键看答案') getch() result = formula.getResult() print('\n\n', result) except CurrencyException as e: print(e) print('按任意键继续') getch() clearScreen()
def main(): menu = Menu(MENU_STRUCTURE, 20, 4, output='terminal') def show(): for i in range(20): print('') menu.show() show() kgen = getch(0.1) while True: key = kgen.next() if key: if key == 'B': menu.down() elif key == 'A': menu.up() elif key in [' ', '\n']: menu.select() show()
def run(self): tprint("start ioserver") self.timer.start() lcd = self.lcd while True: c = getch() if (c == 'w'): lcd.up() elif (c == 'a'): lcd.left() elif (c == 's'): lcd.down() elif (c == 'd'): lcd.right() elif (c == ' '): lcd.center() elif (c == 'u'): lcd.updateDisplay() elif (c == 'q'): self.quit = True break else: tprint("Unknown Command")
def _format_list_of_dict_as_detailed_view(list_to_format): """It formats each element in the list (dictionary) as a table, and shows them one by one. """ if list_to_format == None: return 'Empty result' total_records = len(list_to_format) current_record = 0 for dict in list_to_format: current_record += 1 single_table = _format_dictionary(dict) print single_table print ANSICOLORS.FGREEN % " Page %s of %s" % (current_record, total_records) print ANSICOLORS.BNORMAL % "< Press any key to continue, 'q' to exit >" input_character = utils.getch() print input_character if input_character == 'q': break #We already print out the result ourselves. return ''
def learn(args): assert isinstance(args.deck, str) deck = file_io.read_deck(title=deck_match(args.deck)) num = args.number active_cards = list(filter(lambda x: x.is_reviewable(), deck)) if num == 0: exit(0) if num < 0 or num > len(active_cards): num = len(active_cards) in_progress_cards = active_cards[:num] while in_progress_cards: current_cards = in_progress_cards[:] in_progress_cards = [] for card in current_cards: print(card.description) print('Press any key to show correct response. (q to quit)') should_show = getch().lower() != 'q' if not should_show: exit(0) print() print(card.response) print() result = prompt_menu( ['Terrible', 'Tip of my tongue', 'Good', 'Easy'], "How'd you do?") assert result in range(4) card.rate_card(result) if result < 2: in_progress_cards.append(card) file_io.write_deck(deck)
def get_albums(owner_id): query_get_alb = 'https://api.vk.com/method/audio.getAlbums?owner_id={}&access_token={}'.format(owner_id, config.token) r = requests.post(query_get_alb) try: return r.json()['response'][1:] except: return [] config.owners = [vkuser(x) for i, x in enumerate(config.owners)] print('Choose wisely:') [print('{}. {}'.format(num + 1, x.screen_name)) for num, x in enumerate(config.owners)] try: playlist_num = int(getch()) - 1 owner = config.owners[playlist_num] except: print('Error: bad input') sys.exit(1) res = [] thread = threading.Thread(target=wrapper, args=(get_tracks, owner.id, None, res)) thread.start() while thread.isAlive(): for x in '-\|/': b = 'Loading ' + x print (b, end='\r') time.sleep(0.1)
directions.add(3) if graph[y][x + 1] != 0: directions.add(4) return list(directions) droid = IntCodeComputer(codes=codes) graph = [[1]] position = (0, 0) steps = 0 singleSteps = 0 ## Part One: use your keyboard to explore it! while not droid.isEnd(): printGraph(graph, position, steps, singleSteps) command = getch() if command == 'q': break # direction = parseCommand(command) availableDirections = getAvailableDirections(position, graph) direction = availableDirections[random.randrange(0, len(availableDirections))] position = extendGraph(direction, position, graph) droid.appendInputs([direction]) output = droid.runToOutput(noPrint=True) notFound = appendGraph(output, position, graph) if output != 0: steps += 1 if notFound: singleSteps += 1 position = moveDroid(direction, position)
good_msg = ( '太棒了, 宝包答对了', '宝包真厉害', ) bad_msg = ( '只差一点了, 别灰心', '没有答对, 再试一次吧', ) from random import choice from os import environ from utils import getch, say l = choice(letters) while True: say(choice(tips), l) if environ.get('TISHI'): print(l) lb = getch().upper() print(lb) else: lb = getch().upper() if lb == l: say(choice(good_msg)) break else: say(choice(bad_msg))
def player_controls(agent_host, steve_pos=None): ''' Controls for play to play the game in minecraft with discrete controls NOTE: Returns steves position for synchronisation purposes. Not an ideal fix ''' button_delay = 0.01 # print("Steve pos:", steve_pos) sx = steve_pos[0] sy = steve_pos[1] steve_pos = list(steve_pos) char = getch() if (char == "q"): print("Stop!") exit(0) if (char == "w"): print("Up pressed") time.sleep(button_delay) # agent_host.sendCommand("move 1") agent_host.sendCommand("tp {} 108 {}".format( np.floor(sx) + 0.5, np.floor(sy) + 1.5)) steve_pos[1] = steve_pos[1] + 1 elif (char == "s"): print("Down pressed") time.sleep(button_delay) # agent_host.sendCommand("move -1") agent_host.sendCommand("tp {} 108 {}".format( np.floor(sx) + 0.5, np.floor(sy) - 0.5)) steve_pos[1] = steve_pos[1] - 1 elif (char == "a"): print("Left pressed") time.sleep(button_delay) # agent_host.sendCommand("strafe -1") agent_host.sendCommand("tp {} 108 {}".format( np.floor(sx) + 1.5, np.floor(sy) + 0.5)) steve_pos[0] = steve_pos[0] + 1 elif (char == "d"): print("Right pressed") time.sleep(button_delay) # agent_host.sendCommand("strafe 1") agent_host.sendCommand("tp {} 108 {}".format( np.floor(sx) - 0.5, np.floor(sy) + 0.5)) steve_pos[0] = steve_pos[0] - 1 elif (char == " "): print("Jump pressed") time.sleep(button_delay) agent_host.sendCommand("jumpmove 1") # agent_host.sendCommand("tp 1.5 115 2.5") # time.sleep(0.05) # agent_host.sendCommand("jump 0") elif (char == "i"): print("Look Up pressed") time.sleep(button_delay) agent_host.sendCommand("look -1") elif (char == "k"): print("Look Down pressed") time.sleep(button_delay) agent_host.sendCommand("look 1") elif (char == "j"): print("Look Left pressed") time.sleep(button_delay) agent_host.sendCommand("turn -1") elif (char == "l"): print("Look Right pressed") time.sleep(button_delay) agent_host.sendCommand("turn 1") elif (char == "e"): print("Use pressed") time.sleep(button_delay) agent_host.sendCommand("use 1") elif (char == "r"): print("Break pressed") time.sleep(button_delay) # agent_host.sendCommand("craft diamond_pickaxe") agent_host.sendCommand("attack 1") return (steve_pos[0], steve_pos[1])
if change.newlen - change.oldlen > 500: added, _ = bot.diff(change.title.encode('utf8'), change.old_revid, change.revid) if added: longestAddition = max(len(add) for add in added) if longestAddition > 300: changes.append(change) progress.update(changeId + 1, '[%d] %s' % (len(changes), utils.fancyTime(change.timestamp))) print print 'Last timestamp is', timestamp print for changeId, change in enumerate(changes): print '[%d / %d] %s | %s | %s (+%s) [s/p/q] ' % (changeId + 1, len(changes), utils.fancyTime(change.timestamp), change.user, change.title, change.newlen - change.oldlen), while True: action = utils.getch() if action == 's': subprocess.call([_webBrowser, _diffUrl % (change.title, change.revid, change.old_revid)]) elif action == 'q': sys.exit(0) elif action != 'p': continue print break print 'Restart? [r/q] ', while True: action = utils.getch() if action == 'r': print break
except: return [] def add_track(audio_id): query_add = 'https://api.vk.com/method/audio.add?audio_id={}&owner_id={}&access_token={}'.format( audio_id, config.owner_id, config.token) r = requests.post(query_add) return r.json()['response'] print('Choose wisely:') [print('{}. {}'.format(num + 1, x)) for num, x in enumerate(config.owner_id)] try: playlist_num = int(getch()) - 1 config.owner_id = config.owner_id[playlist_num] except: print('Error: bad input') sys.exit(1) res = [] thread = threading.Thread(target=wrapper, args=(get_tracks, res)) thread.start() while thread.isAlive(): for x in '-\|/': b = 'Loading ' + x print(b, end='\r') time.sleep(0.1)
def main(cargs): # folder from where dude is called cfolder = os.getcwd() # parse command line (options, cargs) = parser.parse_args(cargs) # check if a command has been given if cargs == []: parser.print_help() sys.exit() # create requires no Dudefile, so we deal with it right here if cargs[0] == "create": if len(cargs) < 2: expgen.create() else: expgen.create(cargs[1]) sys.exit(0) # all other commands require a Dudefile, so we first load it (in "cfg") cfg = None # use a given dudefile in options if options.expfile != None: try: cfg = imp.load_source('', options.expfile) except IOError: print >> sys.stderr, 'ERROR: Loading', options.expfile, 'failed' parser.print_help() sys.exit(1) else: # try default file names current = os.getcwd() max_folder = 10 # arbitrary number of parent directories i = 0 while i < max_folder: for f in ['desc.py', 'dudefile', 'Dudefile', 'dudefile.py']: try: if os.path.exists(f) and i > 0: print "Opening Dudefile: ", os.path.abspath(f) cfg = imp.load_source('', f) break except IOError: pass if cfg != None: break else: i += 1 parent, last = os.path.split(current) os.chdir(parent) current = parent if cfg == None: print >> sys.stderr, 'ERROR: no dudefile found' parser.print_help() sys.exit(1) # add to actual folder as root in cfg cfg.root = os.getcwd() # check if cfg can be used for core functions core.check_cfg(cfg) # check if cfg can be used for summaries summary.check_cfg(cfg) # parse arguments to module if options.margs: margs = args.parse(";".join(options.margs)) print "Passing arguments:", margs args.set_args(cfg, margs) if hasattr(cfg, 'dude_version') and cfg.dude_version >= 3: dimensions.update(cfg) # collect filters filters = [] if options.filter and options.filter != []: for fi in options.filter: for f in fi.split(','): filters.append(cfg.filters[f]) if options.filter_inline and options.filter_inline != []: filters += filt.create_inline_filter(cfg, options.filter_inline) if options.filter_path: current = os.getcwd() if current != cfolder: # this assumes Dudefile is in the root of the experiment folder os.chdir(cfolder) path = os.path.abspath(options.filter_path) os.chdir(current) path = os.path.relpath(path) # get raw_output_dir/exp_... format else: path = options.filter_path filters += filt.filter_path(cfg, path) # get experiments experiments = core.get_experiments(cfg) # select the set of experiments to be considered (successful, # failed or pending) if (options.success and options.failed and options.pending) or\ not (options.success or options.failed or options.pending): pass else: failed, pending = core.get_failed_pending_exp(cfg, experiments) expin = [] expout = [] if options.failed: expin += failed else: expout += failed if options.pending: expin += pending else: expout += pending if options.success: experiments = [exp for exp in experiments if exp not in expout] else: experiments = expin # apply filters if filters != []: experiments = filt.filter_experiments(cfg, filters, options.invert, False, experiments) cmd = cargs[0] if cmd == 'run': if options.force: clean.clean_experiments(cfg, experiments) execute.run(cfg, experiments, options) elif cmd == 'run-once': assert len(experiments) == 1 optpt = experiments[0] folder = "once" utils.checkFolder(folder) # create if necessary if options.force: clean.clean_experiment(folder) execute.execute_isolated(cfg, optpt, folder, options.show_output) elif cmd == 'sum': summary.summarize(cfg, experiments, cargs[1:], options.backend, options.ignore_status) elif cmd == 'list': for experiment in experiments: if options.dict: print "experiment:", experiment else: print core.get_folder(cfg, experiment) elif cmd == 'failed': failed = core.get_failed(cfg, experiments, False) for ffile in failed: print ffile elif cmd == 'missing': failed = core.get_failed(cfg, experiments, True) for exp in failed: print exp elif cmd == 'clean': if options.invalid: clean.clean_invalid_experiments(cfg, experiments) else: # TODO if no filter applied, ask if that's really what the # user wants. r = 'y' if options.filter == None and \ options.filter_inline == None: print "sure to wanna delete everything? [y/N]" r = utils.getch() #raw_input("Skip, quit, or continue? #[s/q/c]") if r == 'y': clean.clean_experiments(cfg, experiments) elif cmd == 'visit': if len(cargs) < 2: print "Specify a bash command after visit" sys.exit(1) elif len(cargs) > 2: print "Surround multi-term bash commands with \"\"." print "e.g., \"%s\"" % ' '.join(cargs[1:]) sys.exit(1) visit.visit_cmd_experiments(cfg, experiments, cargs[1]) elif cmd == 'info': info.show_info(cfg, experiments) elif cmd == 'status': info.print_status(cfg, experiments) else: print >> sys.stderr, "ERROR: wrong command. %s" % cargs[0] parser.print_help()
def getKey(self): while self.RUNNING: key = utils.getch() self.keyAction(key)
def run(self, rulefile): def clearScreen(): os.system('clear') formulaRule = FormulaRule(rulefile) while True: rule = formulaRule.createFormula() clearScreen() print(u'第{}关,按回车键继续,按其它键跳过。'.format(formulaRule.getIndex() + 1)) if '\r' == getch(): clearScreen() formula = Formula.parse(rule) print(u'第{}关\n\n{} = ?'.format(formulaRule.getIndex() + 1, formula)) msg = '请输入答案:' for i in range(3): if i is not 0: print('请再想想?') try: answer = raw_input(msg) except NameError: answer = input(msg) correct = False try: condition = '{0} == {1} or ({0} > {1} and {0} < {1} + 0.01) or ({1} > {0} and {1} < {0} + 0.01)'.format(rule, answer) if eval(condition): correct = True except Exception as e: pass try: answer = Formula.parse(answer) answer = answer.getResult() except CurrencyException as e: pass print('{} = {}'.format(formula, answer)) if correct: print('回答正确!恭喜您通过第{}关!'.format(formulaRule.getIndex() + 1)) break else: print('可能您不太理解,按任意键看答案吧。') getch() print('正确答案是:{} = {}'.format(formula, formula.getResult())) print('按任意键再来一次吧。') getch() continue print('按任意键继续') getch() clearScreen() if not formulaRule.forward(): print('恭喜您通过全部{}关!'.format(formulaRule.getSize())) break