graphics 1.0.0b1 → 1.0.0b4

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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/History.rdoc +30 -0
  5. data/Manifest.txt +39 -7
  6. data/README.rdoc +48 -4
  7. data/Rakefile +8 -2
  8. data/examples/boid.rb +9 -18
  9. data/examples/bounce.rb +15 -23
  10. data/examples/canvas.rb +75 -0
  11. data/examples/collision.rb +6 -6
  12. data/examples/demo.rb +5 -7
  13. data/examples/editor.rb +12 -9
  14. data/examples/fluid.rb +2 -3
  15. data/examples/fluid2.rb +1 -1
  16. data/examples/{lito2.rb → gol.rb} +0 -0
  17. data/examples/{zenspider4.rb → gol2.rb} +0 -0
  18. data/examples/logo.rb +4 -7
  19. data/examples/maze.rb +136 -0
  20. data/examples/tank.rb +10 -11
  21. data/examples/tank2.rb +12 -17
  22. data/examples/targeting.rb +1 -1
  23. data/examples/vants.rb +1 -1
  24. data/examples/walker.rb +3 -12
  25. data/examples/walker2.rb +197 -0
  26. data/examples/zombies.rb +31 -35
  27. data/ext/sdl/extconf.rb +31 -0
  28. data/ext/sdl/sdl.c +1067 -0
  29. data/ext/sdl/sge/INSTALL +72 -0
  30. data/ext/sdl/sge/LICENSE +504 -0
  31. data/ext/sdl/sge/Makefile +83 -0
  32. data/ext/sdl/sge/Makefile.conf +63 -0
  33. data/ext/sdl/sge/README +219 -0
  34. data/ext/sdl/sge/Todo +7 -0
  35. data/ext/sdl/sge/WhatsNew +224 -0
  36. data/ext/sdl/sge/sge.h +31 -0
  37. data/ext/sdl/sge/sge_blib.cpp +1939 -0
  38. data/ext/sdl/sge/sge_blib.h +68 -0
  39. data/ext/sdl/sge/sge_bm_text.cpp +451 -0
  40. data/ext/sdl/sge/sge_bm_text.h +71 -0
  41. data/ext/sdl/sge/sge_collision.cpp +388 -0
  42. data/ext/sdl/sge/sge_collision.h +54 -0
  43. data/ext/sdl/sge/sge_config.h +6 -0
  44. data/ext/sdl/sge/sge_internal.h +152 -0
  45. data/ext/sdl/sge/sge_misc.cpp +92 -0
  46. data/ext/sdl/sge/sge_misc.h +37 -0
  47. data/ext/sdl/sge/sge_primitives.cpp +2516 -0
  48. data/ext/sdl/sge/sge_primitives.h +111 -0
  49. data/ext/sdl/sge/sge_rotation.cpp +683 -0
  50. data/ext/sdl/sge/sge_rotation.h +46 -0
  51. data/ext/sdl/sge/sge_shape.cpp +762 -0
  52. data/ext/sdl/sge/sge_shape.h +365 -0
  53. data/ext/sdl/sge/sge_surface.cpp +1090 -0
  54. data/ext/sdl/sge/sge_surface.h +100 -0
  55. data/ext/sdl/sge/sge_textpp.cpp +785 -0
  56. data/ext/sdl/sge/sge_textpp.h +270 -0
  57. data/ext/sdl/sge/sge_tt_text.cpp +1456 -0
  58. data/ext/sdl/sge/sge_tt_text.h +114 -0
  59. data/graphics_setup.sh +26 -0
  60. data/lib/graphics.rb +1 -1
  61. data/lib/graphics/body.rb +50 -3
  62. data/lib/graphics/extensions.rb +13 -7
  63. data/lib/graphics/simulation.rb +126 -46
  64. data/test/test_graphics.rb +52 -12
  65. data/test/test_sdl.rb +1 -0
  66. metadata +54 -23
  67. metadata.gz.sig +0 -0
  68. data/.gemtest +0 -0
  69. data/examples/lito.rb +0 -108
  70. data/examples/zenspider1.rb +0 -93
  71. data/examples/zenspider2.rb +0 -123
  72. data/examples/zenspider3.rb +0 -104
  73. data/rubysdl_setup.sh +0 -34
@@ -1,123 +0,0 @@
1
- #!/usr/bin/ruby -w
2
-
3
- srand 42
4
-
5
- class Array
6
- include Comparable
7
-
8
- alias old_spaceship <=>
9
-
10
- def <=> other
11
- x = first <=> other.first
12
- x.zero? ? self[1] <=> other[1] : x
13
- end
14
- end
15
-
16
- class GameOfLife
17
- delta = [-1, 0, 1]
18
- same = [0, 0]
19
-
20
- DELTAS = (delta.product(delta) - [same]).sort
21
- MIN = { true => 2, false => 3 }
22
-
23
- @@neighbors = Hash.new { |h, k| h[k] = {} }
24
-
25
- attr_accessor :cells
26
- attr_accessor :cache
27
-
28
- def initialize
29
- self.cells = []
30
- end
31
-
32
- def randomize n, m
33
- dimensions = n.times.to_a
34
- cells.replace dimensions.product(dimensions).sample(m).sort
35
- end
36
-
37
- def run max = 1.0 / 0
38
- (1..max).each do |n|
39
- yield n
40
- update
41
- end
42
- end
43
-
44
- def update
45
- cells.replace considered.select { |(x, y)| alive? x, y }.sort
46
- end
47
-
48
- def considered
49
- cells.map { |(x, y)| neighbors_for(x, y) }.flatten(1).uniq
50
- end
51
-
52
- def binary_search(container, item)
53
- return nil if item.nil?
54
- low = 0
55
- high = container.size - 1
56
- while low <= high do
57
- mid = (low + high) / 2
58
- val = container[mid]
59
- if val > item then
60
- high = mid - 1
61
- elsif val < item then
62
- low = mid + 1
63
- else
64
- return val
65
- end
66
- end
67
- nil
68
- end
69
-
70
- def alive? x, y
71
- count = (neighbors_for(x, y) & cells).size
72
- min = MIN[!!binary_search(cells, [x, y])] # .include? [x, y]]
73
- count.between? min, 3
74
- end
75
-
76
- def neighbors_for x, y
77
- @@neighbors[x][y] ||=
78
- DELTAS.map { |(dx, dy)| [x+dx, y+dy] }.reject { |(m, n)| m < 0 || n < 0 }
79
- end
80
- end
81
-
82
- size, width, count = 20, 32, 256
83
-
84
- gol = GameOfLife.new
85
- gol.randomize width, count
86
-
87
- if ARGV.first == "prof" then
88
- gol.run 50 do |n|
89
- $stderr.print "."
90
- end
91
- warn "done"
92
- else
93
- require "sdl"
94
-
95
- SDL.init SDL::INIT_VIDEO
96
- SDL::WM::set_caption "Conway's Game of Life", "Conway's Game of Life"
97
-
98
- screen = SDL::Screen.open 640, 640, 16, SDL::DOUBLEBUF
99
-
100
- black = screen.format.map_rgb 0, 0, 0
101
- white = screen.format.map_rgb 255, 255, 255
102
-
103
- w, h = screen.w, screen.h
104
-
105
- gol.run do
106
- screen.fill_rect 0, 0, w, h, black
107
-
108
- gol.cells.each do |(x, y)|
109
- screen.fill_rect x*size, y*size, size-1, size-1, white
110
- end
111
-
112
- screen.flip
113
-
114
- while event = SDL::Event.poll
115
- case event
116
- when SDL::Event::KeyDown, SDL::Event::Quit
117
- exit
118
- end
119
- end
120
-
121
- gol.update
122
- end
123
- end
@@ -1,104 +0,0 @@
1
- #!/usr/bin/ruby -w
2
-
3
- srand 42
4
-
5
- class Array
6
- def sorted_include? o
7
- a, b = o
8
- !!bsearch { |(x, y)|
9
- c = a - x
10
- c.zero? ? b - y : c
11
- }
12
- end
13
- end
14
-
15
- class GameOfLife
16
- delta = [-1, 0, 1]
17
- same = [0, 0]
18
-
19
- DELTAS = (delta.product(delta) - [same]).sort
20
- MIN = { true => 2, false => 3 }
21
-
22
- @@neighbors = Hash.new { |h, k| h[k] = {} }
23
-
24
- attr_accessor :cells
25
- attr_accessor :cache
26
-
27
- def initialize
28
- self.cells = []
29
- end
30
-
31
- def randomize n, m
32
- dimensions = n.times.to_a
33
- cells.replace dimensions.product(dimensions).sample(m).sort
34
- end
35
-
36
- def run max = 1.0 / 0
37
- (1..max).each do |n|
38
- yield n
39
- update
40
- end
41
- end
42
-
43
- def update
44
- cells.replace considered.select { |(x, y)| alive? x, y }.sort
45
- end
46
-
47
- def considered
48
- cells.map { |(x, y)| neighbors_for(x, y) }.flatten(1).uniq
49
- end
50
-
51
- def alive? x, y
52
- count = (neighbors_for(x, y) & cells).size
53
- min = MIN[cells.sorted_include? [x, y]]
54
- count.between? min, 3
55
- end
56
-
57
- def neighbors_for x, y
58
- @@neighbors[x][y] ||=
59
- DELTAS.map { |(dx, dy)| [x+dx, y+dy] }.reject { |(m, n)| m < 0 || n < 0 }
60
- end
61
- end
62
-
63
- size, width, count = 10, 64, 1000
64
-
65
- gol = GameOfLife.new
66
- gol.randomize width, count
67
-
68
- if ARGV.first == "prof" then
69
- gol.run 50 do |n|
70
- $stderr.print "."
71
- end
72
- warn "done"
73
- else
74
- require "sdl"
75
-
76
- SDL.init SDL::INIT_VIDEO
77
- SDL::WM::set_caption "Conway's Game of Life", "Conway's Game of Life"
78
-
79
- screen = SDL::Screen.open 640, 640, 16, SDL::DOUBLEBUF
80
-
81
- black = screen.format.map_rgb 0, 0, 0
82
- white = screen.format.map_rgb 255, 255, 255
83
-
84
- w, h = screen.w, screen.h
85
-
86
- gol.run do
87
- screen.fill_rect 0, 0, w, h, black
88
-
89
- gol.cells.each do |(x, y)|
90
- screen.fill_rect x*size, y*size, size-1, size-1, white
91
- end
92
-
93
- screen.flip
94
-
95
- while event = SDL::Event.poll
96
- case event
97
- when SDL::Event::KeyDown, SDL::Event::Quit
98
- exit
99
- end
100
- end
101
-
102
- gol.update
103
- end
104
- end
@@ -1,34 +0,0 @@
1
- #!/bin/sh
2
-
3
- brew uninstall libogg
4
- brew uninstall libvorbis
5
- brew uninstall libpng
6
-
7
- brew uninstall sdl
8
- brew uninstall sdl_ttf
9
- brew uninstall sdl_mixer
10
- brew uninstall sdl_image
11
- brew uninstall sge
12
-
13
- # brew update
14
-
15
- brew install libogg
16
- brew install libvorbis
17
- brew install libpng
18
-
19
- brew install sdl
20
- brew install sdl_mixer -- --with-libvorbis
21
- brew install sdl_ttf
22
- brew install sdl_image
23
-
24
- gem uninstall -ax rsdl
25
- gem uninstall -ax rubysdl
26
-
27
- gem install rsdl
28
- gem install rubysdl -- --enable-bundled-sge
29
-
30
- ruby -r sdl -e 'p [:ttf, SDL.constants.include?(:TTF)]'
31
- ruby -r sdl -e 'p [:mixer, SDL.constants.include?(:Mixer)]'
32
- ruby -r sdl -e 'p [:sge, SDL.respond_to?(:auto_lock)]'
33
-
34
- rsdl -r sdl -e 'SDL.init(SDL::INIT_EVERYTHING); SDL.set_video_mode(640, 480, 16, SDL::SWSURFACE); sleep(1)'