Anonymous user
Chaos game: Difference between revisions
Added Groovy
m (→{{header|REXX}}: used a template for the output section.) |
(Added Groovy) |
||
Line 1,055:
}
return err
}</lang>
=={{header|Groovy}}==
{{libheader|JavaFX}}
<lang Groovy>import javafx.animation.AnimationTimer
import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.layout.Pane
import javafx.scene.paint.Color
import javafx.scene.shape.Circle
import javafx.stage.Stage
class ChaosGame extends Application {
final randomNumberGenerator = new Random()
@Override
void start(Stage primaryStage) {
primaryStage.title = 'Chaos Game'
primaryStage.scene = getScene()
primaryStage.show()
}
def getScene() {
def colors = [Color.RED, Color.GREEN, Color.BLUE]
final width = 640, height = 640, margin = 60
final size = width - 2 * margin
def points = [
new Circle(width / 2, margin, 1, colors[0]),
new Circle(margin, size, 1, colors[1]),
new Circle(margin + size, size, 1, colors[2])
]
def pane = new Pane()
pane.style = '-fx-background-color: black;'
points.each {
pane.children.add it
}
def currentPoint = new Circle().with {
centerX = randomNumberGenerator.nextInt(size - margin) + margin
centerY = randomNumberGenerator.nextInt(size - margin) + margin
it
}
({
def newPoint = generatePoint(currentPoint, points, colors)
pane.children.add newPoint
currentPoint = newPoint
} as AnimationTimer).start()
new Scene(pane, width, height)
}
def generatePoint(currentPoint, points, colors) {
def selection = randomNumberGenerator.nextInt 3
new Circle().with {
centerX = (currentPoint.centerX + points[selection].centerX) / 2
centerY = (currentPoint.centerY + points[selection].centerY) / 2
radius = 1
fill = colors[selection]
it
}
}
static main(args) {
launch(ChaosGame)
}
}</lang>
|