土曜日, 11月 17, 2007

jython + p5#2

後半。本当にやりたかったのはここから。
irbでやってるみたいに、インタラクティブにコードを書き換える。
Processing by Ruby #2 - Quietstar

コードはrubyとほとんど同じ。下のコードをSketchTest2.pyとか名前付けて、保存。
jythonを起動して、

>>> from SketchTest2 import *

これでjrubyのloadと同じなのかな。

>>> applet = Sketch()

で、Sketchクラスのインスタンスを作る。

>>> run(applet)

とするとアプレットが動きます。ランダムな位置に四角が描かれては消される。
jrubyでの例と同じように

applet.stop()

とかすれば止まるし、

applet.strokeWeight(5)

とかすれば線が太くなる。これは楽しい。
GUIもCUIもPhysical Computingも全部組み込みたいものだ。

from javax.swing import JFrame
from processing.core import PApplet

class Sketch(PApplet):
def __init__(self):
pass
def setup(self):
self.size(200, 200)
self.rect(0, 0, 100, 100)
def getField(self, name):
return self.class.superclass.getDeclaredField(name).get(self)
def draw(self):
self.background(255);
self.rect(self.random(self.width), self.random(self.height), 10, 10)

def run(applet):
frame = JFrame(title="Processing",
resizable = 0,
defaultCloseOperation=JFrame.EXIT_ON_CLOSE)
frame.contentPane.add(applet)
applet.init()
frame.pack()
frame.visible = 1

if __name__ == '__main__':
run(Sketch())

1 件のコメント:

hysysk さんのコメント...

draw()メソッド書き換えの方法がわかんない。
class書いて、例えばまた
applet = Sketch()
して
run(applet)
したら新しいウインドウが出る。
それはそれでよし。