파이썬에서 마스터마인드 보드 게임 구현
28647 단어 codenewbiepythonbeginnersprogramming
소개
Python은 프로토타이핑 속도를 높이는 간단한 프로그래밍 언어입니다. 마스터마인드를 코딩해 봅시다. 이것은 색상을 사용하는 간단한 보드 게임이지만 대신 숫자를 사용하겠습니다. 막대 뒤에는 한 플레이어가 4가지 색상을 표시합니다. 다른 플레이어는 첫 번째 플레이어의 색상을 볼 수 없습니다. 첫 번째 플레이어의 색상을 코드 메이커라고 하고 다른 플레이어의 색상을 코드 브레이커라고 합니다. 코드 브레이커는 코드 제작자를 추측하기 위해 2에서 12 사이의 시도를 합니다. 시도 횟수는 짝수여야 합니다.
구현
import random
while True:
try:
rounds = int(input("Enter number of rounds (Even): "))
if rounds >= 2 and rounds <= 12 and rounds % 2 == 0:
break
except ValueError:
print("Round must be an even number from 2 to 12 includes")
try:
duplicates_allowed = int(input("Duplicates allowed? (1/0) "))
except ValueError:
duplicates_allowed = 0
NUMBER_CODE = 4
code_maker = []
counter = 0
while counter < NUMBER_CODE:
code = random.randint(0, 9)
if duplicates_allowed:
code_maker.append(code)
counter += 1
else:
if not code in code_maker:
code_maker.append(code)
counter += 1
[0, 0, 0, 0]
는 각 코드를 나타내며 코드 차단기가 코드 제작자보다 크면 힌트 1, 같으면 힌트 0, 그렇지 않으면 -1입니다. hints = ['h', 'i', 'n', 't']
[0, 0, 0, 0]
됩니다. # code breaker guesses the code by the code maker
while rounds > 0:
# enter guess with spaces
code_breaker = list(map(int, input("Enter codes space separated: ").split()))
# compare the code_breaker to the code maker
for i in range(NUMBER_CODE):
if code_breaker[i] > code_maker[i]:
hints[i] = 1
elif code_breaker[i] == code_maker[i]:
hints[i] = 0
else:
hints[i] = -1
# because of the values that we used to hint the user
# we have to find some dicey way to break the program
# when the user guesses the code (all hints go to 0)
if hints.count(0) == 4:
break
print(hints)
rounds -= 1
if rounds > 0:
print("You won the rounds")
else:
print("You lost bitterly to a computer")
print(code_maker)
최종 스니펫
# app.py
# Import the _random_ module
import random
# The number of times to play must be even between 2 to 12 rounds
while True:
try:
rounds = int(input("Enter number of rounds (Even in [2, 12]): "))
if rounds >= 2 and rounds <= 12 and rounds % 2 == 0:
break
except ValueError:
print("Round must be an even number from 2 to 12 includes")
# should there be duplicates
try:
duplicates_allowed = int(input("Duplicates allowed? (1/0) "))
except ValueError:
duplicates_allowed = 0
# The number of codes we will be dealing with will four
NUMBER_CODE = 4
# The code maker
code_maker = []
counter = 0
while counter < NUMBER_CODE:
code = random.randint(0, 9)
if duplicates_allowed:
code_maker.append(code)
counter += 1
else:
if not code in code_maker:
code_maker.append(code)
counter += 1
# hint
hints = ['h', 'i', 'n', 't']
# code breaker guesses the code by the code maker
while rounds > 0:
# enter guess with spaces
code_breaker = list(map(int, input("Enter codes space separated: ").split()))
# compare the code_breaker to the code maker
for i in range(NUMBER_CODE):
if code_breaker[i] > code_maker[i]:
hints[i] = 1
elif code_breaker[i] == code_maker[i]:
hints[i] = 0
else:
hints[i] = -1
# because of the values that we used to hint the user
# we have to find some dicey way to break the program
# when the user guesses the code (all hints go to 0)
if hints.count(0) == 4:
break
print(hints)
rounds -= 1
# declaring the result of the game
if rounds > 0:
print("You won the rounds")
else:
print("You lost bitterly to a computer")
print(code_maker)
조금 자랑하자
가능한 경우 함수와 상수를 만들 것입니다. 한 번 이런 식으로 한 것을 기억하고 나중에 내가 어디에 있는지 찾을 수 있었기 때문에 이전 코드로 돌아갔습니다. 내 코드에서 길을 잃었습니다. 일어난다. 최고가 아닐 때도 있고 최고일 때도 있습니다. 다른 가능성을 보여드리고 싶습니다.
# app2.py
# Import the _random_ module
import random
import os
from time import sleep
# string constants
ROUNDS_PROMPT = "Enter number of rounds (Even in [2, 12]) 🤗️: "
INVALID_ROUNDS_PROMPT = "Round must be an even number from 2 to 12 includes 😩️"
DUPLICATE_PROMPT = "Duplicates allowed? (1/0) 🤤️: "
CODE_BREAKER_PROMPT = "Enter codes separated by space: "
WIN_PROMPT = "You won the rounds 👏️"
LOSS_PROMPT = "You lost bitterly to a computer 😏️"
# int constants
ZERO, ONE = 0, 1
NUMBER_CODE = 4
TERMINATING_VALUE = 0
MORE, EQUAL, LESS = 1, 0, -1
MIN_ROUNDS, MAX_ROUNDS = 2, 12
RAND_INT_MIN, RAND_INT_MAX = 0, 9
WAITING_TIME = 3
# The code maker
code_maker = []
# hint
hints = ['h', 'i', 'n', 't']
def clear_screen() :
os.system('cls' if os.name == 'nt' else 'clear')
# validates the round input
def isvalid_round(rounds):
return MIN_ROUNDS <= rounds <= MAX_ROUNDS and rounds % 2 == ZERO
# declaring the result of the game
def declare_result(rounds):
if rounds > TERMINATING_VALUE:
print(WIN_PROMPT)
else:
print(LOSS_PROMPT)
# generate code maker
def generate_code_maker(duplicates_allowed):
counter = 0
while counter < NUMBER_CODE:
code = random.randint(RAND_INT_MIN, RAND_INT_MAX)
if duplicates_allowed:
code_maker.append(code)
counter += ONE
else:
if not code in code_maker:
code_maker.append(code)
counter += ONE
# compare the code_breaker to the code maker
def compare_code():
# enter guess with spaces
code_breaker = list(map(int, input(CODE_BREAKER_PROMPT).split()))
for pos in range(NUMBER_CODE):
if code_breaker[pos] > code_maker[pos]:
hints[pos] = MORE
elif code_breaker[pos] == code_maker[pos]:
hints[pos] = EQUAL
else:
hints[pos] = LESS
# entry point
def App():
# The number of times to play must be even between 2 to 12 rounds
while True:
try:
rounds = int(input(ROUNDS_PROMPT))
if isvalid_round(rounds):
break
except ValueError:
print(INVALID_ROUNDS_PROMPT)
# should there be duplicates
try:
duplicates_allowed = int(input(DUPLICATE_PROMPT))
except ValueError:
duplicates_allowed = ZERO
generate_code_maker(duplicates_allowed)
# code breaker guesses the code by the code maker
while rounds > TERMINATING_VALUE:
compare_code()
# because of the values that we used to hint the user
# we have to find some dicey way to break the program
# when the user guesses the code (all hints go to 0)
if hints.count(EQUAL) == NUMBER_CODE:
break
print(hints)
rounds -= ONE
declare_result(rounds)
print(code_maker)
# infinitely keep playing
while True:
App()
sleep(WAITING_TIME)
clear_screen()
# reset the game for replay
code_maker = []
hints = ['h', 'i', 'n', 't']
출처
Reference
이 문제에 관하여(파이썬에서 마스터마인드 보드 게임 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/otumianempire/mastermind-board-game-implementation-in-python-26le텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)