ruby-processing 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. data/CHANGELOG +137 -0
  2. data/LICENSE +37 -0
  3. data/README +61 -0
  4. data/bin/rp5 +4 -0
  5. data/lib/core/core.jar +0 -0
  6. data/lib/core/jruby-complete.jar +0 -0
  7. data/lib/ruby-processing.rb +27 -0
  8. data/lib/ruby-processing/app.rb +358 -0
  9. data/lib/ruby-processing/exporters/applet_exporter.rb +75 -0
  10. data/lib/ruby-processing/exporters/application_exporter.rb +87 -0
  11. data/lib/ruby-processing/exporters/base_exporter.rb +133 -0
  12. data/lib/ruby-processing/exporters/creator.rb +46 -0
  13. data/lib/ruby-processing/helpers/string.rb +27 -0
  14. data/lib/ruby-processing/runner.rb +143 -0
  15. data/lib/ruby-processing/runners/base.rb +5 -0
  16. data/lib/ruby-processing/runners/live.rb +11 -0
  17. data/lib/ruby-processing/runners/run.rb +5 -0
  18. data/lib/ruby-processing/runners/watch.rb +42 -0
  19. data/lib/templates/applet/images/built_with.jpg +0 -0
  20. data/lib/templates/applet/images/ruby.jpg +0 -0
  21. data/lib/templates/applet/images/top.png +0 -0
  22. data/lib/templates/applet/index.html.erb +111 -0
  23. data/lib/templates/applet/library/library.txt +1 -0
  24. data/lib/templates/application/Contents/Info.plist.erb +58 -0
  25. data/lib/templates/application/Contents/MacOS/JavaApplicationStub +0 -0
  26. data/lib/templates/application/Contents/PkgInfo +1 -0
  27. data/lib/templates/application/Contents/Resources/sketch.icns +0 -0
  28. data/lib/templates/application/lib/MANIFEST.MF +3 -0
  29. data/lib/templates/application/lib/args.txt.erb +3 -0
  30. data/lib/templates/application/lib/library/library.txt +1 -0
  31. data/lib/templates/application/run.erb +4 -0
  32. data/lib/templates/application/run.exe +0 -0
  33. data/lib/templates/create/blank_sketch.rb.erb +15 -0
  34. data/library/boids/boids.rb +222 -0
  35. data/library/control_panel/control_panel.rb +149 -0
  36. data/library/dxf/bin/processing/dxf/RawDXF.class +0 -0
  37. data/library/dxf/dxfviewer.jar +0 -0
  38. data/library/dxf/library/dxf.jar +0 -0
  39. data/library/javascript/library/export.txt +6 -0
  40. data/library/javascript/library/javascript.jar +0 -0
  41. data/library/minim/library/jl1.0.jar +0 -0
  42. data/library/minim/library/jsminim.jar +0 -0
  43. data/library/minim/library/minim-spi.jar +0 -0
  44. data/library/minim/library/minim.jar +0 -0
  45. data/library/minim/library/mp3spi1.9.4.jar +0 -0
  46. data/library/minim/library/tritonus_aos.jar +0 -0
  47. data/library/minim/library/tritonus_share.jar +0 -0
  48. data/library/minim/license.txt +339 -0
  49. data/library/minim/version.txt +1 -0
  50. data/library/net/bin/processing/net/Client.class +0 -0
  51. data/library/net/bin/processing/net/Server.class +0 -0
  52. data/library/net/library/net.jar +0 -0
  53. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL$ImageCache.class +0 -0
  54. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL$TessCallback.class +0 -0
  55. data/library/opengl/bin/processing/opengl/PGraphicsOpenGL.class +0 -0
  56. data/library/opengl/library/export.txt +13 -0
  57. data/library/opengl/library/gluegen-rt-natives-linux-amd64.jar +0 -0
  58. data/library/opengl/library/gluegen-rt-natives-linux-i586.jar +0 -0
  59. data/library/opengl/library/gluegen-rt-natives-macosx-ppc.jar +0 -0
  60. data/library/opengl/library/gluegen-rt-natives-macosx-universal.jar +0 -0
  61. data/library/opengl/library/gluegen-rt-natives-windows-amd64.jar +0 -0
  62. data/library/opengl/library/gluegen-rt-natives-windows-i586.jar +0 -0
  63. data/library/opengl/library/gluegen-rt.dll +0 -0
  64. data/library/opengl/library/gluegen-rt.jar +0 -0
  65. data/library/opengl/library/gluegen-rt.jar.pack.gz +0 -0
  66. data/library/opengl/library/jogl-natives-linux-amd64.jar +0 -0
  67. data/library/opengl/library/jogl-natives-linux-i586.jar +0 -0
  68. data/library/opengl/library/jogl-natives-macosx-ppc.jar +0 -0
  69. data/library/opengl/library/jogl-natives-macosx-universal.jar +0 -0
  70. data/library/opengl/library/jogl-natives-windows-amd64.jar +0 -0
  71. data/library/opengl/library/jogl-natives-windows-i586.jar +0 -0
  72. data/library/opengl/library/jogl.dll +0 -0
  73. data/library/opengl/library/jogl.jar +0 -0
  74. data/library/opengl/library/jogl.jar.pack.gz +0 -0
  75. data/library/opengl/library/jogl_awt.dll +0 -0
  76. data/library/opengl/library/jogl_cg.dll +0 -0
  77. data/library/opengl/library/libgluegen-rt.jnilib +0 -0
  78. data/library/opengl/library/libgluegen-rt.so +0 -0
  79. data/library/opengl/library/libjogl.jnilib +0 -0
  80. data/library/opengl/library/libjogl.so +0 -0
  81. data/library/opengl/library/libjogl_awt.jnilib +0 -0
  82. data/library/opengl/library/libjogl_awt.so +0 -0
  83. data/library/opengl/library/libjogl_cg.jnilib +0 -0
  84. data/library/opengl/library/libjogl_cg.so +0 -0
  85. data/library/opengl/library/opengl.jar +0 -0
  86. data/library/pdf/bin/processing/pdf/PGraphicsPDF.class +0 -0
  87. data/library/pdf/library/itext.jar +0 -0
  88. data/library/pdf/library/pdf.jar +0 -0
  89. data/library/pdf/notes.txt +9 -0
  90. data/library/serial/bin/processing/serial/Serial.class +0 -0
  91. data/library/serial/library/RXTXcomm.jar +0 -0
  92. data/library/serial/library/export.txt +3 -0
  93. data/library/serial/library/librxtxSerial.jnilib +0 -0
  94. data/library/serial/library/librxtxSerial.so +0 -0
  95. data/library/serial/library/rxtxSerial.dll +0 -0
  96. data/library/serial/library/serial.jar +0 -0
  97. data/library/video/bin/processing/video/Capture.class +0 -0
  98. data/library/video/bin/processing/video/Movie.class +0 -0
  99. data/library/video/bin/processing/video/MovieMaker.class +0 -0
  100. data/library/video/library/video.jar +0 -0
  101. data/samples/animator.rb +47 -0
  102. data/samples/circle_collision.rb +213 -0
  103. data/samples/fern.rb +49 -0
  104. data/samples/flight_patterns.rb +64 -0
  105. data/samples/full_screen.rb +35 -0
  106. data/samples/getting_started.rb +43 -0
  107. data/samples/jwishy.rb +85 -0
  108. data/samples/kinetic_type.rb +100 -0
  109. data/samples/learning_processing/ABOUT +11 -0
  110. data/samples/learning_processing/chapter_01/1_stroke_and_fill.rb +34 -0
  111. data/samples/learning_processing/chapter_01/2_nofill.rb +25 -0
  112. data/samples/learning_processing/chapter_01/3_rgb_color.rb +31 -0
  113. data/samples/learning_processing/chapter_01/4_alpha_transparency.rb +36 -0
  114. data/samples/learning_processing/chapter_01/5_zoog.rb +37 -0
  115. data/samples/learning_processing/chapter_02/1_zoog_again.rb +39 -0
  116. data/samples/learning_processing/chapter_03/1_zoog_as_dynamic_sketch.rb +44 -0
  117. data/samples/learning_processing/chapter_03/2_mouse_x_and_mouse_y.rb +26 -0
  118. data/samples/learning_processing/chapter_03/3_zoog_as_dynamic_sketch_with_variation.rb +41 -0
  119. data/samples/learning_processing/chapter_03/4_drawing_a_continuous_line.rb +18 -0
  120. data/samples/learning_processing/chapter_03/5_mouse_pressed_and_key_pressed.rb +29 -0
  121. data/samples/learning_processing/chapter_03/6_interactive_zoog.rb +50 -0
  122. data/samples/learning_processing/chapter_04/1_variable_declaration.rb +24 -0
  123. data/samples/learning_processing/chapter_04/2_using_variables.rb +27 -0
  124. data/samples/learning_processing/chapter_04/3_varying_variables.rb +27 -0
  125. data/samples/learning_processing/chapter_04/4_many_variables.rb +38 -0
  126. data/samples/learning_processing/chapter_04/5_using_system_variables.rb +28 -0
  127. data/samples/learning_processing/chapter_04/6_ellipse_with_variables.rb +24 -0
  128. data/samples/learning_processing/chapter_04/7_filling_variables_with_random_values.rb +27 -0
  129. data/samples/learning_processing/chapter_04/8_variable_zoog.rb +50 -0
  130. data/samples/learning_processing/chapter_05/01_conditionals.rb +31 -0
  131. data/samples/learning_processing/chapter_05/02_more_conditionals.rb +38 -0
  132. data/samples/learning_processing/chapter_05/03_rollovers.rb +34 -0
  133. data/samples/learning_processing/chapter_05/04_hold_down_the_button.rb +33 -0
  134. data/samples/learning_processing/chapter_05/05_button_as_switch.rb +39 -0
  135. data/samples/learning_processing/chapter_05/06_bouncing_ball.rb +33 -0
  136. data/samples/learning_processing/chapter_05/07_bouncing_color.rb +37 -0
  137. data/samples/learning_processing/chapter_05/08_square_following_edge.rb +59 -0
  138. data/samples/learning_processing/chapter_05/09_simple_gravity.rb +43 -0
  139. data/samples/learning_processing/chapter_05/10_zoog_and_conditionals.rb +53 -0
  140. data/samples/learning_processing/chapter_06/01_many_lines.rb +29 -0
  141. data/samples/learning_processing/chapter_06/02_many_lines_with_variables.rb +53 -0
  142. data/samples/learning_processing/chapter_06/03_while_loop.rb +30 -0
  143. data/samples/learning_processing/chapter_06/04_infinite_loop.rb +25 -0
  144. data/samples/learning_processing/chapter_06/05_another_infinite_loop.rb +33 -0
  145. data/samples/learning_processing/chapter_06/06_legs_with_a_for_loop.rb +41 -0
  146. data/samples/learning_processing/chapter_06/07_local_variables.rb +39 -0
  147. data/samples/learning_processing/chapter_06/08_lines_one_at_a_time.rb +30 -0
  148. data/samples/learning_processing/chapter_06/09_simple_while_loop_with_interactivity.rb +41 -0
  149. data/samples/learning_processing/chapter_06/10_zoog_with_arms.rb +56 -0
  150. data/samples/learning_processing/chapter_06/11_multiple_zoogs.rb +46 -0
  151. data/samples/learning_processing/chapter_07/01_defining_a_function.rb +22 -0
  152. data/samples/learning_processing/chapter_07/02_calling_a_function.rb +22 -0
  153. data/samples/learning_processing/chapter_07/03_bouncing_ball_with_functions.rb +49 -0
  154. data/samples/learning_processing/chapter_07/04_function_returns_distance.rb +48 -0
  155. data/samples/learning_processing/chapter_07/05_zoog_with_functions.rb +71 -0
  156. data/samples/learning_processing/chapter_08/01_car_class_and_car_variable.rb +45 -0
  157. data/samples/learning_processing/chapter_08/02_two_car_objects.rb +60 -0
  158. data/samples/learning_processing/chapter_08/03_object_oriented_zoog.rb +81 -0
  159. data/samples/learning_processing/chapter_10/01_catcher.rb +35 -0
  160. data/samples/learning_processing/chapter_10/02_bouncing_ball.rb +44 -0
  161. data/samples/learning_processing/chapter_10/03_bouncing_balls_with_intersection.rb +69 -0
  162. data/samples/learning_processing/chapter_10/04_a_timer.rb +24 -0
  163. data/samples/learning_processing/chapter_10/05_object_oriented_timer.rb +42 -0
  164. data/samples/learning_processing/chapter_10/06_simple_raindrop.rb +23 -0
  165. data/samples/learning_processing/chapter_10/07_drops_one_at_a_time.rb +63 -0
  166. data/samples/learning_processing/chapter_13/02_random_number_distribution.rb +24 -0
  167. data/samples/learning_processing/chapter_13/03_probabilities.rb +33 -0
  168. data/samples/learning_processing/chapter_13/04_perlin_noise.rb +22 -0
  169. data/samples/learning_processing/chapter_13/06_oscillation.rb +29 -0
  170. data/samples/learning_processing/chapter_13/07_wave.rb +31 -0
  171. data/samples/learning_processing/chapter_13/08_recursion.rb +30 -0
  172. data/samples/learning_processing/chapter_13/09_two_dimensional_array.rb +21 -0
  173. data/samples/learning_processing/chapter_13/10_two_dimensional_array_with_objects.rb +54 -0
  174. data/samples/learning_processing/chapter_14/01_growing_rectangle.rb +26 -0
  175. data/samples/learning_processing/chapter_14/02_multiple_translations.rb +37 -0
  176. data/samples/learning_processing/chapter_14/03_depth_rectangle.rb +29 -0
  177. data/samples/learning_processing/chapter_14/04_pyramid_using_beingshape.rb +55 -0
  178. data/samples/learning_processing/chapter_14/05_rotate_rectangle_around_center.rb +28 -0
  179. data/samples/learning_processing/chapter_14/06_rotate_z.rb +24 -0
  180. data/samples/learning_processing/chapter_14/07_rotate_x.rb +24 -0
  181. data/samples/learning_processing/chapter_14/08_rotate_y.rb +24 -0
  182. data/samples/learning_processing/chapter_14/09_rotate_all.rb +24 -0
  183. data/samples/learning_processing/chapter_14/10_draw_pyramid.rb +59 -0
  184. data/samples/learning_processing/chapter_14/12_rotating_one_square.rb +25 -0
  185. data/samples/learning_processing/chapter_14/13_rotating_another_square.rb +25 -0
  186. data/samples/learning_processing/chapter_14/14_rotating_both_squares.rb +43 -0
  187. data/samples/learning_processing/chapter_14/15_rotating_many_things.rb +56 -0
  188. data/samples/learning_processing/chapter_14/16_simple_solar_system.rb +53 -0
  189. data/samples/learning_processing/chapter_14/17_nested_push_and_pop.rb +50 -0
  190. data/samples/learning_processing/chapter_14/18_object_oriented_solar_system.rb +69 -0
  191. data/samples/learning_processing/chapter_15/01_hello_world_image.rb +20 -0
  192. data/samples/learning_processing/chapter_15/02_image_sprite.rb +29 -0
  193. data/samples/learning_processing/chapter_15/03_swapping_images.rb +25 -0
  194. data/samples/learning_processing/chapter_15/04_image_sequence.rb +22 -0
  195. data/samples/learning_processing/chapter_15/05_setting_pixels.rb +19 -0
  196. data/samples/learning_processing/chapter_15/06_pixels_2d.rb +29 -0
  197. data/samples/learning_processing/chapter_15/07_image_pixels.rb +40 -0
  198. data/samples/learning_processing/chapter_15/08_image_brightness.rb +29 -0
  199. data/samples/learning_processing/chapter_15/09_flashlight_effect.rb +42 -0
  200. data/samples/learning_processing/chapter_15/10_brightness_threshold.rb +33 -0
  201. data/samples/learning_processing/chapter_15/11_brightness_threshold_with_filter.rb +20 -0
  202. data/samples/learning_processing/chapter_15/12_pixel_neighbour_differences.rb +43 -0
  203. data/samples/learning_processing/chapter_15/14_pointillism.rb +34 -0
  204. data/samples/learning_processing/chapter_15/15_2d_image_mapped_to_3d.rb +43 -0
  205. data/samples/learning_processing/chapter_15/data/animal0.jpg +0 -0
  206. data/samples/learning_processing/chapter_15/data/animal1.jpg +0 -0
  207. data/samples/learning_processing/chapter_15/data/animal2.jpg +0 -0
  208. data/samples/learning_processing/chapter_15/data/animal3.jpg +0 -0
  209. data/samples/learning_processing/chapter_15/data/animal4.jpg +0 -0
  210. data/samples/learning_processing/chapter_15/data/animal5.jpg +0 -0
  211. data/samples/learning_processing/chapter_15/data/animal6.jpg +0 -0
  212. data/samples/learning_processing/chapter_15/data/face.jpg +0 -0
  213. data/samples/learning_processing/chapter_15/data/mysummervacation.jpg +0 -0
  214. data/samples/learning_processing/chapter_15/data/sunflower.jpg +0 -0
  215. data/samples/learning_processing/chapter_16/01_display_video.rb +25 -0
  216. data/samples/learning_processing/chapter_16/02_manipulate_video_image.rb +24 -0
  217. data/samples/reflection.rb +26 -0
  218. data/samples/simple_buffer.rb +49 -0
  219. data/samples/tree.rb +83 -0
  220. metadata +348 -0
@@ -0,0 +1,46 @@
1
+ require 'ruby-processing'
2
+
3
+ class MultipleZoogs < Processing::App
4
+
5
+ def setup
6
+ @w, @h = 60, 60
7
+ @eye_size = 16
8
+ @y = height/2
9
+ smooth
10
+ ellipseMode CENTER
11
+ rectMode CENTER
12
+ end
13
+
14
+ def draw
15
+ background 255
16
+ stroke 0
17
+
18
+ # Multiple versions of Zoog
19
+ # If we want to show four Zoogs, let's draw it four times:
20
+
21
+ 4.times do |i|
22
+ x = i * 80 + 80
23
+
24
+ # Draw Zoog's body
25
+ fill 175
26
+ rect x, @y, @w/6, @h*2
27
+
28
+ # Draw Zoog's head
29
+ fill 255
30
+ ellipse x, @y-@h/2, @w, @h
31
+
32
+ # Draw Zoog's eyes
33
+ fill 0
34
+ ellipse x-@w/3+1, @y-@h/2, @eye_size, @eye_size*2
35
+ ellipse x+@w/3-1, @y-@h/2, @eye_size, @eye_size*2
36
+
37
+ # Draw Zoog's legs
38
+ line x-@w/12, @y+@h, x-@w/4, @y+@h+10
39
+ line x+@w/12, @y+@h, x+@w/4, @y+@h+10
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
46
+ MultipleZoogs.new :title => "Multiple Zoogs", :width => 400, :height => 200
@@ -0,0 +1,22 @@
1
+ require 'ruby-processing'
2
+
3
+ class DefiningAFunction < Processing::App
4
+
5
+ def setup
6
+
7
+ end
8
+
9
+ def draw
10
+
11
+ end
12
+
13
+ # This example defines a function, but it is
14
+ # not called. So nothing happens.
15
+ def draw_black_circle
16
+ fill 0
17
+ ellipse 50, 50, 20, 20
18
+ end
19
+
20
+ end
21
+
22
+ DefiningAFunction.new :title => "Defining A Function", :width => 200, :height => 200
@@ -0,0 +1,22 @@
1
+ require 'ruby-processing'
2
+
3
+ class CallingAFunction < Processing::App
4
+
5
+ def setup
6
+ smooth
7
+ draw_black_circle
8
+ end
9
+
10
+ def draw
11
+ background 255
12
+ draw_black_circle
13
+ end
14
+
15
+ def draw_black_circle
16
+ fill 0
17
+ ellipse 50, 50, 20, 20
18
+ end
19
+
20
+ end
21
+
22
+ CallingAFunction.new :title => "Calling A Function", :width => 100, :height => 100
@@ -0,0 +1,49 @@
1
+ require 'ruby-processing'
2
+
3
+ class BouncingBallWithFunctions < Processing::App
4
+
5
+ def setup
6
+ # Declare variables
7
+ @x = 1
8
+ @speed = 1
9
+ smooth
10
+ end
11
+
12
+ def draw
13
+ background 255
14
+ # Instead of writing out all the code about the ball
15
+ # in draw, we simply call three functions. How do
16
+ # we know the names of these functions? We made them up!
17
+ move
18
+ bounce
19
+ display
20
+ end
21
+
22
+ # Where should functions be placed?
23
+ # You can define your functions anywhere in the code outside of setup and draw.
24
+ # However, the convention is to place your function definitions below draw.
25
+
26
+ # A function to move the ball
27
+ def move
28
+ # Change the x location by speed
29
+ @x += @speed
30
+ end
31
+
32
+ # A function to bounce the ball
33
+ def bounce
34
+ # If we’ve reached an edge, reverse speed
35
+ # (0..width) is a Ruby range, representing the numbers from 0 to width (aka 200).
36
+ # You can ask a range if it includes another number or not.
37
+ @speed *= -1 unless (0..width).include? @x
38
+ end
39
+
40
+ # A function to display the ball
41
+ def display
42
+ stroke 0
43
+ fill 175
44
+ ellipse @x, 100, 32, 32
45
+ end
46
+
47
+ end
48
+
49
+ BouncingBallWithFunctions.new :title => "Bouncing Ball With Functions", :width => 200, :height => 200
@@ -0,0 +1,48 @@
1
+ require 'ruby-processing'
2
+
3
+ class FunctionReturnsDistance < Processing::App
4
+
5
+ def setup
6
+
7
+ end
8
+
9
+ def draw
10
+ background 0
11
+ stroke 0
12
+
13
+ # Set up width/2-1 and height/2-1 variables, for convenience.
14
+ w1, h1 = width/2-1, height/2-1
15
+
16
+ # Top left square
17
+ # Our distance function is used to calculate a brightness value
18
+ # for each quadrant. We could use the built-in function dist
19
+ # instead, but we are learning how to write our own functions.
20
+ fill distance(0, 0, mouse_x ,mouse_y)
21
+ rect 0, 0, w1, h1
22
+
23
+ # Top right square
24
+ fill distance(width, 0, mouse_x, mouse_y)
25
+ rect width/2, 0, w1, h1
26
+
27
+ # Bottom left square
28
+ fill distance(0, height, mouse_x, mouse_y)
29
+ rect 0, height/2, w1, h1
30
+
31
+ # Bottom right square
32
+ fill distance(width, height, mouse_x, mouse_y)
33
+ rect width/2, height/2, w1, h1
34
+
35
+ end
36
+
37
+ # Defining the distance method.
38
+ # In Ruby we don't have to write "return", because Ruby implicitly
39
+ # returns the last thing that was evaluated from any method.
40
+ def distance x1, y1, x2, y2
41
+ dx = x1 - x2
42
+ dy = y1 - y2
43
+ sqrt(dx*dx + dy*dy)
44
+ end
45
+
46
+ end
47
+
48
+ FunctionReturnsDistance.new :title => "Function Returns Distance", :width => 200, :height => 200
@@ -0,0 +1,71 @@
1
+ require 'ruby-processing'
2
+
3
+ class ZoogWithFunctions < Processing::App
4
+
5
+ def setup
6
+ @x, @y = 100, 100
7
+ @w, @h = 60, 60
8
+ @eye_size = 16
9
+ @speed = 1
10
+ ellipse_mode CENTER
11
+ rect_mode CENTER
12
+ stroke 0
13
+ smooth
14
+ end
15
+
16
+ def draw
17
+ background 255 # Draw a black background
18
+
19
+ # mouse_x position determines speed factor for moveZoog function
20
+ factor = constrain mouse_x/10, 0, 5
21
+
22
+ # The code for changing the variables associated with Zoog and
23
+ # displaying Zoog is moved outside of draw and into functions
24
+ # called here. The functions are given arguments, such as
25
+ # "Jiggle Zoog by the following factor" and "draw Zoog with
26
+ # the following eye color".
27
+ jiggle_zoog factor
28
+
29
+ # pass in a color to the draw_zoog function for eye color
30
+ d = dist(@x, @y, mouse_x, mouse_y)
31
+ c = color(d)
32
+ draw_zoog c
33
+ end
34
+
35
+ def jiggle_zoog speed
36
+ # Change the x and y location of Zoog randomly
37
+ @x = @x + random(-1, 1) * speed
38
+ @y = @y + random(-1, 1) * speed
39
+ # Constrain Zoog to window
40
+ @x = constrain @x, 0, width
41
+ @y = constrain @y, 0, height
42
+ end
43
+
44
+ def draw_zoog eye_color
45
+ # Arms are incorporated into Zoog's design with a times loop.
46
+ 6.times do |i|
47
+ y = i * 10 + @y + 5
48
+ line @x-@w/3, y, @x+@w/3, y
49
+ end
50
+
51
+ # Draw Zoog's body
52
+ fill 175
53
+ rect @x, @y, @w/6, @h*2
54
+
55
+ # Draw Zoog's head
56
+ fill 255
57
+ ellipse @x, @y-@h/2, @w, @h
58
+
59
+ # Draw Zoog's eyes
60
+ fill eye_color
61
+ ellipse @x-@w/3+1, @y-@h/2, @eye_size, @eye_size*2
62
+ ellipse @x+@w/3-1, @y-@h/2, @eye_size, @eye_size*2
63
+
64
+ # Draw Zoog's legs
65
+ line @x-@w/12, @y+@h, @x-@w/4, @y+@h+10
66
+ line @x+@w/12, @y+@h, @x+@w/4, @y+@h+10
67
+ end
68
+
69
+ end
70
+
71
+ ZoogWithFunctions.new :title => "Zoog With Functions", :width => 200, :height => 200
@@ -0,0 +1,45 @@
1
+ require 'ruby-processing'
2
+
3
+ class CarClassAndCarVariable < Processing::App
4
+
5
+ def setup
6
+ # Initialize a car object
7
+ @my_car = Car.new(self)
8
+ rect_mode CENTER
9
+ end
10
+
11
+ def draw
12
+ background 255
13
+
14
+ # Operate the car object in draw
15
+ # by calling object methods using the dots syntax.
16
+ @my_car.move
17
+ @my_car.display_car
18
+ end
19
+
20
+ end
21
+
22
+
23
+ class Car # Define a class below the rest of the program.
24
+
25
+ def initialize(app)
26
+ @app = app
27
+ @c = @app.color 175
28
+ @xpos = @app.width/2
29
+ @ypos = @app.height/2
30
+ @xspeed = 1
31
+ end
32
+
33
+ def display_car # A new function of class Car
34
+ @app.stroke 0
35
+ @app.fill @c
36
+ @app.rect @xpos, @ypos, 20, 10
37
+ end
38
+
39
+ def move
40
+ @xpos = @xpos + @xspeed
41
+ @xpos = 0 if @xpos > @app.width
42
+ end
43
+ end
44
+
45
+ CarClassAndCarVariable.new :title => "Car Class And Car Variable", :width => 200, :height => 200
@@ -0,0 +1,60 @@
1
+ require 'ruby-processing'
2
+
3
+ class TwoCarObjects < Processing::App
4
+ load_library :control_panel
5
+
6
+ def setup
7
+ control_panel do |c|
8
+ c.slider :red_car_speed, -5..15
9
+ c.slider :blue_car_speed, -5..15
10
+ end
11
+
12
+ # Initialize car objects
13
+ @red_car = Car.new(self, color(255,0,0), 0, 100)
14
+ @blue_car = Car.new(self, color(0,0,255), 0, 10)
15
+ @red_car_speed = 1
16
+ @blue_car_speed = 2
17
+ rect_mode CENTER
18
+ end
19
+
20
+ def draw
21
+ background 255
22
+
23
+ # Operate the car object in draw
24
+ # by calling object methods using the dots syntax.
25
+ @red_car.move(@red_car_speed)
26
+ @red_car.display_car
27
+ @blue_car.move(@blue_car_speed)
28
+ @blue_car.display_car
29
+ end
30
+
31
+ end
32
+
33
+
34
+ class Car # Define a class below the rest of the program.
35
+ attr_accessor :temp_color, :temp_x_position, :temp_y_position, :temp_x_speed
36
+ LENGTH = 20
37
+ HEIGHT = 10
38
+
39
+ def initialize(app, temp_color, temp_x_position, temp_y_position)
40
+ @app = app
41
+ @c = temp_color
42
+ @xpos = temp_x_position
43
+ @ypos = temp_y_position
44
+ end
45
+
46
+ def display_car # A new function of class Car
47
+ @app.stroke 0
48
+ @app.fill @c
49
+ @app.rect @xpos, @ypos, LENGTH, HEIGHT
50
+ end
51
+
52
+ def move(speed)
53
+ @xpos += speed
54
+ @xpos = 0 if @xpos > @app.width + LENGTH/2
55
+ @xpos = @app.width if @xpos < -LENGTH/2
56
+ end
57
+ end
58
+
59
+ TwoCarObjects.new :title => "Car Class And Car Variable", :width => 200, :height => 200
60
+
@@ -0,0 +1,81 @@
1
+ require 'ruby-processing'
2
+
3
+ class ObjectOrientedZoog < Processing::App
4
+ load_library "control_panel"
5
+
6
+ def setup
7
+ smooth
8
+ control_panel do |c|
9
+ c.slider :zoog_jiggle_factor, 0..width/10
10
+ end
11
+
12
+ # Initalize zoog
13
+ @zoog = Zoog.new(self, 100, 125, 60, 60, 16)
14
+ @zoog_jiggle_factor = 10
15
+
16
+ rect_mode CENTER
17
+ ellipse_mode CENTER
18
+ end
19
+
20
+ def draw
21
+ background 255
22
+
23
+ # mouse_x position determines speed factor
24
+ # factor = constrain(mouse_x/10, 0, 5)
25
+
26
+ @zoog.jiggle(@zoog_jiggle_factor)
27
+ @zoog.display
28
+ end
29
+
30
+ end
31
+
32
+ class Zoog
33
+ attr_accessor :temp_x_position, :temp_y_position, :temp_width, :temp_height, :temp_eye_size
34
+
35
+ def initialize(app, temp_x_position, temp_y_position, temp_zoog_width, temp_zoog_height, temp_eye_size)
36
+ @app = app
37
+ @x, @y = temp_x_position, temp_y_position
38
+ @w, @h = temp_zoog_width, temp_zoog_height
39
+ @eye_size = temp_eye_size
40
+ end
41
+
42
+ # Move zoog
43
+ def jiggle(speed)
44
+ @x = @x + speed * @app.random(-1,1)
45
+ @y = @y + speed * @app.random(-1,1)
46
+
47
+ @x = @app.constrain(@x, 0, @app.width)
48
+ @y = @app.constrain(@y, 0, @app.height)
49
+ end
50
+
51
+ def display
52
+ # Draw zoog's arms
53
+ (@y - @h/3).step((@y + @h/2), 10) do |i|
54
+ @app.stroke 0
55
+ @app.line @x-@w/4, i, @x+@w/4, i
56
+ end
57
+
58
+ # Draw zoog's body
59
+ @app.stroke 0
60
+ @app.fill 255
61
+ @app.rect @x, @y, @w/6, @h
62
+
63
+ # Draw zoog's head
64
+ @app.stroke 0
65
+ @app.fill 255
66
+ @app.ellipse @x, @y-@h, @w, @h
67
+
68
+ # Draw zoog's eyes
69
+ @app.fill 0
70
+ @app.ellipse @x-@w/3, @y-@h, @eye_size, @eye_size*2
71
+ @app.ellipse @x+@w/3, @y-@h, @eye_size, @eye_size*2
72
+
73
+ # Draw zoog's legs
74
+ @app.stroke 0
75
+ @app.line @x-@w/12, @y+@h/2, @x-@w/4, @y+@h/2+10
76
+ @app.line @x+@w/12, @y+@h/2, @x+@w/4, @y+@h/2+10
77
+ end
78
+
79
+ end
80
+
81
+ ObjectOrientedZoog.new :title => "Object Oriented Zoog", :width => 200, :height => 200