2013-08-04 4 views
1

그래서 게임의 초기 시작을 메인 메뉴로 정의하고 레벨 내에서의 어려움과 같은 몇 가지 옵션을 선택하여 인쇄 할 수 있습니다. 게임에 대한 도움말을 참조하십시오. 그들이 도움을 청할 때 나는 주 메뉴로 돌아갈 수있는 옵션을 갖기를 원합니다. 왜 def mainmenu()를 만들었습니까? 그러나 비록 내 helpmenu 문을 경우에도 나는 그들이 입력 한 메뉴 또는 메인 메뉴에서 다시 호출해야 메뉴 그것은 아무것도하지 않는다고 진술했다. 우리는 우리가 사용해야 모듈을 가지고 있고이 같은 사실은 그래서 그냥 :) 여기 클래스 내에있는 def를 호출하는 방법

코드

 def mainmen(): 
     p.write("Welcome to 'The Great Escape'!\n") 
     p.write("\nPlease type what dificulty you would like to play the game,\nthe options  are Easy, Medium or Hard\n") 
     p.write("\nHowever, if you need help please type Help for instructions\n") 
     p.write(">>>") 

     dificulty = p.next() 

     if dificulty == "easy" or dificulty == "Easy": 
      p.clear() 
      p.write("The Great Escape") 
      easy() 

     elif dificulty == "medium" or dificulty == "Medium": 
      p.clear() 
      p.write("The Great Escape") 
      medium() 

     elif dificulty == "hard" or dificulty == "Hard": 
      p.clear() 
      p.write("The Great Escape") 
      hard() 


     elif dificulty == "help" or dificulty == "Help": 
      p.clear() 
      p.write("Welcome to 'The Great Escape' instructions\n") 
      p.write("\nTo complete the level you must move your Turtle around the\nline without touching the line itself\n") 
      p.write("\nControls\n") 
      p.write("Forward - 'W'\n") 
      p.write("Left  - 'A'\n") 
      p.write("Backwards - 'S'\n") 
      p.write("Right  - 'D'\n") 
      p.write("\nPlease type 'Menu' to go back to the main menu,\nor 'Exit' to quit the game\n") 
      p.write(">>>") 

**`here is my help menu if statements, I want it so that if they type Menu or menu they get taken back to the main menu.`** 

helpmenu = p.next() 
if helpmenu == "Menu" or helpmenu == "menu": 
    p.clear() 
    mainmenu() **<<This should call on the mainmenu but it doesn't??** 

elif helpmenu == "Exit" or helpmenu == "exit": 
    p.clear() 
    p.write("Hope you play soon!") 
의 무시 사용자 입력을 수신 의미합니다 p.next()와 같은 것을 사용하는 이유입니다
+0

나는 이것이 중복 된 것이라고 확신하지만, 다른 질문을 찾을 수 없습니다 ... –

+0

기본을 배우는 데 도움이되는 좋은 파이썬 서적을 권하고 싶습니다. 현재 무료로 제공되는 사람들 중 가장 좋은 사람은 Zed Shaws "Python을 배우는 것이 어려운 방법"입니다. http://learnpythonthehardway.org/ –

+3

수업이 필요하지 않습니다. 'mainmenu()'를 최상위 함수로 정의하고 코드를 단순화하십시오. (메소드 내에서'self '를 사용하지 않는 것에 유의하십시오. 이것은 메소드가 될 필요가 없다는 암시입니다. –

답변

0

당신은 객체로 클래스를 인스턴스화 할 수 있습니다

menu = mainmenu() 
menu.mainmen() 
+0

답변을 주셔서 감사합니다. Lennart 불행히도 Python 쉘은 메뉴가 정의되어 있지 않다고 말합니다. 그래서 나는 또한 mainmen.mainmenu를 시도했다. 그러나 mainmen이 정의되지 않았다는 것을 다시 말하고있다. – Daniel

+1

@Daniel : 아니요, 지금 당신이 말하는 것은 틀 렸습니다. 첫번째 줄은'menu'를 정의합니다. 정의되지 않았다고 말할 수 없습니다. 너 잘못 했어. –

0

을 일반 메모에서, 당신은 클래스 메소드를 호출하기 전에, 당신은 그 클래스의 인스턴스를해야하고 다음 점 표기법과 다른 방법을 호출 할 수 있습니다.

케이스에 돌아 오면 변수 p는 무엇입니까? Lennart의 답변은 코드가 작동하지 않는 경우이를 수행하는 방법입니다. 하단의 if 문과 관련된 문제입니다. 문을 실행하고 있습니다.

helpmenu = p.next() 

그런 다음 if 문에서 helpmenu의 값을 확인하고 있습니다. 모르고 어떤 P 것은 그 다음() 메소드가 무엇을 내가 정말 유용한 답변을 드릴 수 없습니다 만의 말을하자 그

p.next() 

반환 "메뉴"또는 "종료"입니다.

# Note that helpmenu is either "menu" or "exit", so either the if block will be 
# executed or the elif block will be executed. 
if helpmenu == "Menu" or helpmenu == "menu": 
    p.clear() 
    m = mainmenu() 
    m.mainmen() 

elif helpmenu == "Exit" or helpmenu == "exit": 
    p.clear() 
    p.write("Hope you play soon!") 

이 말한다면 당신은 어떤 값을 확인할 수 있도록 내가 helpmenu가) p.next를 (= 후 인쇄 문을 삽입 할 것을 제안, 다음과 같이이 경우 당신은 당신의 코드의 마지막 부분을 작성해야 그 라인 다음에 helpmenu를 추가하십시오.

다른 물건 나는 당신의 코드에서 발견 :

    == "쉽게"(와 helpmenu 유사) 당신이하지 않도록 모든 가능한 선택을 작성하는 당신은 difficulty.lower()를 사용할 수
  • .
  • if 블록에 else 문을 추가하는 것이 좋습니다. if/elif 블록 중 어느 것도 일치하지 않으면 코드가 아무 것도하지 않고 사용자가 잘못된 것을 알 수 없습니다.
  • 여기에 클래스를 정의하는 것은 꽤 쓸모가 없습니다. 그냥 작동시킬 mainmen() 함수를 작성할 수 있습니다. 이 용도로 사용할 개체를 만들 필요가 없습니다.

도움이되기를 바랍니다. 도움이 필요하면 알려주세요. 최선을 다해 도와 드리겠습니다.

+0

안녕하세요 lbanoglu 수, 그것은 매우 상세하고 훌륭한 의견을했습니다! 그러나 사람들이 도움을 받기 전에 내 모든 시나리오를 알아야한다는 요지를 놓쳤습니다. 그래서 대학에서 Py110이라는 모듈을 만들었습니다. 여기에는 우리가 사용할 수있는 모든 것들이 포함되어 있습니다. (인터넷에서 붙여 넣기를 복사 할 수 없도록하기 위해) 그래서 코드의 시작 부분에 p = Py110.Py110이 있습니다. 그 Py110 파일 내에는 거대한 함수 라이브러리 등이 있습니다. 그래서 >> >> >> p.next() <<를 쓸 때 이것은 키보드에서 문자열을 읽도록 정의됩니다. – Daniel

+0

그래서 mainmenu = p.next()를 입력하면 mainmenu = 사용자 입력을 나타내는 실제 방법입니다. 우리가 하나의 정수를 듣고 싶다면 nextInt가 있습니다. 이렇게하려면 p.nextInt()를 사용합니다. 지금 요점을 얻었을 것입니다. :) 그러나 메인 메뉴를 어떻게 만들 수 있는지 이해할 필요가 있습니다. 게임이 열렸을 때 표시되지만 동일한 코드를 다시 호출하여 얼룩진 코드로 끝내지 않도록 할 수있는 방법이 필요합니다. 처음에는 클래스 메인 메뉴를 사용하고 그 아래의 모든 코드를 묶어서 시작시 코드가 실행되었지만 오류가 발생했습니다. – Daniel

+0

아, 전체 게임 클래스를 만들고 medium() 메소드를 정의 할 수 있습니다. menu() 및 run() 메서드와 함께 easy() 및 hard()를 사용하면 게임 객체를 인스턴스화 한 후 run() 메서드를 호출 할 수 있습니다. 이렇게하는 또 다른 방법은 난이도 함수를 수정하여 사용자로부터 입력을받을 때 입력이 "menu"와 같은지 확인한 다음 메뉴 함수를 호출하는 것입니다. –

관련 문제