life 0.1.0 → 0.2.0
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/README.md +15 -1
- data/bin/life +7 -0
- data/lib/life.rb +2 -1
- data/lib/life/cli.rb +45 -0
- data/lib/life/version.rb +1 -1
- data/life.gemspec +2 -0
- metadata +21 -2
data/README.md
CHANGED
@@ -8,7 +8,21 @@ A ruby implementation of Conway's [game of life](http://en.wikipedia.org/wiki/Co
|
|
8
8
|
|
9
9
|
## Usage
|
10
10
|
|
11
|
-
|
11
|
+
To use Life, run the `life new` command. It can be used with the following options
|
12
|
+
* `--width` or `-w` specifies how many cells wide the game will be
|
13
|
+
* `--height` or `-h` specifies how many cells high the game will be
|
14
|
+
* `--generations` or `-g` specifies how many generations the simulation will run
|
15
|
+
|
16
|
+
```
|
17
|
+
$ life new -w 3 -h 4 -g 5
|
18
|
+
```
|
19
|
+
This will create a 3x4 game that runs for 5 generations
|
20
|
+
|
21
|
+
When first creating a game, you will be prompted to enter which cells are initially alive.
|
22
|
+
|
23
|
+
## TODO
|
24
|
+
* Ability to pass initial configuration as command-line option
|
25
|
+
* Animate instead of displaying all the generations
|
12
26
|
|
13
27
|
## Contributing
|
14
28
|
|
data/bin/life
ADDED
data/lib/life.rb
CHANGED
data/lib/life/cli.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'life'
|
3
|
+
|
4
|
+
module Life
|
5
|
+
module CLI
|
6
|
+
class Base < Thor
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
default_task :help
|
10
|
+
|
11
|
+
desc :new, "Create new game"
|
12
|
+
method_option :width, :type => :numeric, :aliases => '-w', :desc => "Width of board", :required => true
|
13
|
+
method_option :height, :type => :numeric,:aliases => '-h', :desc => "Height of board", :required => true
|
14
|
+
method_option :generations, :type => :numeric,:aliases => '-g', :desc => "How many generations to display", :required => true
|
15
|
+
|
16
|
+
def new
|
17
|
+
seed = []
|
18
|
+
while yes? "Would you like to add a live cell to the grid? [Y/n]"
|
19
|
+
x = ask "Please enter x coordinate"
|
20
|
+
y = ask "Please enter y coordinate"
|
21
|
+
seed << [(x.to_i) - 1, (y.to_i) -1]
|
22
|
+
end
|
23
|
+
|
24
|
+
world = World.new options[:width], options[:height], seed
|
25
|
+
|
26
|
+
(1..options[:generations]).each do |gen|
|
27
|
+
puts "== Generation #{gen} =="
|
28
|
+
draw(world)
|
29
|
+
puts ""
|
30
|
+
world.tick
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def draw(world)
|
35
|
+
world.current.each do |row|
|
36
|
+
processed_row = row.map { |cell| cell.live? ? "@" : "_"}
|
37
|
+
print "["
|
38
|
+
print processed_row.join(' ')
|
39
|
+
puts "]"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/life/version.rb
CHANGED
data/life.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: life
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,6 +11,22 @@ bindir: bin
|
|
11
11
|
cert_chain: []
|
12
12
|
date: 2012-09-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.16.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.16.0
|
14
30
|
- !ruby/object:Gem::Dependency
|
15
31
|
name: rspec
|
16
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -30,7 +46,8 @@ dependencies:
|
|
30
46
|
description: Conway's Game of life in ruby
|
31
47
|
email:
|
32
48
|
- joel.quenneville@collegeplus.org
|
33
|
-
executables:
|
49
|
+
executables:
|
50
|
+
- life
|
34
51
|
extensions: []
|
35
52
|
extra_rdoc_files: []
|
36
53
|
files:
|
@@ -40,8 +57,10 @@ files:
|
|
40
57
|
- LICENSE
|
41
58
|
- README.md
|
42
59
|
- Rakefile
|
60
|
+
- bin/life
|
43
61
|
- lib/life.rb
|
44
62
|
- lib/life/cell.rb
|
63
|
+
- lib/life/cli.rb
|
45
64
|
- lib/life/grid.rb
|
46
65
|
- lib/life/version.rb
|
47
66
|
- lib/life/world.rb
|