【 PCゲーム制作入門 No.08 】

グローバル変数とローカル変数を学ぼう

サンプルの解説を進めます。

# メイン処理
def main():
    pygame.init();        # Pygameの初期化
    global GMX, GMY, screen, map;
    (x,y) = (GMX/2, GMY/2)    # キャラ位置
    pygame.display.set_caption("pysmp");    # タイトルバーに表示する文字
    font = pygame.font.Font(None, 24);    # フォントの設定(サイズpx)
    pygame.mixer.set_num_channels(8);    # SEのチャンネル数を設定
        :
        :
        :

ここでは、main関数を定義しています。
コメントにもあるように、メインの処理を行う為の関数です。

最初の6行で、初期化系の処理を行っています。
以下、詳細。

pygame.init(); はpygameライブラリを初期化する関数です。
最初に実行しておきましょう。


global … は、「グローバル変数」を使うことを宣言しています。
(実は無くても動くのですが、一応、分かりやすくする為に書いています)
変数には、「グローバル変数」と「ローカル変数」というのがあって、
「グローバル変数」は、関数の外にある変数で、どの関数からでも使用できます。
「ローカル変数」は、その関数内だけで使える変数です。

例えば、このような場合↓
a = 0;    # a はグローバル変数になる

def sub():
    a = 1;

def main():
    b = a;

def test():
    print(a);
    print(b);    # ←エラーになる
    b = 0;    # ローカル変数なので、main関数内の b とは別物

a = 0; を関数の外で定義することで、a は、「グローバル変数」になります。
なので、3つの関数 sub , main , test 内で使用しても問題ありません。
ですが、main関数内で定義された b は、「ローカル変数」になる為、sub や test関数で使うことはできません。
また、test関数内で定義された b は、test関数だけの「ローカル変数」なので、main関数内の b とは別物になります。

この、「グローバル変数」と「ローカル変数」も、色々試して理解しておきましょう。


続いて、(x,y) = (GMX/2, GMY/2) では、
x と y という「ローカル変数」に、「グローバル変数」の GMX と GMY を 2で割った値を入れています。
この処理は↓のように書いても同じです。 好きな方法で書いてください。
    x = GMX / 2;
    y = GMY / 2;


pygame.display.set_caption("pysmp"); は、ウインドウのタイトルバーの文字を指定しています。
試しに、"pysmp" の部分を適当に書き換えてみてください。


font = pygame.font.Font(None, 24); は、サイズが24ピクセルのフォントを、
fontという「ローカル変数」で使えるように設定しています。
(詳しくは実際に使用する時に解説します)


pygame.mixer.set_num_channels(8); は、効果音を同時に鳴らせる数を指定しています。
例えば、1に設定すると、2音同時に再生した時、後から再生した方しか再生されなくなりますので、とりあえず 8くらいを設定しておけば大丈夫でしょう。


次のページへ



[ StudioGIW TOPページ ]