Я относительно новичок в кодировании и хотел бы создать игру вдохновителя, используя буквы вместо цветов / цифр.
Секретный код в моем MasterMind представляет собой последовательность из 4 букв. Каждая буква в секретном коде уникальна и имеет значение от «А» до «Н». Некоторые примеры действительного секретного кода: «ABDF», «EGHC» и «DAFE» .
Следующие примеры недопустимы:
- «ABBG» - содержит повторяющиеся символы «B».
- «LHAD» - содержит символ «L» вне диапазона от «A» до «H».
- «DBA» - содержит только 3 символа вместо обязательных 4.
В настоящее время я это сделал:
import random
def chooseOneLetter (base1, base2):
ratio = 10
seed = int(random.uniform (0, ratio*len(base1)+len(base2)))
if seed < ratio*len(base1):
chosenLetter = base1[int(seed/ratio)]
base1.remove(chosenLetter)
else:
chosenLetter = base2[(seed - ratio*len(base1))]
base2.remove(chosenLetter)
return chosenLetter
def getSecretCode(base1, base2):
secretCode = ""
for i in range(4):
chosenLetter = chooseOneLetter (base1, base2)
secretCode += chosenLetter
return secretCode
# base1 = ["A", "B", "C", "D"]
# base2 = ["E", "F", "G", "H"]
Однако я хотел бы включить еще 2 переменные. Первая переменная ссылается на список букв в их правильных положениях или None, если буква в догадке неверна. Вторая переменная ссылается на словарь с буквами, угаданными в неправильных позициях в качестве ключей, и числом раз, когда буквы были угаданы в неправильных позициях в качестве значений.
Например, если секретный код BAFD ,
Первые ссылки на переменные ['B', Нет, Нет, Нет]. Игрок правильно угадал, что буква B находится в первой позиции, но все остальные буквы в других позициях неверны.
Вторая переменная ссылается на {'A': 2, 'B': 1, 'D' : 2}. Игрок до сих пор угадал 3 правильные буквы: A дважды угадывается в неправильных позициях, B - один раз в неправильном положении, D дважды - в неправильных.
Я также ищу движок игры, чтобы предложить пользователю сыграть в другую игру и повторно ввести строку, если она не соответствует критериям. Это должно выглядеть примерно так.
Enter a guess to continue or RETURN to quit: abda
Please enter 4 unique letters, A to H
Enter a guess to continue or RETURN to quit: ade
Please enter 4 unique letters, A to H
Enter a guess to continue or RETURN to quit: asbc
Please enter 4 unique letters, A to H
Enter a guess to continue or RETURN to quit: abcd
The guess is not correct, attempt no. 1
The correct letters in correct positions: [None, None, None,
None]
The correct letters and the number of times found in incorrect
positions: {'B': 1, 'C': 1, 'D': 1}
Enter a guess to continue or RETURN to quit: dhcb
The guess is not correct, attempt no. 2
The correct letters in correct positions: [None, None, None,
'B']
The correct letters and the number of times found in incorrect
positions: {'B': 1, 'C': 2, 'D': 2, 'H': 1}
Enter a guess to continue or RETURN to quit: cdhb
You guessed it correctly in 3 attempts, the secret word is CDHB
Do you want to play again? Y to play again: y
Большое вам спасибо за помощь!