Я относительно новичок в программировании и хотел бы создать игру вдохновения, используя буквы вместо цветов/цифр.
Секретный код в моем 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', None, None, None]. Игрок правильно угадал, что буква 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
Спасибо большое за вашу помощь!