WedX - журнал о программировании и компьютерных науках

Как скрыть ввод игрока

Мне нужно, чтобы второй пользователь не мог видеть ввод первого пользователя, но когда он сообщает второму пользователю о вводе, ввод первого пользователя находится прямо перед ними

score=[0,0]
print("Welcome to Rock Paper Scissors! The score starts as",score)
while True:
    player1=input("Player 1's turn: ")
    player2=input("Player 2's turn: ")
    if (player1.lower() in ["rock","r","rick","rok","roc","rck"]):
        if (player2.lower() in ["scissors","s","scissor"]):
            score[0]=score[0]+1
            print("Player 1 wins! The score is now",score)
        if (player2.lower() in ["rock","r","rick","rok","roc","rck"]):
            print("It's a tie! The score remains",score)
        if (player2.lower() in ["paper","p","pap","piper"]):
            score[1]=score[1]+1
            print("Player 2 wins! The score is now",score)
    if (player1.lower() in ["scissors","s","scissor"]):
        if (player2.lower() in ["scissors","s","scissor"]):
            score[0]=score[0]+0
            print("It's a tie! The score remains",score)
        if (player2.lower() in ["rock","r","rick","rok","roc","rck"]):
            score[1]=score[1]+1
            print("Player 2 wins! The score is now",score)
        if (player2.lower() in ["paper","p","pap","piper"]):
            score[0]=score[0]+1
            print("Player 1 wins! The score is now",score)
    if (player1.lower() in ["paper","p","pap","piper"]):
        if (player2.lower() in ["scissors","s","scissor"]):
            score[1]=score[1]+1
            print("Player 2 wins! The score is now",score)
        if (player2.lower() in ["rock","r","rick","rok","roc","rck"]):
            score[0]=score[0]+1
            print("Player 1 wins! The score is now",score)
        if (player2.lower() in ["paper","p","pap","piper"]):
            score[0]=score[0]+0
            print("It's a tie! The score remains",score)
    print("N E X T    G A M E")

Результат:

Player 1's turn: r
Player 2's turn: 

теперь игрок 2 просто использует бумагу и выигрывает игру, поэтому мне нужно как-то скрыть то, что ввел игрок 1 (я использую Python 3.6.1)


  • Вы можете попробовать getpass в стандартной библиотеке. 05.10.2017

Ответы:


1

Вы можете использовать здесь getpass, чтобы скрыть ввод игрока 1 и использовать input() для 2-го игрока. Вход.

import getpass

player1 = getpass.getpass(prompt = "Player 1's turn:")
player2 = input("Player 2's turn")
05.10.2017
  • когда я использовал getpass, ничего не произошло. это было просто пусто, не было хода Игрока 1 или чего-то еще 10.10.2017
  • Player 1's turn :········ Player 2's turn :random Это результат, который вы получаете, когда используете его. Опишите подробнее свою проблему. 10.10.2017

  • 2

    Я использую редактор кода Visual Studio, и когда я запускаю этот код, он очищает окно терминала, где он выполняется, и не выдает. `import getpass, os

    import getpass, os
    
    welcome = """
    ************************************************************
    *                                                          *
    *        Welcome to the Rock, Paper, Scissors Game!        *
    *                                                          *
    ************************************************************
    """
    print(welcome)
    
    player1 = getpass.getpass('Rock, Paper, Scissors? ', stream = None)
    os.system('cls')
    
    13.12.2019

    3

    Вы можете использовать кучу строк print(), чтобы обойти это.

    player1move=input()
    print("\n"*100)
    player2move=input()
    print("\n"*100)
    #calculate who won
    #print result
    
    06.10.2017

    4

    Вы можете попробовать стереть весь текст с консоли, прежде чем просить Игрока 2 внести свой вклад.

    import os
    player1=input("Player 1's turn: ")
    os.system('cls')
    player2 = input("Player 2's turn: ")
    

    Обратите внимание, что это решение не будет работать при использовании IDLE в Windows, поскольку os.system() не взаимодействует с оболочкой IDLE (подробнее см. этот ответ Stackoverflow).

    Для этого лучше всего печатать много пустых строк. Вы можете создать функцию, которая делает это, например (из приведенной выше ссылки):

    def cls(): print "\n" * 100
    
    05.10.2017
  • Ну, он спрашивает первого пользователя, а затем, когда он вводит ввод, он очищает экран. Именно так это сработало для меня. Что ты получил? 10.10.2017
  • Похоже, это известная проблема при использовании IDLE в Windows. . Я проверил это на Windows cmd, и там все работает. Я бы посоветовал попробовать ответ с самым высоким рейтингом по этой ссылке. 11.10.2017

  • 5

    Вот пример, который работал для меня без каких-либо проблем:

    import getpass
    
    user = input('User: ')
    password = getpass.getpass('Password: ')
    
    password_length = len(password)
    password_hide = ('*' * password_length)
    
    print(f'{user}, your password {password_hide} is {password_length} digits long')
    
    11.12.2020
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]