예제 #1
0
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
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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')
예제 #5
0
    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')
예제 #6
0
파일: main.py 프로젝트: carrliitos/PacManPy
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()))
예제 #7
0
    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()
예제 #8
0
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()
예제 #9
0
 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")
예제 #10
0
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 ''
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
            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)
예제 #14
0
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))
예제 #15
0
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])
예제 #16
0
				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
예제 #17
0
    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)
예제 #18
0
파일: cmdline.py 프로젝트: stephan-cr/dude
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()
예제 #19
0
 def getKey(self):
     while self.RUNNING:
         key = utils.getch()
         self.keyAction(key)
예제 #20
0
    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