sccd_performance_cpu_time.xml 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?xml version="1.1" ?>
  2. <diagram author="Simon Van Mierlo+Raphael Mannadiar" name="Bouncing_Balls_Python_Version">
  3. <description>
  4. Tkinter frame with bouncing balls in it.
  5. </description>
  6. <top>
  7. import random, sys, os
  8. </top>
  9. <class name="MainApp" default="true">
  10. <relationships>
  11. <association name="fields" class="Field" />
  12. </relationships>
  13. <constructor>
  14. <parameter name="fields_to_create" />
  15. <parameter name="balls_to_create" />
  16. <body>
  17. <![CDATA[
  18. self.fields_to_create = fields_to_create
  19. self.balls_to_create = balls_to_create
  20. self.nr_of_fields = 0
  21. ]]>
  22. </body>
  23. </constructor>
  24. <scxml initial="running">
  25. <state id="running" initial="root">
  26. <parallel id="root">
  27. <state id="cd_behaviour" initial="waiting">
  28. <state id="waiting">
  29. <transition event="create_field" target="../creating">
  30. <raise scope="cd" event="create_instance">
  31. <parameter expr='"fields"' />
  32. <parameter expr='"Field"' />
  33. <parameter expr="self.balls_to_create" />
  34. </raise>
  35. </transition>
  36. </state>
  37. <state id="creating">
  38. <transition event="instance_created" target="../waiting">
  39. <parameter name="association_name" type="string"/>
  40. <raise scope="cd" event="start_instance">
  41. <parameter expr="association_name" />
  42. </raise>
  43. <script>
  44. self.nr_of_fields += 1
  45. </script>
  46. </transition>
  47. </state>
  48. </state>
  49. <state id="spawn_windows" initial="spawning">
  50. <state id="spawning">
  51. <transition target="." after="0.1" cond="self.nr_of_fields &lt; self.fields_to_create">
  52. <raise event="create_field" />
  53. </transition>
  54. <transition target="../stopped_spawning" cond="self.nr_of_fields &gt;= self.fields_to_create" />
  55. </state>
  56. <state id="stopped_spawning" />
  57. </state>
  58. <state id="killer" initial="killing">
  59. <state id="killing">
  60. <transition after="5" target=".">
  61. <script>
  62. print "cpu usage for %i fields with %i balls: %.5f" % (self.fields_to_create, self.balls_to_create, os.times()[0] / 5.0)
  63. sys.exit()
  64. </script>
  65. </transition>
  66. </state>
  67. </state>
  68. </parallel>
  69. <state id="stopped" />
  70. </state>
  71. </scxml>
  72. </class>
  73. <class name="Field">
  74. <relationships>
  75. <association name="balls" class="Ball" />
  76. <association name="parent" class="MainApp" min="1" max="1" />
  77. </relationships>
  78. <constructor>
  79. <parameter name="balls_to_create" />
  80. <body>
  81. <![CDATA[
  82. self.balls_to_create = balls_to_create
  83. self.nr_of_balls = 0
  84. ]]>
  85. </body>
  86. </constructor>
  87. <scxml initial="root">
  88. <state id="root" initial="running">
  89. <parallel id="running">
  90. <state id="main_behaviour" initial="running">
  91. <state id="running">
  92. <transition event="spawn_ball" target="../creating">
  93. <parameter name="x" />
  94. <parameter name="y" />
  95. <raise scope="cd" event="create_instance">
  96. <parameter expr='"balls"' />
  97. <parameter expr='"Ball"' />
  98. <parameter expr="x" />
  99. <parameter expr="y" />
  100. </raise>
  101. </transition>
  102. </state>
  103. <state id="creating">
  104. <transition event="instance_created" target="../running">
  105. <parameter name="association_name" type="string"/>
  106. <raise scope="cd" event="start_instance">
  107. <parameter expr="association_name" />
  108. </raise>
  109. <script>
  110. self.nr_of_balls += 1
  111. </script>
  112. </transition>
  113. </state>
  114. </state>
  115. <state id="spawn_balls" initial="spawning">
  116. <state id="spawning">
  117. <transition target="." after="0" cond="self.nr_of_balls &lt; self.balls_to_create">
  118. <raise event="spawn_ball">
  119. <parameter expr="150" />
  120. <parameter expr="150" />
  121. </raise>
  122. </transition>
  123. <transition target="../stopped_spawning" cond="self.nr_of_balls &gt;= self.balls_to_create" />
  124. </state>
  125. <state id="stopped_spawning" />
  126. </state>
  127. </parallel>
  128. <state id="deleting">
  129. <transition target="../deleted">
  130. <raise event="delete_field" scope="narrow" target="'parent'">
  131. <parameter expr='self.association_name' />
  132. </raise>
  133. </transition>
  134. </state>
  135. <state id="deleted" />
  136. </state>
  137. </scxml>
  138. </class>
  139. <class name="Ball">
  140. <relationships>
  141. <association name="parent" class="Field" min="1" max="1" />
  142. </relationships>
  143. <constructor>
  144. <parameter name="x" />
  145. <parameter name="y" />
  146. <body>
  147. <![CDATA[
  148. self.r = 20.0;
  149. self.vel = {'x': random.uniform(-5.0, 5.0), 'y': random.uniform(-5.0, 5.0)};
  150. self.mouse_pos = {};
  151. self.smooth = 0.4; # value between 0 and 1
  152. self.pos = {'x': x, 'y': y}
  153. ]]>
  154. </body>
  155. </constructor>
  156. <scxml initial="main_behaviour">
  157. <state id="main_behaviour" initial="bouncing">
  158. <state id="bouncing">
  159. <transition after="(20 - self.getSimulatedTime() % 20) / 1000.0" target=".">
  160. <script>
  161. <![CDATA[
  162. self.pos
  163. if self.pos['x'] - self.r <= 0 or self.pos['x'] + self.r >= 800 :
  164. self.vel['x'] = -self.vel['x'];
  165. if self.pos['y'] - self.r <= 0 or self.pos['y'] + self.r >= 600 :
  166. self.vel['y'] = -self.vel['y'];
  167. self.pos['x'] += self.vel['x']
  168. self.pos['y'] += self.vel['y']
  169. ]]>
  170. </script>
  171. <raise event="test" scope="narrow" target="'parent[0]'" />
  172. </transition>
  173. </state>
  174. </state>
  175. </scxml>
  176. </class>
  177. </diagram>