game-of-life 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 589500814f31c4ba594d0642251e07d027b60937
4
- data.tar.gz: 57bd1887229ad48b876cd225b9b54142a2948c20
3
+ metadata.gz: 67536893d2d077305cfd3a540499d0dc82f59e43
4
+ data.tar.gz: 0ba82c03708bc559b5d61077d937a9b6020263d6
5
5
  SHA512:
6
- metadata.gz: 6bfc5f21b5ce9121c64716527aebdce3ee709beed72fe56d078b09265c7255151c4ca2483f5c579879914bfbffd4b8bfaba51a0e3c2c2d257cf843b3b172af10
7
- data.tar.gz: 2e7e10ee81f13bce411f11913d554e88e6380f825b493d303b4ec7706099715924b4d060985cba091c8187b94577fcfe01365853cc288d5a097374fa4d5d6fb6
6
+ metadata.gz: 1fad7965e961f82145e4f3e14fd23fb63113ad94aa6b8f8946411dfe90b136b53a659380b5953888ad11bd7e773ba6d086db0d38bcfc7351d92f881f3317b58c
7
+ data.tar.gz: f02d31e33d65d0d08d69757759e764560eabde3cb47e89f94d641ce8147d1a82bf0c07a7f74d3e14bc73815b10f7f22a4d72854c430eae22837cf876faeca515
@@ -0,0 +1,26 @@
1
+ The Game of Life
2
+ ============
3
+ ![pictureGallery](https://lh4.googleusercontent.com/-1vaiRa4FP6Y/UpOhsmoFtDI/AAAAAAAABbY/WlEbsDYOpMA/w804-h622-no/gol.png "screenshot")
4
+
5
+ This is an implementation of [Conway's Game of Life](http://en.wikipedia.org/wiki/Conway's_Game_of_Life "Conway's Game of Life") the TDD way, with Ruby :)
6
+
7
+ I used **minitest** for testing and **gosu** to display the game on the screen.
8
+
9
+ ##Installing
10
+
11
+ To install the game, run:
12
+
13
+ > `gem install game-of-life`
14
+
15
+ If you're using ruby 2.X, **gosu** may crash the installation because of some missing dependencies. To avoid that,
16
+ before installing the game, you must install the libraries **libogg** and **libvorbis**. You can install them with brew:
17
+
18
+ > `brew install libogg` and `brew install libvorbis`
19
+
20
+ ##Running the game
21
+
22
+ On your terminal, run the command:
23
+
24
+ > `game-of-life`
25
+
26
+ Have fun!
data/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- require "bundler/gem_tasks"
2
1
  require 'rake/testtask'
3
2
 
4
3
  Rake::TestTask.new(:test) do |test|
@@ -1,6 +1,6 @@
1
1
  module GameOfLife
2
2
  MAJOR = 0
3
3
  MINOR = 1
4
- PATCH = 2
4
+ PATCH = 3
5
5
  VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}"
6
6
  end
@@ -122,12 +122,6 @@ module GameOfLife
122
122
  cell.dead? and live_neighbours.count == 3
123
123
  end
124
124
 
125
- def rebuild_board(live_cells,dead_cells)
126
- (live_cells+dead_cells).each do |cell|
127
- @board.set(cell.x,cell.y,cell)
128
- end
129
- end
130
-
131
125
  def setup(random)
132
126
  @board = Matrix.build(@width, @height) { |row,column|
133
127
  if random
@@ -158,159 +152,4 @@ module GameOfLife
158
152
  @board = nil
159
153
  end
160
154
  end
161
- # class World
162
- # attr_accessor :cells, :board
163
- # attr_reader :width, :height
164
-
165
- # def initialize(width=10, height=10, allow_negative_cells=true)
166
- # @width, @height = width, height
167
- # @negative = allow_negative_cells
168
- # @cells = []
169
-
170
- # setup_board
171
- # end
172
-
173
- # def dead_cells
174
- # @cells.select { |cell| cell.dead? }
175
- # end
176
-
177
- # def live_cells
178
- # @cells.select { |cell| cell.alive? }
179
- # end
180
-
181
- # def seed!
182
- # for x in (0).upto(@width-1) do
183
- # for y in (0).upto(@height-1) do
184
- # cell = Cell.new(x,y,[true,false].sample)
185
- # @cells << cell
186
- # @board[x][y] = cell
187
- # end
188
- # end
189
- # end
190
-
191
- # # up_left | up | up_right
192
- # # ----------|------|-----------
193
- # # left | cell | right
194
- # # ----------|------|-----------
195
- # # down_left | down | down_right
196
- # def live_neighbours_of(cell)
197
- # live_neighbours = []
198
-
199
- # up_left = Cell.new(cell.x-1,cell.y+1)
200
- # up = Cell.new(cell.x,cell.y+1)
201
- # up_right = Cell.new(cell.x+1,cell.y+1)
202
- # left = Cell.new(cell.x-1,cell.y)
203
- # right = Cell.new(cell.x+1,cell.y)
204
- # down_left = Cell.new(cell.x-1,cell.y-1)
205
- # down = Cell.new(cell.x,cell.y-1)
206
- # down_right = Cell.new(cell.x+1,cell.y-1)
207
-
208
- # neighbour_candidates = [up_left,up,up_right,left,right,down_left,down,down_right]
209
-
210
- # neighbour_candidates.each do |neighbour|
211
- # live_neighbours << @board[neighbour.x][neighbour.y] if not outside_of_the_world?(neighbour) and neighbour.alive?
212
- # end
213
-
214
- # live_neighbours
215
- # end
216
-
217
- # def exist?(cell)
218
- # @cells.include? cell
219
- # end
220
-
221
- # def rotate!
222
- # future_alive_cells = []
223
- # future_dead_cells = []
224
-
225
- # @cells.each do |cell|
226
- # num_live_neighbours = live_neighbours_of(cell).count
227
-
228
- # # Rule #1
229
- # if cell.alive? and num_live_neighbours < 2
230
- # future_dead_cells << cell
231
- # end
232
-
233
- # # Rule #2
234
- # if live_neighbours_of(cell).count == 2 or live_neighbours_of(cell).count == 3
235
- # future_alive_cells << cell
236
- # end
237
-
238
- # # Rule #3
239
- # if cell.alive? and num_live_neighbours > 3
240
- # future_dead_cells << cell
241
- # end
242
-
243
- # # Rule #4
244
- # if cell.dead? and num_live_neighbours == 3
245
- # future_alive_cells << cell
246
- # end
247
-
248
- # update_cells(future_alive_cells,future_dead_cells)
249
- # end
250
- # end
251
-
252
- # def create(cell)
253
- # # raise CellAlreadyExistsInTheWorldException if exist?(cell)
254
- # raise CellInvalidCoordinatesException if outside_of_the_world?(cell) or negative_coordinates?(cell)
255
- # @cells << cell
256
- # end
257
-
258
- # def revive(cell)
259
- # raise CellIsAlreadyAliveException if exist?(cell) and cell.alive?
260
- # cell.reborn!
261
- # end
262
-
263
- # def kill(cell)
264
- # raise CellIsAlreadyDeadException if exist?(cell) and cell.dead?
265
- # cell.die!
266
- # end
267
-
268
- # private
269
- # def setup_board
270
- # @board = Array.new(@width) do |row|
271
- # Array.new(@height) do |column|
272
- # Cell.new(row,column)
273
- # end
274
- # end
275
-
276
- # @board.each do |row|
277
- # row.each do |column|
278
- # @cells << column
279
- # end
280
- # end
281
- # end
282
-
283
- # def update_cells(alives,deads)
284
- # alives.each do |cell|
285
- # cell.reborn!
286
- # end
287
- # deads.each do |cell|
288
- # cell.die!
289
- # end
290
- # end
291
-
292
- # def apply_rule_1(cell,number_of_live_neighbours)
293
- # kill(cell) if cell.alive? and number_of_live_neighbours < 2
294
- # end
295
-
296
- # def apply_rule_2(cell)
297
- # # revive(cell) if live_neighbours_of(cell).count == 2 or live_neighbours_of(cell).count == 3
298
- # end
299
-
300
- # def apply_rule_3(cell,number_of_live_neighbours)
301
- # kill(cell) if cell.alive? and number_of_live_neighbours > 3
302
- # end
303
-
304
- # def apply_rule_4(cell,number_of_live_neighbours)
305
- # revive(cell) if cell.dead? and number_of_live_neighbours == 3
306
- # end
307
-
308
- # def outside_of_the_world?(cell)
309
- # (cell.x > @width) or (cell.y > @height)
310
- # end
311
-
312
- # def negative_coordinates?(cell)
313
- # (cell.x < 0) or (cell.y < 0) and not @negative
314
- # end
315
- # end
316
155
  end
@@ -12,8 +12,8 @@ module GameOfLife
12
12
  self.caption = 'The Game of Life'
13
13
 
14
14
  # Variables
15
- @num_columns = @width/5
16
- @num_rows = @height/5
15
+ @num_columns = @width/9
16
+ @num_rows = @height/9
17
17
  @column_width = @width/@num_columns
18
18
  @row_height = @height/@num_rows
19
19
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: game-of-life
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Rocha
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-13 00:00:00.000000000 Z
11
+ date: 2013-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -48,6 +48,7 @@ extra_rdoc_files: []
48
48
  files:
49
49
  - Gemfile
50
50
  - Gemfile.lock
51
+ - README.md
51
52
  - Rakefile
52
53
  - bin/game-of-life
53
54
  - game-of-life.gemspec