행맨 게임 만들기

행맨 게임 FlowChart

무작위 단어를 고르고 정답 확인하기

import random

print("** 베스킨라빈스 아이스크림 행맨 게임 **")
print("베스킨라빈스 아이스크림 이름을 추측해서 맞춰보세요.")
print("행맨을 꼭 살려주세요")

wordlist = ["아이스허쉬앤리세스", "핑크스푼비긴즈", "비타500소르베","피나콜라다", "초코넛마카다미아", "오레오쿠키앤크림",
"월넛", "오레오쿠키앤카라멜", "엄마는외계인", "아몬드봉봉", "민트초콜릿칩", "슈팅스타", "베리베리스트로베리", "바람과함꼐사라지다",
"레인보유샤베트", "31요커트", "체리쥬빌레" ]

randomword = list(random.choice(wordlist)) # 문자열을 한 글자씩 끊어서 리스트로 바꾸기

print(randomword)

** 베스킨라빈스 아이스크림 행맨 게임 **
베스킨라빈스 아이스크림 이름을 추측해서 맞춰보세요.
행맨을 꼭 살려주세요
['비', '타', '5', '0', '0', '소', '르', '베']

무작위 단어를 빈칸으로 바꿔 표현하기

blankword = []
for i in range(len(randomword)) :
    blankword.append("_")

print(blankword)
['_', '_', '_', '_', '_', '_', '_', '_']

유저의 정답을 확인하고 빈칸을 맞춘 글자로 바꾸기

# 유저가 단어를 맞출 수 있는 기회 안내

print(f"당신이 단어를 맞출 수 있는 기회는 총 {userlife}회 입니다.")
print("비어있는 칸을 보고 예상되는 글자를 맞춰주세요.")
guessword = input("예상되는 글자를 입력해 주세요. : ")
if guessword in randomword :
    randomwordindex = list(filter(lambda x : randomword[x] == guessword, range(len(randomword)))) #list에서 value 값으로 다중 index찾기
    for i in range(len(randomwordindex)) :
        blankword[randomwordindex[i]] = guessword  #정답을 맞춘 글자로 바꾸기
    print(randomwordindex)
    print(blankword)

플레이어가 이겼는지 확인하기

# 유저가 단어를 맞출 수 있는 기회 안내
startlife = len(randomword)
userlife = len(randomword)
print(f"당신이 단어를 맞출 수 있는 기회는 총 {userlife}회 입니다.")
print("비어있는 칸을 보고 예상되는 글자를 맞춰주세요.")
print()

while userlife != 0 :

    if blankword != randomword :
        guessword = input("예상되는 글자를 입력해 주세요. : ")
        userlife -= 1
        if guessword in randomword :
            randomwordindex = list(filter(lambda x : randomword[x] == guessword, range(len(randomword)))) #list에서 value 값으로 다중 index찾기
            for i in range(len(randomwordindex)) :
                blankword[randomwordindex[i]] = guessword  #정답을 맞춘 글자로 바꾸기
            print("당신이 입력한 글자 : " + guessword)
            print(f"맞췄어요. 기회는 {userlife}회 남았습니다.")
            # print(randomwordindex)
            print(blankword)
        else:
            print(f"틀렸어요. 기회는 {userlife}회 남았습니다.")

    else :
        print(f"대단해요! 당신은 {startlife-userlife}회만에 성공했네요. 축하합니다. ")
        break

for i in blankword :
    if i == "_" :
        print("당신은 실패했습니다. ")
        break
당신이 단어를 맞출 수 있는 기회는 총 8회 입니다.
비어있는 칸을 보고 예상되는 글자를 맞춰주세요.
맞췄어요. 기회는 7회 남았습니다.
['비', '_', '_', '_', '_', '_', '_', '_']
맞췄어요. 기회는 6회 남았습니다.
['비', '타', '_', '_', '_', '_', '_', '_']
맞췄어요. 기회는 5회 남았습니다.
['비', '타', '5', '_', '_', '_', '_', '_']
맞췄어요. 기회는 4회 남았습니다.
['비', '타', '5', '0', '0', '_', '_', '_']
맞췄어요. 기회는 3회 남았습니다.
['비', '타', '5', '0', '0', '소', '_', '_']
맞췄어요. 기회는 2회 남았습니다.
['비', '타', '5', '0', '0', '소', '르', '_']
맞췄어요. 기회는 1회 남았습니다.
['비', '타', '5', '0', '0', '소', '르', '베']
당신이 맞췄군요. 대단해요.!

행맨 아스키코드 추가 및 프로그램 수정

import random

# 행맨 아스키코드 리스트
stages = ['''
  +---+
  |   |
  O   |
 /|\  |
 / \  |
      |
=========
''', '''
  +---+
  |   |
  O   |
 /|\  |
 /    |
      |
=========
''', '''
  +---+
  |   |
  O   |
 /|\  |
      |
      |
=========
''', '''
  +---+
  |   |
  O   |
 /|   |
      |
      |
=========''', '''
  +---+
  |   |
  O   |
  |   |
      |
      |
=========
''', '''
  +---+
  |   |
  O   |
      |
      |
      |
=========
''', '''
  +---+
  |   |
      |
      |
      |
      |
=========
''']

blankword = []
end_of_game = False
userlife = len(stages)-1
startcount = len(stages)
finalcount = len(stages)

# 게임 시작 및 랜덤 단어 선택하기
print("** 베스킨라빈스 아이스크림 행맨 게임 **")
print("베스킨라빈스 아이스크림 이름을 추측해서 맞춰보세요.")
print("행맨을 꼭 살려주세요")

wordlist = ["아이스허쉬앤리세스", "핑크스푼비긴즈", "비타500소르베","피나콜라다", "초코넛마카다미아", "오레오쿠키앤크림",
"월넛", "오레오쿠키앤카라멜", "엄마는외계인", "아몬드봉봉", "민트초콜릿칩", "슈팅스타", "베리베리스트로베리", "바람과함꼐사라지다",
"레인보유샤베트", "31요커트", "체리쥬빌레" ]

randomword = list(random.choice(wordlist)) # 문자열을 한 글자씩 끊어서 리스트로 바꾸기
len_randomword = len(randomword)

# 비어있는 단어 출력

for i in range(len_randomword) :
    blankword.append("_")

print(blankword)
print()

# 단어 추측하기
print(f"당신이 단어를 맞출 수 있는 기회는 총 {startcount}회 입니다.")
print("비어있는 칸을 보고 예상되는 글자를 맞춰주세요.")
print()

while end_of_game == False :
    guessword = input("예상되는 글자를 입력해 주세요. : ")
    print("당신이 입력한 글자 : " + guessword)
    if guessword in randomword :
      for i in range(len_randomword) :
        if randomword[i]== guessword :
          blankword[i] = guessword
      # randomwordindex = list(filter(lambda x : randomword[x] == guessword, range(len(randomword)))) #list에서 value 값으로 다중 index찾기
      # for i in range(len(randomwordindex)) :
      #     blankword[randomwordindex[i]] = guessword  #정답을 맞춘 글자로 바꾸기
      finalcount -= 1
      print("맞췄어요.")
      print(blankword)
    else :
      print("틀렸어요")
      print(stages[userlife])
      userlife -= 1

    if not "_" in blankword :
      print(f"대단해요! 당신은 {startcount-finalcount}회만에 성공했네요. 축하합니다. ")
      end_of_game = True

    if userlife == 0 :
      end_of_game = True
      print("당신은 실패해습니다.")
** 베스킨라빈스 아이스크림 행맨 게임 **
베스킨라빈스 아이스크림 이름을 추측해서 맞춰보세요.
행맨을 꼭 살려주세요
['_', '_', '_', '_', '_', '_', '_', '_']

당신이 단어를 맞출 수 있는 기회는 총 7회 입니다.
비어있는 칸을 보고 예상되는 글자를 맞춰주세요.

틀렸어요

  +---+
  |   |
      |
      |
      |
      |
=========

틀렸어요

  +---+
  |   |
  O   |
      |
      |
      |
=========

틀렸어요

  +---+
  |   |
  O   |
  |   |
      |
      |
=========

틀렸어요

  +---+
  |   |
  O   |
 /|   |
      |
      |
=========
틀렸어요

  +---+
  |   |
  O   |
 /|\  |
      |
      |
=========

틀렸어요

  +---+
  |   |
  O   |
 /|\  |
 /    |
      |
=========

당신은 실패해습니다.

최종 완성 파일