wxPythonでタイマーを使ってアニメーションを描画した.
Processingで同じプログラムを作る5倍はめんどくさいw

うまく動けば自由落下のアニメーションが動くはず.
厳密には自由落下ではないけど...
import wx
class myWindow(wx.Frame):
def __init__(self, parent=None, id=-1, title=None):
wx.Frame.__init__(self, parent, id, title)
self.panel = wx.Panel(self, size=(300, 600))
self.panel.SetBackgroundColour('WHITE')
self.Fit()
self.createTimer()
self.counter = 0
self.ball = Ball(10)
def InitBuffer(self):
size = self.GetClientSize()
self.buffer = wx.EmptyBitmap(max(1,size.width), max(1,size.height))
dc = wx.BufferedDC(None, self.buffer)
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
def createTimer(self):
self.timer=wx.Timer(self)
self.timer.Start(20)
self.Bind(wx.EVT_TIMER, self.onTimer, self.timer)
def onTimer(self, event):
self.InitBuffer()
dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
dc.Clear()
dc.BeginDrawing()
dc.SetPen(wx.Pen("black", 3, wx.SOLID))
dc.DrawText("Free fall",20,20)
self.ball.Fall(dc)
dc.EndDrawing()
class Ball:
def __init__(self,R):
self.r = R
self.v = 0
self.x = 300/2
self.y = 0
def Fall(self,dc):
self.v += 0.5
self.y += self.v/2
if self.y > 600:
self.y = 0
self.v = 0
dc.SetPen(wx.Pen(wx.Colour(255,165,0)))
dc.SetBrush(wx.Brush(wx.Colour(255,0,0)))
dc.DrawCircle(150,self.y,self.r)
if __name__ == "__main__":
app = wx.PySimpleApp()
w = myWindow(title="Free Fall")
w.Show()
app.MainLoop()