2013-01-04 2 views
0

저는 파이썬에 매우 익숙합니다. 내 파이에 대한 몇 가지 물건을 기다리는 동안 창문에서 실행됩니다. 사용자가 텍스트 입력을 통해 탑을 통과하는 게임을 작성 중입니다.사용자가 파이썬에서 한 번만 함수를 사용할 수있게합니까?

사용자는 "a" "d" "w"를 사용하여 방을 둘러보고 sutff를 수집 할 수 있습니다. 그러나 사용자가 이미 "a"("왼쪽으로 보임")을 들여다 보았다면 나는 그들이 이미 거기에 있다는 것을 알릴 필요가 있습니다. 이것은 내 코드이지만 명백한 결함이 있습니다.

#if user hits 'a' they look left 
def roomOneLeft(): 
    print '-- You search some loose rubble and find some cloth' 
    return roomOneMoves() 

#where the user selects a movement 
def roomOneMoves(): 
    left = 0 
    move = raw_input("") 
    if left == 1: 
     print 'you have already looked here' 
     return roomOneMoves() 

    if move == "a": 
     left = left + 1 
     roomOneLeft() 

정적으로 "왼쪽"을 설정할 수 있습니까? 그리고 ant는 java와 같은 전역 변수로 설정하는 방법을 설명합니다. 이것은 분명히 작동하지 않습니다. 왜냐하면 반환 할 때 0으로 되돌아갑니다. 어떤 도움이라도 대단히 감사하겠습니다!

답변

2

전역으로 "왼쪽"을 정의 할 수 있습니다. 이처럼 :

left = 0 

#where the user selects a movement 
def roomOneMoves(): 
    global left 

    move = raw_input("") 
    if left == 1: 
     print 'you have already looked here' 
     return roomOneMoves() 

    if move == "a": 
     left = left + 1 
     roomOneLeft() 
+0

당신은 보석입니다! 고맙습니다. –

+0

질문에 대한 답변을 선택하는 것이 좋습니다. 계속 지원해 드리겠습니다 ... – ATOzTOA

1

는 함수에서 변경하기 위해 다음 모듈 범위에 선언하고, 변수 지구를 만드는 global 키워드를 사용합니다.

left = 0 
def some_func() 
    global left 
    left = 1 

이렇게하면 함수 내에서 전역 변수를 편집 할 수 있습니다.

귀하의 static 변수 질문에 답하기 위해 저는 파이썬에서 이것을 할 수 없다고 생각합니다. this 질문을 참조하십시오.

관련 문제