public void tick() {
		// tykniecie arbitera
		manager.tick();
		// wyluskiwanie widokow srodowiska
		RobotEnvironmentView robotEnvironmentView = environment.getRobotEnvironmentView();
		StudentEnvironmentView studentEnvironmentView = environment.getStudentEnvironmentView();

		// dzialanie na koordynatorach
		for (Coordinator coordinator : coordinators) {
			coordinator.coordinate(robotEnvironmentView);
		}

		// tworzenie map decyzji
		Map<Robot, Decision> robotDecisions = new HashMap<Robot, Decision>();
		Map<Student, StudentDecision> studentDecisions = new HashMap<Student, StudentDecision>();

		// wyluskiwanie decyzji
		for (Robot robot : environment.getRobots()) {
			robotDecisions.put(robot, robot.getAlgorithm().decide(robot.getElementView(), robotEnvironmentView));
		}
		for (Student student : environment.getStudents()) {
			studentDecisions.put(student, student.getAlgorithm().decide(student.getElementView(), studentEnvironmentView));
		}

		// tworzenie wykrywacza kolizji
		Set<Element> constantElements = new HashSet<Element>();
		constantElements.addAll(environment.getBookshelfs());
		constantElements.addAll(environment.getDesks());
		constantElements.addAll(environment.getObstructions());
		CollisionDetector collisionDetector = new CollisionDetector(environment.getWidth(), environment.getHeight(), constantElements);

		// wykonywanie decyzji
		for (Student student : studentDecisions.keySet()) {
			logger.level2("wykonywanie: " + studentDecisions.get(student) + " przez studenta: " + student);
			execute(student, studentDecisions.get(student), collisionDetector);
		}
		for (Robot robot : robotDecisions.keySet()) {
			logger.level2("wykonywanie: " + robotDecisions.get(robot) + " przez robota: " + robot);
			execute(robot, robotDecisions.get(robot), collisionDetector);
		}
		// dodawanie studentow
		for (Element entry : environment.getMarkers()) {
			if (entry.getElementType() == ElementType.STUDENT_ENTRY) {
				Student newStudent = manager.takeAvailablStudent();
				if (newStudent != null) {
					newStudent.setLocation(entry.getLocation());
					logger.level2("Dodawanie studenta do srodowiska: " + newStudent);
					environment.addStudent(newStudent);
				}
			}
		}
	}