Download presentation
1
예제 프로그램 소개 한기용
2
목차 왜 Python? Hangman이란? Hangman 실행 Hangman 소스코드 설명 추가 기능 설명
3
왜 Python?
4
실리콘밸리에서 가장 뜨는 언어 순위 Javascript Java PHP Python C# C++ Ruby C
5
Python의 강점 스크립트 언어의 장점 존재 다양한 라이브러리 다른 스크립트 언어에 비해 빠른 속도
질문: 스크립트 언어의 장점? 단점 (syntax checking). Strongly Typed Language vs. Loosely Typed Language
6
Hangman이란?
7
잔인한(?) 단어 추측 게임 주어진 단어의 글자를 하나씩 추측하여 주어진 기회 수 안에 끝내면 성공 아니면 교수대로 한걸음씩 전진
8
HANGMAN 프로그램 실행
9
Hangman 코드 실행하기 (1) Hangman 프로젝트를 Github에서 Clone 웹브라우저에서 다음 링크 방문
오른쪽 하단링크에서 Download ZIP 선택
10
Hangman 코드 실행하기 (2) 다운로드된 파일의 압축 해제 디렉토리로 이동해서 파일 이름은 hangman-master
다음으로 hangman.py를 실행 python3.4 hangman.py
11
Hangman 소스코드 설명
12
상위 레벨 실행도 (main) 단어를 하나 임의로 선정 (getRandomWord)
교수대 그림, 현재 입력된 글자들, 최종 단어 상태 표시 (displayBoard) 단어 추측이 끝났으면 (성공 혹은 실패) 해당 메세지 출력하고 게임을 더 할 것인지 입력 (playAgain) 사용자로부터 글자 입력 (getGuess) 이때 몇가지 검사가 필요 (알파벳인지, 이미 입력된 글자인지 등등) 입력글자가 최종단어에 있나? 있으면 단어가 다 맞췄는지 검사 아니면 2로 이동 아니면 모든 기회가 다 소진되었는지 검사 아니면 2로 이동
13
중요 변수 HANGMANPICS (list of string) words (list of string)
행맨 그림이 아스키 아트 형태로 존재 words (list of string) 게임에 사용될 단어들의 리스트. 현재로는 하드코딩되어 있음 secretWord (string) 게임에 사용될 비밀 단어! missedLetters (string) 사용자가 입력한 글자들 중 실패한 글자들을 이 변수에 유지 correctLetters (string) 사용자가 입력한 글자들 중 성공한 글자들을 이 변수에 유지 gameSucceeded (boolean) 게임 성공 여부를 이 변수에 유지 gameFailed (boolean) 게임 실패 여부를 이 변수에 유지
14
main def main(): """Main application entry point.""” print('H A N G M A N') missedLetters = '’ correctLetters = '’ gameSucceeded = False gameFailed = False secretWord = getRandomWord(words) while True: displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord) if gameSucceeded or gameFailed: if gameSucceeded: print('Yes! The secret word is "' + secretWord + '"! You have won!') else: print("Run out of guesses") # Ask the player if they want to play if playAgain(): missedLetters = '' correctLetters = '' gameSucceeded = False gameFailed = False secretWord = getRandomWord(words) continue else: break # Let the player type in a letter. guess = getGuess(missedLetters + correctLetters) if guess in secretWord: correctLetters = correctLetters + guess gameSucceeded = checkCorrectAnswer(correctLetters, secretWord) missedLetters = missedLetters + guess gameFailed = checkWrongAnswer(missedLetters, secretWord)
15
getRandomWord words = 'ant baboon badger bat bear beaver camel cat clam cobra cougar coyote crow deer dog donkey duck eagle ferret fox frog goat goose hawk lion lizard llama mole monkey moose mouse mule newt otter owl panda parrot pigeon python rabbit ram rat raven rhino salmon seal shark sheep skunk sloth snake spider stork swan tiger toad trout turkey turtle weasel whale wolf wombat zebra'.split() def getRandomWord(wordList): # This function returns a random string from the passed list wordIndex = random.randint(0, len(wordList) - 1) return wordList[wordIndex]
16
displayBoard def displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord): print(HANGMANPICS[len(missedLetters)]) print() print('Missed letters:', end=' ') for letter in missedLetters: print(letter, end=' ') blanks = '' for i in range(len(secretWord)): # replace blanks with correctly guessed letters if secretWord[i] in correctLetters: blanks += secretWord[i] else: blanks += '_’ for letter in blanks: # show the secret word with spaces in between each letter
17
getGuess def getGuess(alreadyGuessed): # Returns the letter the player entered. # This function makes sure the player entered a single letter while True: print('Guess a letter.') guess = input().lower() if len(guess) != 1: print('Please enter a single letter.') elif guess in alreadyGuessed: print('You have already guessed that letter. Choose again.') elif guess not in 'abcdefghijklmnopqrstuvwxyz': print('Please enter a LETTER.') else: return guess
18
playAgain def playAgain(): # This function returns True if the player wants to play again, otherwise it returns False. print('Do you want to play again? (yes or no)') return input().lower().startswith('y')
19
checkCorrectAnswer def checkCorrectAnswer(correctLetters, secretWord): foundAllLetters = True for i in range(len(secretWord)): if secretWord[i] not in correctLetters: foundAllLetters = False break return foundAllLetters
20
checkWrongAnswer def checkWrongAnswer(missedLetters, secretWord): # Check if player has guessed too many times if len(missedLetters) == len(HANGMANPICS) - 1: return True return False
21
추가 기능 설명
22
다음 두 가지 기능 추가 예정 단어를 파일에서 읽기 (5장에서) 최고 점수 파일에 저장하기 (숙제)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.