2014-07-11 6 views
1

행맨 게임에서 계속 작업 중입니다! 모든 파이썬 스크립트를 다시 실행하는 함수를 정의하고 싶습니다. 즉, 추측 할 단어, 공백 수, 추측 한 문자 및 행맨 다이어그램을 다시 설정합니다. 'yes'가 인수로 호출 된 경우입니다. 나는() 함수를 내장 execfile를 사용하여 시도했지만, 이것은 단지 이전에 공백을 추가하거나 새로운 단어가 서로 다른 길이의 경우 문자를 제거합니다Python 스크립트에서 스크립트를 다시 실행하는 명령

In [17]: attempt(word, 'r') 
u n d e r 

a b c - - f g h i j k - m - o p q - s t - v w x y z 
    _________ 
||  | 
|| 
||  
|| 
|| 
|| 
||_________ 

Congratulations! You guessed the correct word! 

Would you like to play again? 

이전 게임의 결과이다, 내가

In [18]: play_again('yes') 

In [19]: word = ['a','c','e'] 

In [20]: guess(word) 
>>>  _________ 
     ||  | 
     || 
     ||  
     || 
     || 
     || 
     ||_________ 

In [21]: attempt(word, 'a') 

을 쓸 때 나는

는 추측() 함수는 다시 재생 후 잘 재설정 할 것 같다 동안 보여줍니다 가
a n d 

- b c - - f g h i j k - m - o p q - s t - v w x y z 
    _________ 
||  | 
||  0 
||  /()\ 
|| 
|| 
|| 
||_________ 

, 코드의 나머지 부분이 그렇다 동일하게 유지 수 짐작할 단어의 길이. subprocess() 함수는 비슷한 결과를 보았습니다. 또는 기억하지 못했던 것에서도 작동하지 않았습니다. 전체 스크립트를 다시 실행하여 다시 초기화하는 간단한 방법이 있습니까?

나에게 답을 제공하기 위해 전체 스크립트가 필요한지 잘 모릅니다 (포함하지 않기를 바보인지는 모르겠 음). 필요한 경우 모두 수정하겠습니다. 게시물,하지만 최대한 짧게 유지하고 모든 것을 포함하지 않고 그냥 순간에 대한 play_again 함수를 포함하여 줄 알았는데. 희망이 모든 분명하다!

play_again 기능 :

def play_again(decision=''): 
if decision == 'yes': 
    execfile("C:\Users\Joel\Documents\Year 1\Labs\Computing\Learning\hangmanglobal.py") 
if decision == 'no': 
    print "Thank you for playing Hangman!" 
+1

'execfile '을 호출하는 대신'while' 루프로이를 해결해야합니다. 사용자가 게임을 끝내기로 결정했을 때 깨는 while while 루프에서 주 프로그램 (변수의 초기화 포함)을 가져 오십시오. – timgeb

답변

0

당신은 사용자가 중지하고자하면 나누기 while 루프와 함께이 문제를 해결해야한다. 이것에 대해 execfile을 사용하는 것은 다소 어색하며, 스크립트를 움직이면 깨질 것입니다.

의사 코드 :

while True: 
    # initialize variables 
    # redraw your graphics 
    # play the game 
    # ask user if he wants to play another game 
    if not play_again: 
     break 

print('Thanks for playing, bye') 

은 바람직하게는 거대한 while 루프를하지하기 위해, 위에서 설명 된 단계에 대한 함수를 호출한다.

관련 문제