space_invaders 0.0.2

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 (58) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +38 -0
  6. data/Rakefile +1 -0
  7. data/assets/fonts/unifont.ttf +0 -0
  8. data/assets/images/Bullet.png +0 -0
  9. data/assets/images/FullBlock.png +0 -0
  10. data/assets/images/InvaderA1.png +0 -0
  11. data/assets/images/InvaderA2.png +0 -0
  12. data/assets/images/InvaderB1.png +0 -0
  13. data/assets/images/InvaderB2.png +0 -0
  14. data/assets/images/InvaderC1.png +0 -0
  15. data/assets/images/InvaderC2.png +0 -0
  16. data/assets/images/OkBlock.png +0 -0
  17. data/assets/images/RedInvader.png +0 -0
  18. data/assets/images/Ship.png +0 -0
  19. data/assets/images/ShipCrushedLeft.png +0 -0
  20. data/assets/images/ShipCrushedRight.png +0 -0
  21. data/assets/images/WeakBlock.png +0 -0
  22. data/assets/sounds/InvaderBullet.wav +0 -0
  23. data/assets/sounds/InvaderHit.wav +0 -0
  24. data/assets/sounds/ShipBullet.wav +0 -0
  25. data/assets/sounds/ShipHit.wav +0 -0
  26. data/bin/space-invaders +9 -0
  27. data/go.rb +5 -0
  28. data/lib/space_invaders.rb +4 -0
  29. data/lib/space_invaders/app.rb +99 -0
  30. data/lib/space_invaders/base.rb +14 -0
  31. data/lib/space_invaders/behaviors/centerable.rb +13 -0
  32. data/lib/space_invaders/behaviors/collideable.rb +18 -0
  33. data/lib/space_invaders/behaviors/fireable.rb +35 -0
  34. data/lib/space_invaders/behaviors/mesurable.rb +17 -0
  35. data/lib/space_invaders/blocks/block.rb +62 -0
  36. data/lib/space_invaders/blocks/u_block.rb +37 -0
  37. data/lib/space_invaders/blocks/u_block_container.rb +46 -0
  38. data/lib/space_invaders/bullets/bullet.rb +46 -0
  39. data/lib/space_invaders/bullets/bullet_collection.rb +23 -0
  40. data/lib/space_invaders/invaders/invader.rb +38 -0
  41. data/lib/space_invaders/invaders/invader_abc.rb +27 -0
  42. data/lib/space_invaders/invaders/invader_row.rb +52 -0
  43. data/lib/space_invaders/invaders/invaders_container.rb +146 -0
  44. data/lib/space_invaders/invaders/red_invader.rb +66 -0
  45. data/lib/space_invaders/screens/game_over_screen.rb +42 -0
  46. data/lib/space_invaders/screens/next_level_screen.rb +39 -0
  47. data/lib/space_invaders/screens/welcome_screen.rb +46 -0
  48. data/lib/space_invaders/ship/drowned_ship_animator.rb +46 -0
  49. data/lib/space_invaders/ship/ship.rb +99 -0
  50. data/lib/space_invaders/statics/button_controller.rb +33 -0
  51. data/lib/space_invaders/statics/game_status.rb +52 -0
  52. data/lib/space_invaders/statics/images.rb +39 -0
  53. data/lib/space_invaders/statics/sounds.rb +37 -0
  54. data/lib/space_invaders/trackers/lives_tracker.rb +27 -0
  55. data/lib/space_invaders/trackers/score_tracker.rb +27 -0
  56. data/lib/space_invaders/utils.rb +19 -0
  57. data/space_invaders.gemspec +23 -0
  58. metadata +143 -0
@@ -0,0 +1,27 @@
1
+ module SpaceInvaders
2
+ class ScoreTracker < Base
3
+
4
+ attr_reader :score
5
+
6
+ def initialize app
7
+ @app = app
8
+ @score = 0
9
+ @score_headline = Gosu::Image.from_text @app, "Score:", App::DEFAULT_FONT, 30
10
+ set_score_number
11
+ end
12
+
13
+ def increase_by number
14
+ @score += number
15
+ set_score_number
16
+ end
17
+
18
+ def set_score_number
19
+ @score_number = Gosu::Image.from_text @app, @score, App::DEFAULT_FONT, 30
20
+ end
21
+
22
+ def draw
23
+ @score_headline.draw 10, 10, 1
24
+ @score_number.draw 100, 10, 1, 1, 1, Gosu::Color::GREEN
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ module SpaceInvaders
2
+ module Utils
3
+ def self.to_klass(property)
4
+ klass_name = camelcase(property)
5
+ Object.const_get("SpaceInvaders::#{klass_name}")
6
+ end
7
+
8
+ def self.camelcase(property)
9
+ property.to_s.split('_').map{|e| e.capitalize}.join
10
+ end
11
+
12
+ def self.snake_klazz_name(klazz)
13
+ klazz.to_s.split('::').last
14
+ .gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
15
+ .gsub(/([a-z\d])([A-Z])/,'\1_\2')
16
+ .downcase
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "space_invaders"
7
+ spec.version = "0.0.2"
8
+ spec.authors = ["Damir Svrtan"]
9
+ spec.email = ["damir.svrtan@gmail.com"]
10
+ spec.summary = "space_invaders.rb"
11
+ spec.description = "Classic arcade game written in Ruby w/ Gosu."
12
+ spec.homepage = "https://github.com/DamirSvrtan/space-invaders.rb"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = 'space-invaders'
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.5"
21
+ spec.add_development_dependency "rake"
22
+ spec.add_dependency "gosu"
23
+ end
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: space_invaders
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Damir Svrtan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: gosu
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Classic arcade game written in Ruby w/ Gosu.
56
+ email:
57
+ - damir.svrtan@gmail.com
58
+ executables:
59
+ - space-invaders
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - assets/fonts/unifont.ttf
69
+ - assets/images/Bullet.png
70
+ - assets/images/FullBlock.png
71
+ - assets/images/InvaderA1.png
72
+ - assets/images/InvaderA2.png
73
+ - assets/images/InvaderB1.png
74
+ - assets/images/InvaderB2.png
75
+ - assets/images/InvaderC1.png
76
+ - assets/images/InvaderC2.png
77
+ - assets/images/OkBlock.png
78
+ - assets/images/RedInvader.png
79
+ - assets/images/Ship.png
80
+ - assets/images/ShipCrushedLeft.png
81
+ - assets/images/ShipCrushedRight.png
82
+ - assets/images/WeakBlock.png
83
+ - assets/sounds/InvaderBullet.wav
84
+ - assets/sounds/InvaderHit.wav
85
+ - assets/sounds/ShipBullet.wav
86
+ - assets/sounds/ShipHit.wav
87
+ - bin/space-invaders
88
+ - go.rb
89
+ - lib/space_invaders.rb
90
+ - lib/space_invaders/app.rb
91
+ - lib/space_invaders/base.rb
92
+ - lib/space_invaders/behaviors/centerable.rb
93
+ - lib/space_invaders/behaviors/collideable.rb
94
+ - lib/space_invaders/behaviors/fireable.rb
95
+ - lib/space_invaders/behaviors/mesurable.rb
96
+ - lib/space_invaders/blocks/block.rb
97
+ - lib/space_invaders/blocks/u_block.rb
98
+ - lib/space_invaders/blocks/u_block_container.rb
99
+ - lib/space_invaders/bullets/bullet.rb
100
+ - lib/space_invaders/bullets/bullet_collection.rb
101
+ - lib/space_invaders/invaders/invader.rb
102
+ - lib/space_invaders/invaders/invader_abc.rb
103
+ - lib/space_invaders/invaders/invader_row.rb
104
+ - lib/space_invaders/invaders/invaders_container.rb
105
+ - lib/space_invaders/invaders/red_invader.rb
106
+ - lib/space_invaders/screens/game_over_screen.rb
107
+ - lib/space_invaders/screens/next_level_screen.rb
108
+ - lib/space_invaders/screens/welcome_screen.rb
109
+ - lib/space_invaders/ship/drowned_ship_animator.rb
110
+ - lib/space_invaders/ship/ship.rb
111
+ - lib/space_invaders/statics/button_controller.rb
112
+ - lib/space_invaders/statics/game_status.rb
113
+ - lib/space_invaders/statics/images.rb
114
+ - lib/space_invaders/statics/sounds.rb
115
+ - lib/space_invaders/trackers/lives_tracker.rb
116
+ - lib/space_invaders/trackers/score_tracker.rb
117
+ - lib/space_invaders/utils.rb
118
+ - space_invaders.gemspec
119
+ homepage: https://github.com/DamirSvrtan/space-invaders.rb
120
+ licenses:
121
+ - MIT
122
+ metadata: {}
123
+ post_install_message:
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 2.0.3
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: space_invaders.rb
143
+ test_files: []