ruby-processing 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +137 -0
- data/LICENSE +37 -0
- data/README +61 -0
- data/bin/rp5 +4 -0
- data/lib/core/core.jar +0 -0
- data/lib/core/jruby-complete.jar +0 -0
- data/lib/ruby-processing.rb +27 -0
- data/lib/ruby-processing/app.rb +358 -0
- data/lib/ruby-processing/exporters/applet_exporter.rb +75 -0
- data/lib/ruby-processing/exporters/application_exporter.rb +87 -0
- data/lib/ruby-processing/exporters/base_exporter.rb +133 -0
- data/lib/ruby-processing/exporters/creator.rb +46 -0
- data/lib/ruby-processing/helpers/string.rb +27 -0
- data/lib/ruby-processing/runner.rb +143 -0
- data/lib/ruby-processing/runners/base.rb +5 -0
- data/lib/ruby-processing/runners/live.rb +11 -0
- data/lib/ruby-processing/runners/run.rb +5 -0
- data/lib/ruby-processing/runners/watch.rb +42 -0
- data/lib/templates/applet/images/built_with.jpg +0 -0
- data/lib/templates/applet/images/ruby.jpg +0 -0
- data/lib/templates/applet/images/top.png +0 -0
- data/lib/templates/applet/index.html.erb +111 -0
- data/lib/templates/applet/library/library.txt +1 -0
- data/lib/templates/application/Contents/Info.plist.erb +58 -0
- data/lib/templates/application/Contents/MacOS/JavaApplicationStub +0 -0
- data/lib/templates/application/Contents/PkgInfo +1 -0
- data/lib/templates/application/Contents/Resources/sketch.icns +0 -0
- data/lib/templates/application/lib/MANIFEST.MF +3 -0
- data/lib/templates/application/lib/args.txt.erb +3 -0
- data/lib/templates/application/lib/library/library.txt +1 -0
- data/lib/templates/application/run.erb +4 -0
- data/lib/templates/application/run.exe +0 -0
- data/lib/templates/create/blank_sketch.rb.erb +15 -0
- data/library/boids/boids.rb +222 -0
- data/library/control_panel/control_panel.rb +149 -0
- data/library/dxf/bin/processing/dxf/RawDXF.class +0 -0
- data/library/dxf/dxfviewer.jar +0 -0
- data/library/dxf/library/dxf.jar +0 -0
- data/library/javascript/library/export.txt +6 -0
- data/library/javascript/library/javascript.jar +0 -0
- data/library/minim/library/jl1.0.jar +0 -0
- data/library/minim/library/jsminim.jar +0 -0
- data/library/minim/library/minim-spi.jar +0 -0
- data/library/minim/library/minim.jar +0 -0
- data/library/minim/library/mp3spi1.9.4.jar +0 -0
- data/library/minim/library/tritonus_aos.jar +0 -0
- data/library/minim/library/tritonus_share.jar +0 -0
- data/library/minim/license.txt +339 -0
- data/library/minim/version.txt +1 -0
- data/library/net/bin/processing/net/Client.class +0 -0
- data/library/net/bin/processing/net/Server.class +0 -0
- data/library/net/library/net.jar +0 -0
- data/library/opengl/bin/processing/opengl/PGraphicsOpenGL$ImageCache.class +0 -0
- data/library/opengl/bin/processing/opengl/PGraphicsOpenGL$TessCallback.class +0 -0
- data/library/opengl/bin/processing/opengl/PGraphicsOpenGL.class +0 -0
- data/library/opengl/library/export.txt +13 -0
- data/library/opengl/library/gluegen-rt-natives-linux-amd64.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-linux-i586.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-macosx-ppc.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-macosx-universal.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-windows-amd64.jar +0 -0
- data/library/opengl/library/gluegen-rt-natives-windows-i586.jar +0 -0
- data/library/opengl/library/gluegen-rt.dll +0 -0
- data/library/opengl/library/gluegen-rt.jar +0 -0
- data/library/opengl/library/gluegen-rt.jar.pack.gz +0 -0
- data/library/opengl/library/jogl-natives-linux-amd64.jar +0 -0
- data/library/opengl/library/jogl-natives-linux-i586.jar +0 -0
- data/library/opengl/library/jogl-natives-macosx-ppc.jar +0 -0
- data/library/opengl/library/jogl-natives-macosx-universal.jar +0 -0
- data/library/opengl/library/jogl-natives-windows-amd64.jar +0 -0
- data/library/opengl/library/jogl-natives-windows-i586.jar +0 -0
- data/library/opengl/library/jogl.dll +0 -0
- data/library/opengl/library/jogl.jar +0 -0
- data/library/opengl/library/jogl.jar.pack.gz +0 -0
- data/library/opengl/library/jogl_awt.dll +0 -0
- data/library/opengl/library/jogl_cg.dll +0 -0
- data/library/opengl/library/libgluegen-rt.jnilib +0 -0
- data/library/opengl/library/libgluegen-rt.so +0 -0
- data/library/opengl/library/libjogl.jnilib +0 -0
- data/library/opengl/library/libjogl.so +0 -0
- data/library/opengl/library/libjogl_awt.jnilib +0 -0
- data/library/opengl/library/libjogl_awt.so +0 -0
- data/library/opengl/library/libjogl_cg.jnilib +0 -0
- data/library/opengl/library/libjogl_cg.so +0 -0
- data/library/opengl/library/opengl.jar +0 -0
- data/library/pdf/bin/processing/pdf/PGraphicsPDF.class +0 -0
- data/library/pdf/library/itext.jar +0 -0
- data/library/pdf/library/pdf.jar +0 -0
- data/library/pdf/notes.txt +9 -0
- data/library/serial/bin/processing/serial/Serial.class +0 -0
- data/library/serial/library/RXTXcomm.jar +0 -0
- data/library/serial/library/export.txt +3 -0
- data/library/serial/library/librxtxSerial.jnilib +0 -0
- data/library/serial/library/librxtxSerial.so +0 -0
- data/library/serial/library/rxtxSerial.dll +0 -0
- data/library/serial/library/serial.jar +0 -0
- data/library/video/bin/processing/video/Capture.class +0 -0
- data/library/video/bin/processing/video/Movie.class +0 -0
- data/library/video/bin/processing/video/MovieMaker.class +0 -0
- data/library/video/library/video.jar +0 -0
- data/samples/animator.rb +47 -0
- data/samples/circle_collision.rb +213 -0
- data/samples/fern.rb +49 -0
- data/samples/flight_patterns.rb +64 -0
- data/samples/full_screen.rb +35 -0
- data/samples/getting_started.rb +43 -0
- data/samples/jwishy.rb +85 -0
- data/samples/kinetic_type.rb +100 -0
- data/samples/learning_processing/ABOUT +11 -0
- data/samples/learning_processing/chapter_01/1_stroke_and_fill.rb +34 -0
- data/samples/learning_processing/chapter_01/2_nofill.rb +25 -0
- data/samples/learning_processing/chapter_01/3_rgb_color.rb +31 -0
- data/samples/learning_processing/chapter_01/4_alpha_transparency.rb +36 -0
- data/samples/learning_processing/chapter_01/5_zoog.rb +37 -0
- data/samples/learning_processing/chapter_02/1_zoog_again.rb +39 -0
- data/samples/learning_processing/chapter_03/1_zoog_as_dynamic_sketch.rb +44 -0
- data/samples/learning_processing/chapter_03/2_mouse_x_and_mouse_y.rb +26 -0
- data/samples/learning_processing/chapter_03/3_zoog_as_dynamic_sketch_with_variation.rb +41 -0
- data/samples/learning_processing/chapter_03/4_drawing_a_continuous_line.rb +18 -0
- data/samples/learning_processing/chapter_03/5_mouse_pressed_and_key_pressed.rb +29 -0
- data/samples/learning_processing/chapter_03/6_interactive_zoog.rb +50 -0
- data/samples/learning_processing/chapter_04/1_variable_declaration.rb +24 -0
- data/samples/learning_processing/chapter_04/2_using_variables.rb +27 -0
- data/samples/learning_processing/chapter_04/3_varying_variables.rb +27 -0
- data/samples/learning_processing/chapter_04/4_many_variables.rb +38 -0
- data/samples/learning_processing/chapter_04/5_using_system_variables.rb +28 -0
- data/samples/learning_processing/chapter_04/6_ellipse_with_variables.rb +24 -0
- data/samples/learning_processing/chapter_04/7_filling_variables_with_random_values.rb +27 -0
- data/samples/learning_processing/chapter_04/8_variable_zoog.rb +50 -0
- data/samples/learning_processing/chapter_05/01_conditionals.rb +31 -0
- data/samples/learning_processing/chapter_05/02_more_conditionals.rb +38 -0
- data/samples/learning_processing/chapter_05/03_rollovers.rb +34 -0
- data/samples/learning_processing/chapter_05/04_hold_down_the_button.rb +33 -0
- data/samples/learning_processing/chapter_05/05_button_as_switch.rb +39 -0
- data/samples/learning_processing/chapter_05/06_bouncing_ball.rb +33 -0
- data/samples/learning_processing/chapter_05/07_bouncing_color.rb +37 -0
- data/samples/learning_processing/chapter_05/08_square_following_edge.rb +59 -0
- data/samples/learning_processing/chapter_05/09_simple_gravity.rb +43 -0
- data/samples/learning_processing/chapter_05/10_zoog_and_conditionals.rb +53 -0
- data/samples/learning_processing/chapter_06/01_many_lines.rb +29 -0
- data/samples/learning_processing/chapter_06/02_many_lines_with_variables.rb +53 -0
- data/samples/learning_processing/chapter_06/03_while_loop.rb +30 -0
- data/samples/learning_processing/chapter_06/04_infinite_loop.rb +25 -0
- data/samples/learning_processing/chapter_06/05_another_infinite_loop.rb +33 -0
- data/samples/learning_processing/chapter_06/06_legs_with_a_for_loop.rb +41 -0
- data/samples/learning_processing/chapter_06/07_local_variables.rb +39 -0
- data/samples/learning_processing/chapter_06/08_lines_one_at_a_time.rb +30 -0
- data/samples/learning_processing/chapter_06/09_simple_while_loop_with_interactivity.rb +41 -0
- data/samples/learning_processing/chapter_06/10_zoog_with_arms.rb +56 -0
- data/samples/learning_processing/chapter_06/11_multiple_zoogs.rb +46 -0
- data/samples/learning_processing/chapter_07/01_defining_a_function.rb +22 -0
- data/samples/learning_processing/chapter_07/02_calling_a_function.rb +22 -0
- data/samples/learning_processing/chapter_07/03_bouncing_ball_with_functions.rb +49 -0
- data/samples/learning_processing/chapter_07/04_function_returns_distance.rb +48 -0
- data/samples/learning_processing/chapter_07/05_zoog_with_functions.rb +71 -0
- data/samples/learning_processing/chapter_08/01_car_class_and_car_variable.rb +45 -0
- data/samples/learning_processing/chapter_08/02_two_car_objects.rb +60 -0
- data/samples/learning_processing/chapter_08/03_object_oriented_zoog.rb +81 -0
- data/samples/learning_processing/chapter_10/01_catcher.rb +35 -0
- data/samples/learning_processing/chapter_10/02_bouncing_ball.rb +44 -0
- data/samples/learning_processing/chapter_10/03_bouncing_balls_with_intersection.rb +69 -0
- data/samples/learning_processing/chapter_10/04_a_timer.rb +24 -0
- data/samples/learning_processing/chapter_10/05_object_oriented_timer.rb +42 -0
- data/samples/learning_processing/chapter_10/06_simple_raindrop.rb +23 -0
- data/samples/learning_processing/chapter_10/07_drops_one_at_a_time.rb +63 -0
- data/samples/learning_processing/chapter_13/02_random_number_distribution.rb +24 -0
- data/samples/learning_processing/chapter_13/03_probabilities.rb +33 -0
- data/samples/learning_processing/chapter_13/04_perlin_noise.rb +22 -0
- data/samples/learning_processing/chapter_13/06_oscillation.rb +29 -0
- data/samples/learning_processing/chapter_13/07_wave.rb +31 -0
- data/samples/learning_processing/chapter_13/08_recursion.rb +30 -0
- data/samples/learning_processing/chapter_13/09_two_dimensional_array.rb +21 -0
- data/samples/learning_processing/chapter_13/10_two_dimensional_array_with_objects.rb +54 -0
- data/samples/learning_processing/chapter_14/01_growing_rectangle.rb +26 -0
- data/samples/learning_processing/chapter_14/02_multiple_translations.rb +37 -0
- data/samples/learning_processing/chapter_14/03_depth_rectangle.rb +29 -0
- data/samples/learning_processing/chapter_14/04_pyramid_using_beingshape.rb +55 -0
- data/samples/learning_processing/chapter_14/05_rotate_rectangle_around_center.rb +28 -0
- data/samples/learning_processing/chapter_14/06_rotate_z.rb +24 -0
- data/samples/learning_processing/chapter_14/07_rotate_x.rb +24 -0
- data/samples/learning_processing/chapter_14/08_rotate_y.rb +24 -0
- data/samples/learning_processing/chapter_14/09_rotate_all.rb +24 -0
- data/samples/learning_processing/chapter_14/10_draw_pyramid.rb +59 -0
- data/samples/learning_processing/chapter_14/12_rotating_one_square.rb +25 -0
- data/samples/learning_processing/chapter_14/13_rotating_another_square.rb +25 -0
- data/samples/learning_processing/chapter_14/14_rotating_both_squares.rb +43 -0
- data/samples/learning_processing/chapter_14/15_rotating_many_things.rb +56 -0
- data/samples/learning_processing/chapter_14/16_simple_solar_system.rb +53 -0
- data/samples/learning_processing/chapter_14/17_nested_push_and_pop.rb +50 -0
- data/samples/learning_processing/chapter_14/18_object_oriented_solar_system.rb +69 -0
- data/samples/learning_processing/chapter_15/01_hello_world_image.rb +20 -0
- data/samples/learning_processing/chapter_15/02_image_sprite.rb +29 -0
- data/samples/learning_processing/chapter_15/03_swapping_images.rb +25 -0
- data/samples/learning_processing/chapter_15/04_image_sequence.rb +22 -0
- data/samples/learning_processing/chapter_15/05_setting_pixels.rb +19 -0
- data/samples/learning_processing/chapter_15/06_pixels_2d.rb +29 -0
- data/samples/learning_processing/chapter_15/07_image_pixels.rb +40 -0
- data/samples/learning_processing/chapter_15/08_image_brightness.rb +29 -0
- data/samples/learning_processing/chapter_15/09_flashlight_effect.rb +42 -0
- data/samples/learning_processing/chapter_15/10_brightness_threshold.rb +33 -0
- data/samples/learning_processing/chapter_15/11_brightness_threshold_with_filter.rb +20 -0
- data/samples/learning_processing/chapter_15/12_pixel_neighbour_differences.rb +43 -0
- data/samples/learning_processing/chapter_15/14_pointillism.rb +34 -0
- data/samples/learning_processing/chapter_15/15_2d_image_mapped_to_3d.rb +43 -0
- data/samples/learning_processing/chapter_15/data/animal0.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal1.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal2.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal3.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal4.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal5.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/animal6.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/face.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/mysummervacation.jpg +0 -0
- data/samples/learning_processing/chapter_15/data/sunflower.jpg +0 -0
- data/samples/learning_processing/chapter_16/01_display_video.rb +25 -0
- data/samples/learning_processing/chapter_16/02_manipulate_video_image.rb +24 -0
- data/samples/reflection.rb +26 -0
- data/samples/simple_buffer.rb +49 -0
- data/samples/tree.rb +83 -0
- 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
|