トップへ戻る Cdrom || Color || Cursors || Display || Draw || Event || Examples || Font || Gfxdraw || Image || Joystick || Key || Locals || Mixer || Mouse || Movie || Music || Overlay || Pixelarray || Pygame || Rect || Scrap || Sndarray || Sprite || Surface || Surfarray || Tests || Time || Transform
pygame.display
    ウィンドウ画面やスクリーンの制御を行うpygameモジュール

    このモジュールではpygameのディプレイ部分を制御することができます。 Pygameで使用されるdisplay Surfaceは、ウィンドウ内に描写されるものかフルスクリーンで動作するもののどちらか一つになります。displayを作成すると、それがメインで画面に表示されるものとして扱われます。描写処理を行ってもそれはすぐに画面に反映されるわけではなく、画面の更新を行うための二つの命令のうちどちらかを実行する必要があります。

    ディスプレイの原点はスクリーンの左上となり、そこのx座標が0、y座標が0となります。各座標の数値が増えるほど座標位置はスクリーンの右下へ移動します。

    この pygameのdisplayは複数のモードの中から一つを選んで初期化することができます。既定ではdisplayはソフト側のメモリー上で制御されます。 この他にもハード側での高速描写処理やOpenGLを使うような特別なモードを設定することができます。これらのモードはpygame.display.set_mode で特定の引数を設定することで切り替えます。

    Pygameでは、いかなる状況でも一つのdisplayしかアクティブ状態にすることができません。pygame.display.set_mode 命令で新しいdisplayを作成すると、これまで使用していたdisplayは終了して閉じられます。ピクセル形式や画面解像度に関する精密な制御操作が必要な場合は、pygame.display.mode_ok命令や pygame.display.list_modes命令、pygame.display.Info命令を使用することでdisplayの情報を参照することができます。

    display Surfaceが作成されると、このpygame.displayモジュールに含まれている命令を使って作成されたdisplayの操作を行います。pygame.displayモジュールの初期化に失敗してしまうと、display Surfaceでの画面描写を行うことができません。ディスプレイモードの切り替えを行うと、作成済みdisplay Surfaceは自動的に新しいディスプレイモードでの処理ができるように切り替えが行われます。

    ディスプレイモードの切り替えが行われると、いくつかのイベント処理がpygameのイベント登録リストに設定されます。 pygame.QUITは、ユーザーがプログラムの終了処理を実行した時に発生するイベントです。ディスプレイが選択された状態になったり選択解除状態になった時は、 pygame.ACTIVEEVENTイベントが発生します。displayにpygame.RESIZABLEフラグが設定されていた時は、 ユーザーがウィンドウのサイズを変更するとpygame.VIDEORESIZEイベントが発生します。スクリーンに直接描写を行うハードウェアディスプレイモードでは、ウィンドウの再描写が必要な時にpygame.VIDEOEXPOSEイベントが発生します。



    pygame.display.init
      pygame.displayモジュールを初期化します。
      pygame.display.init(): return None

      pygame.displayモジュールを初期化します。このdisplayモジュールは初期化しなければ一切使用することができません。この初期化処理は、通常は上位に位置するpygame.init処理を実行した時に自動的に実行されます。

      Pygameはpygame.displayモジュールが初期化された時に、バックエンドにある内部displayの中から描写処理に使用するものを一つ選択します。 ここで選択されるdisplayのモードは、ユーザーのパソコン環境やユーザ権限によって変わってきます。displayモジュールが初期化された後は、バックエンドの制御に使用される環境変数SDL_VIDEODRIVERを設定することができます。初期化の時に複数のdisplayモードを選択できる環境は下記の通りになります。

         Windows : windib, directx
         Unix    : x11, dga, fbcon, directfb, ggi, vgl, svgalib, aalib
      

      いくつかのプラットフォームでは、作成済みウィンドウにpygameのディスプレイを埋め込むことが可能です。その処理を行うには、 環境変数 SDL_WINDOWIDをウィンドウIDかウィンドウハンドルに設定しなければいけません。この環境変数は、 pygame displayの初期化時に設定されているかどうかチェックされます。この埋め込みdisplayでプログラムを実行している時は、予期せぬ多くの副作用が発生することがあるので注意してください。

      この初期化処理は二回以上実行しても特に問題はありません。複数回初期化をしても全く意味がないのです。



    pygame.display.quit
      pygame.display モジュールの初期化を解除します。
      pygame.display.quit(): return None

      この処理はpygame.displayモジュールを全て終了させます。これはアクティブなウィンドウが閉じられるということです。この処理はプログラムが終了した時に自動的に実行されます。

      この初期化処理は二回以上実行しても特に問題はありません。複数回初期化の解除をしても全く意味がないのです。



    pygame.display.get_init
      pygame.displayモジュールが初期化されていた場合はTrueを戻り値として返します。
      pygame.display.get_init(): return bool

      pygame.displayモジュールが初期化されていた場合はTrueを戻り値として返します。



    pygame.display.set_mode
      display描写用のウィンドウやスクリーンを初期化します。
      pygame.display.set_mode(resolution=(0,0), flags=0, depth=0): return Surface

      この命令ではdisplay Surfaceを作成します。設定する引数によってディスプレイの種類が決められます。ここで作成されたディスプレイは、ユーザーの使用環境に最も最適化された状態のものとなります。

      resolution引数は、displayの幅と高さを表す二組の数字です。flags引数は、追加で指定できるものです。depth 引数は色を描写するのに使用されるビット数を表します。

      作成されたSurfaceは通常のSurfaceと同じように描写処理を行うことができ、編集した結果はパソコンのモニターに表示されます。

      resolution引数を設定しなかったり(0, 0)を設定した場合に、pygameが SDLのバージョン1.2.10以降を使用していると、作成されたSurfaceはパソコンのモニターと同じ大きさとなります。displayの幅か高さのどちらか一方に0を設定していた場合には、Surfaceの設定されなかった値についてはパソコンのモニターと同じ幅や高さが設定されます。使用してるSDLのバージョンが1.2.10より古い場合は例外が発生してしまいます。

      depth 引数は通常は設定しないほうがよいでしょう。使用しているパソコン環境に最も最適化されて処理速度の速いdepth値が既定値として設定されています。ゲーム制作時に特別なカラーフォーマットを使う必要がある場合には、depth引数を設定してビット深度を制御できます。処理が遅くなりすぎて使用できないカラービット深度が設定された場合、 Pygameそのカラービット深度に近い値を使って処理を実行します

      フルスクリーンディスプレイモードが設定された時、場合によってはこちらで想定していたフルスクリーン状態にならない場合もあります。こうした状況において、pygameは要求に最も近いディスプレイモードを選び出して実行します。 作成されたsurfaceのサイズは、設定されたresolution引数と常に同じ値になります。

      flags 引数を設定することで、ディスプレイの種類を任意のものに切り替えることができます。ディスプレイの種類は複数ものから選んで設定することができ、またビット単位のor演算子を使用することでそれら複数ものを組み合わせて設定することができます。( pygame.RESIZABLE | pygame.NOFRAME)というように指定します。flags引数に0を設定したり、flags引数の設定をしなかった場合は、規定値のソフトウェア側で起動するウィンドウとなります。以下のflags引数から任意の値を選んでディスプレイの種類を決定します。:

         pygame.FULLSCREEN    フルスクリーンのディスプレイを作成します。
         pygame.DOUBLEBUF     ハードウェア側での高速描写処理やOpenGLを使用する時にはこの値設定した方が良いでしょう。
         pygame.HWSURFACE     ハードウェア側での高速描写処理を使用します。フルスクリーンモードでしか使用できません。
         pygame.OPENGL        OpenGLでの描写処理を行うディスプレイを作成します。
         pygame.RESIZABLE     ウィンドウのサイズ変更ができるようになります。
         pygame.NOFRAME       ウィンドウの外枠やGUI部品が表示されなくなります。
      


    pygame.display.get_surface
      作成済みのdisplay surfaceの情報を取得します。
      pygame.display.get_surface(): return Surface

      作成済みのdisplay surfaceの情報を戻り値として返します。display surfaceが作成されていなかった場合は、Noneが戻り値として返されます。



    pygame.display.flip
      display Surface全体を更新して画面に描写します。
      pygame.display.flip(): return None

      この命令では、display全体の内容を更新します。ディスプレイモードに pygame.HWSURFACEpygame.DOUBLEBUFを使用してる場合は、この命令は現在行われている一連の描写処理が完了するのを待ったうえでsurfacesの更新を行います。他のディスプレイモードを使用している場合には、単純にsurfaceの内容全体の更新が行われます。

      pygame.OPENGL対応のディスプレイモードを使用している場合は、この命令はOpenGLのバッファスワップ機能を実行して画面の更新を行います。



    pygame.display.update
      スクリーンの一部分のみを更新します。この命令はソフトウェア側での表示処理に最適化されています。
      pygame.display.update(rectangle=None): return None
      pygame.display.update(rectangle_list): return None

      この命令はpygame.display.flip命令をソフトウェア側での表示処理に最適化したようなものです。画面全体ではなく画面の一部の更新しかできません。引数を何にも設定しなければpygame.display.flipと同じようにSurface全体が更新されます。

      この命令ではrect型の値やそのリストを引数として設定することができます。更新する範囲一つ一つ設定して何回もupdate命令を呼び出すよりは、範囲のリストをまとめて設定して一度のupdate命令で完了させる方が効率が良いでしょう。更新する範囲のリストを引数に設定した場合、リストの中にNone値が入っていても特に問題はありません。そのNone値は無視されて処理が行われます。

      この命令はpygame.OPENGL対応のディスプレイモードでは使用することができず、例外が発生してしまいます。



    pygame.display.get_driver
      pygameで使用するディスプレイドライバー名を取得します。
      pygame.display.get_driver(): return name

      Pygameは初期化される時に、使用できるいくつかのディスプレイドライバーの中から一つを選びます。この命令ではpygameで使用されるディスプレイドライバーの、プログラム内部で使われている名前を戻り値として返します。This can be used to provide limited information about what display capabilities might be accelerated. pygame.display.set_modeでは指定可能ないくつかのオプションが見られますので、詳しくはそのSDL_VIDEODRIVERフラグを参照してください。



    pygame.display.Info
      ビデオディスプレイの情報を保持したクラスを作成します。
      pygame.display.Info(): return VideoInfo

      ディスプレイ情報のクラスを作成します。このクラスからは現在のグラフィック環境の詳細が記されたいくつかの属性を参照できます。この命令がpygame.display.set_modeを実行する前に呼び出された場合は、使用環境によっては既定ディスプレイモードを設定した状態の情報が作成されます。あなたがディスプレイモードを設定した後、ちゃんと意図したモードに設定されているかを確認するためにこの命令を使用することができます。この命令で作成されたビデオ情報クラスでは、下記の項目を参照することができます。:

        hw:         ディスプレイがハードウェア側での高速描写モードならTrueとなる
        wm:          ディスプレイがウィンドウを使用する描写モードならTrueとなる
        video_mem:  ディスプレイで使用されるビデオメモリーのメガバイト数。不明の場合は0となる
        bitsize:    ピクセル1つを保存するのに使用されるビット数
        bytesize:   ピクセル1つを保存するのに使用されるバイト数
        masks:      RGBA形式の色情報をピクセルへ適用するために使用する、4つの数値を保持するタプル型の値
        shifts:     RGBA形式の色情報をピクセルへ適用するために使用する、4つの数値を保持するタプル型の値
        losses:     RGBA形式の色情報をピクセルへ適用するために使用する、4つの数値を保持するタプル型の値
        blit_hw:    ハードウェア側Surfaceでの高速コピー描写が使用可能な場合はTrueとなる。
        blit_hw_CC: ハードウェア側Surfaceでの透明色を適用した高速コピー描写が使用可能な場合はTrueとなる。
        blit_hw_A:  ハードウェア側Surfaceでのピクセル単位の透過を適用した高速コピー描写が使用可能な場合はTrueとなる。
        blit_sw:    ソフトウェア側Surfaceでの高速コピー描写が使用可能な場合はTrueとなる。
        blit_sw_CC: ソフトウェア側Surfaceでの透明色を適用した高速コピー描写が使用可能な場合はTrueとなる。
        blit_sw_A:  ソフトウェア側Surfaceでのピクセル単位の透過を適用した高速コピー描写が使用可能な場合はTrueとなる。
        current_h, current_w:  現在のビデオモードでのウィンドウの幅と高さの値です。
        display.set_modeを実行する前にこの値を取得すると、パソコンのモニターの幅と高さの値が得られます。
          (current_hと current_wはSDL のver1.2.10、pygameのver 1.8.0から使用できるようになりました。)
          ver1.2.10以前のSDLでcurrent_hと current_wを参照すると、-1のエラー値となります。
      

      ※原文には current_h, current_hと記載されていますが、誤記の可能性があるため current_h, current_wと読み替えて訳しています。



    pygame.display.get_wm_info
      現在のウィンドウシステムの情報を取得します。
      pygame.display.get_wm_info(): return dict

      文字列をキーとしたdictionary型のリストを作成します。ここで得られる文字列と数値は、システムによって任意の値が設定されます。使用環境によっては、システム情報を持たないために空のdictionary型リストが戻り値として返される場合もあります。殆どの環境では "window"キーと現在のディスプレイに合わせたシステムIDを表す数値が戻り値として返されます。

      この機能はpygameのver 1.7.1から実装されました。



    pygame.display.list_modes
      使用できるフルスクリーンモードのリストを取得します。
      pygame.display.list_modes(depth=0, flags=pygame.FULLSCREEN): return list

      この命令では指定したカラー深度で作成可能なウィンドウの大きさのリストと戻り値として返します。設定した引数で作成できるディスプレイモードがない場合、空のリストが戻り値として返されます。戻り値の値が-1の場合でも要求した解像度で問題なく動作するでしょう。 (これはウィンドモードで実行した時によく起こる現象です。).戻り値のサイズの並び順については、大きいものから順に並んでいます。

      depth引数に0を設定した場合、 SDLは現在のディスプレイ環境最適なカラー深度を選んで処理を実行します。flags引数は既定ではpygame.FULLSCREENとなっていますが、特定のフルスクリーンモードのリストを取得するには他にも追加でflags引数を設定する必要があります。



    pygame.display.mode_ok
      ディスプレイモードに最適なカラー深度を取得します。
      pygame.display.mode_ok(size, flags=0, depth=0): return depth

      この命令ではpygame.display.set_mode命令と同じ引数を使用します。この命令は要求されたディスプレイモードが使用できるかどうかを確認するために使用します。設定したディスプレイモードが使用できない環境の場合は0が戻り値として返されます。それ以外の場合はディスプレイの要件に最適のピクセル深度が戻り値として返されます。

      通常depth引数を設定する必要はありませんが、使用環境によっては複数のディスプレイ深度をサポートしている場合もあります。depth引数を設定してみることによって、使用環境に最も適した深度を調べられるかもしれません。

      大抵の場合、flags引数にはpygame.HWSURFACEpygame.DOUBLEBUF、そしておそらくpygame.FULLSCREENがよく使用されるでしょう。設定したディスプレイflagsが使用できない環境の場合は0が戻り値として返されます。

      ※原文ではIt is used to 「depermine」 if a requested display mode is available.となっていますが、誤記の可能性があるためIt is used to 「determine」 if a requested display mode is available.と読み替えて訳しています。



    pygame.display.gl_get_attribute
      現在のディスプレイ環境に合わせたOpenGLフラグの値を取得します。
      pygame.display.gl_get_attribute(flag): return value

      pygame.display.set_mode命令で pygame.OPENGLフラグを設定した場合は、実行後にこの命令が呼び出して設定したOpenGLの値に問題がないかチェックすると良いかもしれません。設定できるflags引数一覧についてはpygame.display.gl_set_attributeを参照してください。



    pygame.display.gl_set_attribute
      ディスプレイモードに合わせたOpenGLの属性を設定します。
      pygame.display.gl_set_attribute(flag, value): return None

      pygame.display.set_mode命令でpygame.OPENGLフラグを設定した場合は、Pygameは色やダブルバッファリングといったOpenGLの属性を自動的に設定します。 OpenGLでは任意に設定して制御することができる属性がいくつかあります。これらの属性の中の一つのflagを、正しい値と共に設定します。この命令はpygame.display.set_mode命令よりも前に実行しなければなりません。

      設定できるOPENGL flags は下記のものがあります;

        GL_ALPHA_SIZE, GL_DEPTH_SIZE, GL_STENCIL_SIZE, GL_ACCUM_RED_SIZE,
        GL_ACCUM_GREEN_SIZE,  GL_ACCUM_BLUE_SIZE, GL_ACCUM_ALPHA_SIZE,
        GL_MULTISAMPLEBUFFERS, GL_MULTISAMPLESAMPLES, GL_STEREO
      


    pygame.display.get_active
      ディスプレイがアクティブ状態ならTrueとなります。
      pygame.display.get_active(): return bool

      pygame.display.set_mode命令が呼び出された後、ディスプレイSurfaceはスクリーン上で見えるようになります。大抵のウィンドウはユーザーによって隠すことができます。ディスプレイSurfaceが隠されたりアイコン化された場合、この命令はFalseを戻り値として返します。



    pygame.display.iconify
      ディスプレイsurfaceを最小化します。
      pygame.display.iconify(): return bool

      ディスプレイsurfaceが描写されるウィンドウを最小化したり隠したりします。全ての環境においてディスプレイの最小化がサポートされている訳ではありません。最小化に成功した場合はTrueが戻り値として返されます。

      ディスプレイがアイコン化された時、pygame.display.get_active命令はFalseを戻り値として返します。ウィンドウが最小化されるとイベントキューがACTIVEEVENTイベントを受け取ります。



    pygame.display.toggle_fullscreen
      フルスクリーンモードとウィンドウモードの切り替えを行います。
      pygame.display.toggle_fullscreen(): return bool

      ウィンドウモードとフルスクリーンモードの切り替えを行います。この命令はunix x11ビデオドライバー上でのみしか機能しません。大抵の場合、pygame.display.set_mode命令でフルスクリーンモードのフラグを設定して実行する方が良いでしょう。



    pygame.display.set_gamma
      ハードウェアのガンマランプを変更します。
      pygame.display.set_gamma(red, green=None, blue=None): return bool

      ハードウェアディスプレイの赤、緑、青のガンマ値を設定します。green引数とblue引数が設定されなかった場合は、それらは両方ともred引数と同じ値になります。全ての環境においてガンマランプがサポートされている訳ではありません。この処理に成功した場合はTrueが戻り値として返されます。

      ガンマ値が1.0だとディスプレイ表示は色に比例した明るさとなります。1.0も小さい値だとディスプレイ表示は暗くなり、大きい値だと明るくなります。



    pygame.display.set_gamma_ramp
      ルックアップテーブルを使用してハードウェアのガンマランプを変更します。
      pygame.display.set_gamma_ramp(red, green, blue): return bool

      詳細なルックアップテーブルを使用して、赤、緑、青のガンマランプを設定します。各引数には256個の要素を持ったシーケンス型の値を設定する必要があります。要素には0から0xffff(65536)まで範囲内の数字が使用できます。全ての環境においてガンマランプがサポートされている訳ではありません。この処理に成功した場合はTrueが戻り値として返されます。

      ※原文では簡易説明文と公式が逆になっている可能性があるため、修正して訳しています。



    pygame.display.set_icon
      ウィンドウに表示されるシステムアイコンを変更します。
      pygame.display.set_icon(Surface): return None

      ウィンドウに表示されるシステムアイコンを設定します。全てのウィンドウにおいて、既定ではシンプルなpygameのロゴマークがタイトルバーに表示されます。

      任意のsurfaceを引数として設定することできますが、大抵のシステム環境では幅32x高さ32以下の画像を求められます。設定した画像は透明色を持つことができ、設定時にはその色もシステムへと伝えられます。

      環境によってはウィンドウが表示された後だとウィンドウアイコンが変更できないこともあります。ディスプレイモードが設定される前にウィンドウのアイコンを作成するには、pygame.display.set_mode命令よりも前にこの命令を実行します。



    pygame.display.set_caption
      ウィンドウのタイトルを設定します。
      pygame.display.set_caption(title, icontitle=None): return None

      ディスプレイがウィンドウタイトルを持っていた場合、この命令でウィンドウのタイトル名前を変更できます。環境によっては最小化されたディスプレイに合わせた短いタイトルをサポートしています。



    pygame.display.get_caption
      ウィンドウのタイトルを取得します。
      pygame.display.get_caption(): return (title, icontitle)

      ディスプレイSurfaceの、タイトルとアイコンタイトルを戻り値として返します。大抵はタイトルとアイコンタイトルは同じ値になります。



    pygame.display.set_palette
      インデックス化されたディスプレイのカラーパレットを設定します。
      pygame.display.set_palette(palette=None): return None

      8bitディスプレイのビデオディスプレイカラーパレットを変更します。This does not change the palette for the actual display Surface, only the palette that is used to display the Surface.palette 引数を設定しなかった場合は、システムの既定パレットに設定し直されます。palette引数にはRGB形式の三つの色情報を保持したタプル型の値を、シーケンス型としてつないだものを設定します。



トップへ戻る Cdrom || Color || Cursors || Display || Draw || Event || Examples || Font || Gfxdraw || Image || Joystick || Key || Locals || Mixer || Mouse || Movie || Music || Overlay || Pixelarray || Pygame || Rect || Scrap || Sndarray || Sprite || Surface || Surfarray || Tests || Time || Transform