2012-01-09 2 views
2

私はPythonのゲーム開発の本から取られた次のスクリプトを持っています。著者は、1つを除いてすべてを説明します。私は自分自身でそれを理解しようとしましたが、初心者としてはそれほど意味がありません。ここでは、コードは次のようになります。この特定のパラメータはどのように値を受け取るのですか?

import random 
import time 

def displayIntro(): 
    print('You are on a planet full of dragons. In front of you,') 
    print('you see two caves. In one cave, the dragon os friendly') 
    print('and will share his treasure with you. The other dragon') 
    print('is greedy and hungry, and will eat you on sight.') 
    print() 

def chooseCave(): 
    cave='' 
    while cave != '1' and cave != '2': 
     print('Which cave will you go into? (1 or 2)') 
     cave=input() 
    return cave 

def checkCave(chosenCave): 
    print('You approach the cave...') 
    time.sleep(2) 
    print('It is dark and spooky...') 
    time.sleep(2) 
    print('A large dragon jumps out in front of you! He opens his jaws and...') 
    print() 
    time.sleep(3) 
    friendlyCave=random.randint(1,2) 
    if chosenCave==str(friendlyCave): 
     print('Gives you his treasure!') 
    else: 
     print('Gobbles you down in one bite.') 

playAgain='yes' 
while playAgain=='yes' or playAgain=='y': 
    displayIntro() 
    caveNumber=chooseCave() 
    checkCave(caveNumber) 
    print('Do you want to play again? (yes or no)') 
    playAgain=input() 

今私の質問はこれです:どのようにパラメータchosenCaveが値を取得するのですか?私にとってはどこにも定義されていないようです。 caveが何で、何がfriendlyCaveであるかを定義しましたが、chosenCaveではありません。ここで何が起きてるの?私は何が欠けていますか?

申し訳ありません、これは初心者向けの完全な質問です。 chosenCavecheckCave()

​​

caveNumberに渡されるところ

答えて

7

パラメータselectedCaveは、checkCave関数が呼び出されたときにその値を受け取ります。それ以前は値がありません。

関数を定義するときは、その関数にパラメータを宣言するためのオプションが必要です。これは関数の名前の隣にある括弧の中にselectedCaveがあるところです。これらの括弧は、正式に「正式なパラメータ宣言」と呼ばれるものを作成します。誰かがあなたのメソッドを呼び出す方法を定義します。実際にはメソッドを呼び出すわけではありませんが、呼び出す方法はすべての人に伝えます。

あなたはこのコードを参照してくださいコードの下部にあるダウン:

caveNumber = chooseCave() 
checkCave(caveNumber) 

「実際のパラメータ宣言」と呼ばれています。これを言いたいという派手なやり方は、selectedCaveの実際の価値がどうなるかです。あなたの例では、selectedCaveには変数caveNumberの値が割り当てられています。

これは、selectedCaveが永遠に1つの値であることを意味するわけではありません。これは、この関数の実行中に特定の値であることを意味します。関数を呼び出すたびに、selectedCaveに新しい値を割り当てることができます。例えば、ユーザは洞窟1を選択し、宝物を手に入れて、再度プレイするために「はい」と言い、次に洞窟2を選択することができます。これはcheckCaveの2回の呼び出しです。最初はcheckCave(1)、2番目はcheckCave(2)です。関数の呼び出しごとに、selectedCaveの値を変更することができます。

+0

これは完璧な意味合いです。ありがとう、私は実際には、今日かなり早い数時間前から立ち往生していました。 –

0

次のコードは、関数が呼び出された後chosenCaveです。

mainのどこかの関数chooseCave()が呼び出され、プロセス全体が停止しますが、そのコードは例にはリストされていないようです。

関連する問題