summaryrefslogtreecommitdiffhomepage
path: root/test/testcard.rb
diff options
context:
space:
mode:
authorTom Black <[email protected]>2016-12-24 22:17:34 -0600
committerTom Black <[email protected]>2016-12-24 22:17:34 -0600
commite81d32b470cdead1c114b6d1b5b6bda958d6b1ad (patch)
tree3d61e376c8f460b2ff932cb9f9104f2e0cf5b72e /test/testcard.rb
parent326b74d485ce81c0a4e1da0e5158a2c83e028915 (diff)
downloadruby2d-e81d32b470cdead1c114b6d1b5b6bda958d6b1ad.tar.gz
ruby2d-e81d32b470cdead1c114b6d1b5b6bda958d6b1ad.zip
Merge all tests into `test/` directory
Diffstat (limited to 'test/testcard.rb')
-rw-r--r--test/testcard.rb188
1 files changed, 188 insertions, 0 deletions
diff --git a/test/testcard.rb b/test/testcard.rb
new file mode 100644
index 0000000..dfe049b
--- /dev/null
+++ b/test/testcard.rb
@@ -0,0 +1,188 @@
+unless RUBY_ENGINE == 'opal'
+ require 'ruby2d'
+end
+
+if RUBY_ENGINE == 'opal'
+ media = "../tests/media"
+else
+ media = "media"
+end
+
+set diagnostics: true
+
+set width: 700, height: 500, title: "Ruby 2D – Test Card"
+
+# Read window attributes
+puts "=== Window Attributes ===
+Title: #{get :title}
+Width: #{get :width}
+Height: #{get :height}
+FPS: #{get :fps}
+Self: #{get :window}\n\n"
+
+# Primary colors
+Rectangle.new(0, 0, 50, 100, [1, 0, 0, 1])
+Rectangle.new(50, 0, 50, 100, [0, 1, 0, 1])
+Rectangle.new(100, 0, 50, 100, [0, 0, 1, 1])
+
+# Color strings
+Square.new( 150, 0, 50, 'black')
+Square.new( 200, 0, 50, 'gray')
+Square.new( 250, 0, 50, 'silver')
+Square.new( 300, 0, 50, 'white')
+Rectangle.new(350, 0, 50, 50, 'navy')
+Rectangle.new(400, 0, 50, 50, 'blue')
+Rectangle.new(450, 0, 50, 50, 'aqua')
+Rectangle.new(500, 0, 50, 50, 'teal')
+Rectangle.new(550, 0, 50, 50, 'olive')
+
+Rectangle.new(150, 50, 50, 50, 'green')
+Rectangle.new(200, 50, 50, 50, 'lime')
+Rectangle.new(250, 50, 50, 50, 'yellow')
+Rectangle.new(300, 50, 50, 50, 'orange')
+Rectangle.new(350, 50, 50, 50, 'red')
+Rectangle.new(400, 50, 50, 50, 'maroon')
+Rectangle.new(450, 50, 50, 50, 'fuchsia')
+Rectangle.new(500, 50, 50, 50, 'purple')
+Rectangle.new(550, 50, 50, 50, 'brown')
+
+# Mix of named colors and numbers
+Rectangle.new(600, 0, 50, 50,
+[
+ 'red',
+ 'green',
+ 'blue',
+ 'yellow'
+])
+Rectangle.new(650, 0, 50, 50,
+[
+ [1.0, 0, 0, 1],
+ 'green',
+ [0.0, 0, 1, 1.0],
+ 'yellow'
+])
+Rectangle.new(600, 50, 50, 50, 'random')
+Rectangle.new(650, 50, 50, 50, 'random')
+
+# White to black gradient
+Rectangle.new(0, 100, 700, 25,
+[
+ [1.0, 1.0, 1.0, 1.0],
+ [0.0, 0.0, 0.0, 0.0],
+ [0.0, 0.0, 0.0, 0.0],
+ [1.0, 1.0, 1.0, 1.0]
+])
+
+# Color gradient
+Rectangle.new(0, 125, 700, 50,
+[
+ [1.0, 0.0, 0.0, 1.0],
+ [0.0, 1.0, 0.0, 1.0],
+ [0.0, 0.0, 1.0, 1.0],
+ [1.0, 1.0, 0.0, 1.0]
+])
+
+# Transparancy
+Rectangle.new(0, 165, 700, 35,
+[
+ [1.0, 1.0, 1.0, 0.0],
+ [1.0, 1.0, 1.0, 1.0],
+ [1.0, 1.0, 1.0, 1.0],
+ [1.0, 1.0, 1.0, 0.0]
+])
+
+# Triangles
+Triangle.new(25, 200, 50, 250, 0, 250, [1.0, 0, 0, 1.0])
+Triangle.new(75, 200, 100, 250, 50, 250, [ 0, 1.0, 0, 1.0])
+Triangle.new(125, 200, 150, 250, 100, 250, [ 0, 0, 1.0, 1.0])
+Triangle.new(175, 200, 200, 250, 150, 250,
+[
+ [1.0, 0, 0, 1.0],
+ [0, 1.0, 0, 1.0],
+ [0, 0, 1.0, 1.0]
+])
+Rectangle.new(200, 200, 50, 50, [0.5, 0.5, 0.5, 1.0]) # add background for transparancy
+Triangle.new(225, 200, 250, 250, 200, 250,
+[
+ [1.0, 1.0, 1.0, 1.0],
+ [0.0, 0.0, 0.0, 1.0],
+ [1.0, 1.0, 1.0, 0.0]
+])
+
+# Quadrilaterals
+Quad.new(
+ 300, 200,
+ 350, 200,
+ 300, 250,
+ 250, 250,
+ [
+ [1.0, 0.0, 0.0, 1.0],
+ [0.0, 1.0, 0.0, 1.0],
+ [0.0, 0.0, 1.0, 1.0],
+ [1.0, 1.0, 0.0, 1.0]
+ ]
+)
+
+Quad.new(
+ 250, 200,
+ 300, 200,
+ 350, 250,
+ 300, 250,
+ [
+ [1.0, 1.0, 1.0, 0.0],
+ [1.0, 1.0, 1.0, 0.0],
+ [1.0, 1.0, 1.0, 1.0],
+ [1.0, 1.0, 1.0, 0.0]
+ ]
+)
+
+# Images
+Image.new(590, 180, "#{media}/image.png")
+Image.new(590, 290, "#{media}/image.jpg")
+Image.new(590, 400, "#{media}/image.bmp")
+img_r = Image.new(350, 200, "#{media}/colors.png")
+img_r.width, img_r.height = 50, 50
+# img_r.color = [1.0, 0.3, 0.3, 1.0]
+img_g = Image.new(400, 200, "#{media}/colors.png")
+img_g.width, img_g.height = 50, 50
+# img_g.color = [0.3, 1.0, 0.3, 1.0]
+img_b = Image.new(450, 200, "#{media}/colors.png")
+img_b.width, img_b.height = 50, 50
+# img_b.color = [0.3, 0.3, 1.0, 1.0]
+
+# Text
+txt_r = Text.new( 44, 202, 20, "R", "#{media}/bitstream_vera/vera.ttf")
+# txt_r.color = [1.0, 0.0, 0.0, 1.0]
+txt_g = Text.new( 92, 202, 20, "G", "#{media}/bitstream_vera/vera.ttf")
+# txt_g.color = [0.0, 1.0, 0.0, 1.0]
+txt_b = Text.new(144, 202, 20, "B", "#{media}/bitstream_vera/vera.ttf")
+# txt_b.color = [0.0, 0.0, 1.0, 1.0]
+
+# Frames per second
+fps = Text.new(10, 470, 20, "", "#{media}/bitstream_vera/vera.ttf")
+
+# Sprites
+s1 = Sprite.new(500, 200, "#{media}/sprite_sheet.png")
+s1.add(forwards: [
+ [ 0, 0, 50, 50, 30],
+ [ 50, 0, 50, 50, 40],
+ [100, 0, 50, 50, 50],
+ [150, 0, 50, 50, 60]
+])
+
+# Pointer for mouse
+pointer = Square.new(0, 0, 10, 'white')
+
+on key: 'escape' do
+ close
+end
+
+update do
+ pointer.x = (get :mouse_x) - 5
+ pointer.y = (get :mouse_y) - 7
+ s1.animate(:forwards)
+ # puts get :fps
+ fps.text = "FPS: #{(get :fps).round(3)}"
+end
+
+show