1
0
mirror of https://github.com/klmp200/sierpinski-fractales.git synced 2024-10-29 20:18:03 +00:00
Sierpinski fractales demo for sarl language
Go to file
2017-06-22 11:14:38 +02:00
src/main/sarl/io/sarl/demos/sierpinski Documentation 2017-06-13 15:19:14 +02:00
.gitignore Implements fractals 2017-05-12 16:39:13 +02:00
Fractal_en.png Add Readme 2017-06-22 11:14:38 +02:00
LICENSE Create LICENSE 2017-05-12 16:41:32 +02:00
MVC_en.png Add Readme 2017-06-22 11:14:38 +02:00
README.md Add Readme 2017-06-22 11:14:38 +02:00
sierpinski_screenshot.png Add Readme 2017-06-22 11:14:38 +02:00
sierpinski-fractales.iml Implements fractals 2017-05-12 16:39:13 +02:00

MVC pattern

This application follows a MVC (Model-View-Controller) pattern for the GUI communication.

MVC pattern applied on this project

Sierpinski's fractals demo

This demo is about Sierpinski's fractals. Those are 3 triangles inside a triangle.

Agents organization in the fractal demo

To create this demo, only one agent was required. The idea is to create a main agent and then create 3 other agents in the inner context of the main agent. Then the main agent becomes an event broadcaster and so on and so forth for each fractals newly created.

agent Fractal {
	...

	on Initialize {
		if (occurrence.parameters.size >= 2){
			// If initialized with arguments

			screenSurface = occurrence.parameters.get(0) as Square
			positions = occurrence.parameters.get(1) as Positions

			if (occurrence.parameters.size.equals(3)){
				// If initialized by the GUI
				var ctrl = occurrence.parameters.get(2) as FXMLViewerController
				guiSpace =  defaultContext.createSpace(
					OpenEventSpaceSpecification, UUID.randomUUID)
				ctrl.setGUISpace(guiSpace)
				guiSpace.register(asEventListener)
			}
		} else {
			// If initialized without argument
			screenSurface = new Square
			positions = new Positions
		}
		screenWidth = screenSurface.width
		this.generatePoints
	}

	...

}

Application with the GUI