ゲームに学ぶフレームワーク #3.1: Canvas を利用する
ゲームに学ぶ Jython/Swing フレームワーク《Jython2.5》
Canvas を利用する
《著》森こねこ+小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23 ● 第2版♪2009/04/03
■ 概要
アプリケーションを作成する過程を通して、Jython/Swing によるフレームワークを習得します。
典型的なオセロゲームから始めて、蜂の巣(6角形)状の盤面を作り、3人で対戦できるゲームへと進化させます。
《Note》JPython1.1.x/Jython2.1.x 用に作成したセミナー課題を、Jython2.5 で再構成しました。
■ 関連記事
- INDEX〈Python〉
- INDEX〈Swing〉
- Java プログラマーのための Python 導入ガイド
- IronPython で学ぶ WPF プログラミングの世界《IronPython2.6》改訂版
事例:モジュールを起動する
モジュールを起動すると、次のようなウィンドウが現れます。
$ jython2.5.0 -i step00/othelloEx.py
何も描かれない(無地のキャンバス)状態を確認できます。
事例:Java の世界を Jython から観察する
実行中の Java アプリケーションの状態は、Jython の対話モードでも確認できます。
>>> view = Xview
>>> view
java.awt.Canvas[canvas0,0,0,200x128]
大域変数 Xview を介して、Canvas を参照できます。すると、キャンバスの大きさ(幅x高さ)が 200x128 になっているのが分かります。ここで、次に示すコードの断片と比較してください。すると、幅 150 のウィンドウに対して、キャンバスの幅が狭くなるのが分かります。
事例:コードの解説
■ モジュール:othelloEx.py
#! /usr/bin/jython2.5.0 from java.awt import BorderLayout from java.awt import Canvas from javax.swing import JFrame from javax.swing import JPanel from sys import argv ## ---------------------------------------- class Window(JFrame): def __init__(self, title, *args, **keys): global Xview; Xview = \ canvas = Canvas()
キャンバス Canvas を利用して、ゲームの盤面を表現します。
panel = JPanel( layout = BorderLayout(), ) panel.add( canvas, BorderLayout.CENTER, ) super(self.__class__,self).__init__( title = title, contentPane = panel, defaultCloseOperation = JFrame.EXIT_ON_CLOSE, ) def open(self, x=0, y=0, w=150, h=100): self.bounds = x, y, w, h self.visible = True ## ---------------------------------------- def ex(*args): window = Window(title = "Step 00:") window.open(800, 100, 200, 150) ## ---------------------------------------- Xmodel = Xview = Xwindow = None if __name__=='__main__': ex(*argv)
Tips
》作業中です《
Last updated♪09/06/30