Повторите игру - Python Рок, Бумага, Ножницы - PullRequest
1 голос
/ 06 февраля 2020

Извинения, если версия этого вопроса была задана ранее. Я просмотрел, но не смог найти то, что действительно решило бы мою проблему.

Я начал изучать python сегодня и попытался создать простую игру «Камень, ножницы, бумага».

У меня есть следующий код, и он работает довольно хорошо:

import random

choices = ["rock", "paper", "scissors"]
player_move = input("Enter your move... ").lower()
cpu_move = random.choice(choices)
play = True
result_1 = ("Computer: " + cpu_move)
result_2 = ("You :" + player_move)
player_counter = 0
cpu_counter = 0
while play == True:
    print(result_2)
    print(result_1)
    if  cpu_move == "rock" and player_move == "paper" or cpu_move == "paper" and player_move == "scissors" or cpu_move == "scissors" and player_move == "rock":
        print("You win!")
        player_counter =+ 1
        print("Computer Score: " + str(cpu_counter))
        print("Your Score: " + str(player_counter))
        play = False
    elif cpu_move == "rock" and player_move == "scissors" or cpu_move == "paper" and player_move == "rock" or cpu_move == "scissors" and player_move == "paper":
        print("You lose!")
        cpu_counter += 1
        print("Computer Score: " + str(cpu_counter))
        print("Your Score: " + str(player_counter))
        play = False
    else:
        print("It's a tie!")
        play = True

Однако я не могу понять, как сделать следующие две вещи:

1) разрешить пользователю вводить новый ход если игра завязана 2) Повторите игру независимо от результата. Покупайте счетчик очков.

Любая помощь будет чрезвычайно полезна!

Спасибо, Джейсон

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Если вы переместили эту строку

player_move = input("Enter your move... ").lower()

в то время как l oop, вы сможете одновременно

  1. позволить пользователю ввести новое движение, если игра привязана, и
  2. повторяет игру независимо от результата, но счетчик очков продолжает работать.

Конечно, вам также нужно переместить код, назначающий cpu_move, player_move, result_1 и result_2 в то время как l oop.

Концептуально, вы можете думать обо всем, что находится за пределами пока l oop, как о настройке для игры, и обо всем внутри, как то, что происходит за один ход.

0 голосов
/ 06 февраля 2020

Чтобы продолжить игру несколькими ходами, переместите операторы, которые обрабатывают выбор игроков, в то время как l oop.

import random

choices = ["rock", "paper", "scissors"]
play = True
player_counter = 0
cpu_counter = 0

while play == True:
    player_move = input("Enter your move... ").lower()
    cpu_move = random.choice(choices)
    result_1 = ("Computer: " + cpu_move)
    result_2 = ("You :" + player_move)
    print(result_2)
    print(result_1)
    if  cpu_move == "rock" and player_move == "paper" or cpu_move == "paper" and player_move == "scissors" or cpu_move == "scissors" and player_move == "rock":
        print("You win!")
        player_counter =+ 1
        print("Computer Score: " + str(cpu_counter))
        print("Your Score: " + str(player_counter))
        play = False
    elif cpu_move == "rock" and player_move == "scissors" or cpu_move == "paper" and player_move == "rock" or cpu_move == "scissors" and player_move == "paper":
        print("You lose!")
        cpu_counter += 1
        print("Computer Score: " + str(cpu_counter))
        print("Your Score: " + str(player_counter))
        play = False
    else:
        print("It's a tie!")
        play = True

...