まずFirst Codeというのがでてきました。
何をするにも使う雛形ファイルのようなものですね。
こんな感じ。
#!/usr/bin/python import pygame from pygame.locals import * class App: def on_execute(self): pass if __name__=="__main__": theApp = App() theApp.on_execute()
で、初見でPythonコードをみてもこれ、いみわからないんで。
C言語に直します(コンパイルしてうごかせるわけじゃないよ)
class使ってるからC++ぽく。
#include <pygame> class App { void on_execute(self){ } }; int main(){ App theApp.on_execute(); }
まあ、雰囲気で感じ取ってください。
Cとかでいう括弧とかセミコロンがPythonには出てこなくて、かわりにインデントがものすっごい重要な意味を持ってます。カッコと同じ意味なんです。
Cでいうこれとか
for( int i=0; i<10; i++ ){ hoge() }
Pythonだとこうなります
for i in range(0,10): hoge()
一行短いめう!やっためう!
…さておいて、インデントがかなーり重要ってことは覚えておきましょう。
で、forとかifの後には大抵コロン「:」がつくのでこれも覚えちゃいます。
コードに戻ります。
import pygame
from pygame.locals import *
まずここから。
このあたりがすごくJavaっぽかったりそうでもなかったりします。
何をしてるかというと
pygameをインポートして(cでいうとこのinclude)
で、pygame.local という名前ですべての機能を取り込んでます…。
(import pygameだけでいいんじゃないの?って思いますよね。 わたしも思います)
このサンプルの2行、意味があるとは思えないんですが、狙いとしては書き換えて便利につかえるかなー? みたいな? (そうかな)
本来はこんな感じで使う気がします。
from DISP import pygame.display.*
from SOUND import pygame.mixer.*
まあ、どういう狙いがあるのかはわからないので今はおいておきましょう。
つぎですね。
class App: def on_execute(self): pass
on_executeという何もしないファンクションがひとつ入ったAppっていうクラスをつくってます。ただそれだけですね。
def hogehoge( value ): brabra
Pythonはこんな感じでファンクションを定義しますのでこれも覚えちゃいましょう。
さて残りの部分。
if __name__=="__main__": theApp = App() theApp.on_execute()
なんなのこれ、って思いますよね。わたしも思います。
一応なにをしているのかというと、 自分自身が __main__ として動作している場合には。
theAppと言う名前でAppクラスのインスタンスを作って、
theAppのon_executeを呼び出しています。
なんでこんなへんてこな処理がはいるかというと、Pythonは別のPythonスクリプトから呼び出して使う場合もあって、そのときは __name__ は __main__にならないんです。
つまり、他から呼び出したときは何も処理しませんよ。
ってことが書いてあるんです。
とりあえず今回はここまでー。
おまけ。
from pygame.locals import * について。
なんなのかわからなくて気持ち悪かったので探ったらこんな文書があった。
さて、pygame モジュールには "locals" という特別なモジュールが 存在します。このモジュールは pygame のサブセットを含んでおり、 それらのメンバはよく使われる定数や関数があります。これらの名前は お使いのプログラムのグローバル名前空間に入れておくと便利だということが わかっています。locals モジュールには矩形オブジェクトを作成するための "Rect" モジュールや、pygame の残りの部分とやりとりするのに 必要な "QUIT" "HWSURFACE" などの定数が含まれています。 locals モジュールをグローバル名前空間に import するのは完全にあなた次第です。 もし import しないことにしても、locals のすべてのメンバ名は pygame モジュール中ですでに使用可能になっています。
な、なるほど。
実際、Raspberry PiのPyGameディレクトリにあるpyスクリプトのどれをみてもfrom pygame.locals import * は書いてあったのでpygameを使う場合はこうやって書くんだって思っておいたほうが気楽そうです。