Ejemplo n.º 1
0
    def doHopalong(self):
        self.statusBar.text = "Drawing, please wait..."
        canvas = self.components.bufOff

        a = float(self.components.fldA.text)
        b = float(self.components.fldB.text)
        c = float(self.components.fldC.text)
        iterations = int(self.components.fldIterations.text)
        xOffset = float(self.components.fldXOffset.text)
        yOffset = float(self.components.fldYOffset.text)
        scale = float(self.components.fldScale.text)
        numColors = int(self.components.fldColors.text)

        totalPointsDrawn = 0
        starttime = util.time()

        canvas.clear()
        for color, points in self.hopalong(a, b, c, iterations, xOffset,
                                           yOffset, scale, numColors):
            canvas.foregroundColor = color
            canvas.drawPointList(points)
            totalPointsDrawn += len(points)
            wx.SafeYield(self)
            if not self.drawing:
                break

        elapsed = util.time() - starttime
        self.statusBar.text = "hopalong time: %f seconds (%d points drawn)" % (
            elapsed, totalPointsDrawn)
        self.drawing = False
        self.components.btnDraw.enabled = True
        self.components.btnCancel.enabled = False
Ejemplo n.º 2
0
 def on_btnAnimate_mouseClick(self, event):
     event.target.enabled = False
     canvas = self.components.bufOff
     canvas.autoRefresh = False
     self.animate = True
     avgfps = 0
     frame = 0
     
     seconds = util.time()
     # number of frames to display a second
     # on faster boxes this will throttle the number
     # of frames calculated and displayed, but on slower
     # boxes it won't prevent slowdown
     fps = 30
     # amount of time that should pass before drawing another frame
     timePerFrame = 1.0 / fps
     #print timePerFrame
     
     # hack to force a difference
     # between time and startTime
     # to avoid a division by zero exception on fast machines
     # aka my Windows box ;-)
     startTime = util.time() - 0.001
     while self.animate:
         newSeconds = util.time()
         if newSeconds - seconds >= timePerFrame:
             seconds = newSeconds
             canvas.clear()
             for ball in self.sprites:
                 ball.move()
             canvas.refresh()
             frame += 1
             self.statusBar.text = "Average FPS: %.4f     Balls: %d" % (frame / (seconds - startTime), len(self.sprites))
         # give the user a chance to click Stop
         wx.SafeYield(self, True)
Ejemplo n.º 3
0
    def on_btnStart_mouseClick(self, event):
        self.components.btnStart.enabled = False
        self.components.btnStep.enabled = False
        self.keepDrawing = True
        startTime = util.time()

        self.doRunLife()

        print "Draw time: %f" % (util.time() - startTime)
Ejemplo n.º 4
0
    def on_doAutomata_command(self, event):
        automata = event.target.name

        if automata == 'menuAutomataLife':
            result = dialog.textEntryDialog(self,
                                            'Steps (-1 means continuous):',
                                            'Number of steps', '-1')
            if result.accepted:
                steps = int(result.text)
                self.keepDrawing = True
                startTime = util.time()
                self.doRunLife(steps)
                print "Draw time: %f" % (util.time() - startTime)
Ejemplo n.º 5
0
 def on_btnAnimate_mouseClick(self, event):
     event.target.enabled = False
     self.animate = True
     self.frame = 0
     self.startTime = util.time()
     self.fps = 10
     timePerFrame = 1000 / self.fps
     self.timer.start(timePerFrame)
Ejemplo n.º 6
0
 def on_btnAnimate_timer(self, event):
     self.components.bufOff.clear()
     for b in self.sprites:
         b.move()
     # don't need to use redraw() on Mac because
     # we are using a timer and giving the screen
     # a chance to update it itself normally
     self.components.bufOff.refresh()
     self.frame += 1
     self.seconds = util.time()
     self.statusBar.text = "Average FPS: %.4f     Boids: %d" % (
         self.frame / (self.seconds - self.startTime), len(self.sprites))