game_board 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.md +9 -0
- data/lib/game_board.rb +3 -4
- data/lib/game_board/version.rb +1 -1
- data/spec/game_board_spec.rb +44 -2
- metadata +2 -2
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
## GameBoard
|
2
2
|
|
3
|
+
Authors: [MrPowers](https://github.com/MrPowers), [sandbochs](https://github.com/sandbochs)
|
4
|
+
|
3
5
|
This class helps calculate the rows, columns, diagonals, and diagonals of a coordinate for nested array data structures. It is useful for games like Tic-Tac-Toe, Connect Four, Battleship, etc.
|
4
6
|
|
5
7
|
## Getting Started
|
@@ -59,4 +61,11 @@ Get all rows or columns:
|
|
59
61
|
```ruby
|
60
62
|
board.rows
|
61
63
|
board.columns
|
64
|
+
```
|
65
|
+
|
66
|
+
Print the board to console:
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
# Returns a string: "[1, 2, 3]\n[4, 5, 6]\n[7, 8, 9]\n[10, 11, 12]"
|
70
|
+
puts board.to_s
|
62
71
|
```
|
data/lib/game_board.rb
CHANGED
@@ -74,8 +74,8 @@ class GameBoard
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def down_right_diagonals(grid_array)
|
77
|
-
number_of_rows.times.map { |row_index| down_right_diagonal(row_index, 0, grid_array) } +
|
78
|
-
number_of_columns.
|
77
|
+
number_of_rows.times.map { |row_index| down_right_diagonal(row_index, 0, grid_array) }.reverse +
|
78
|
+
(1..number_of_columns - 1).map { |column_index| down_right_diagonal(0, column_index, grid_array)}
|
79
79
|
end
|
80
80
|
|
81
81
|
def grid_reflected_about_y_axis
|
@@ -85,5 +85,4 @@ class GameBoard
|
|
85
85
|
def grid_reflected_about_x_axis
|
86
86
|
grid.reverse
|
87
87
|
end
|
88
|
-
|
89
|
-
end
|
88
|
+
end
|
data/lib/game_board/version.rb
CHANGED
data/spec/game_board_spec.rb
CHANGED
@@ -12,51 +12,93 @@ describe GameBoard do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
context "#set_grid" do
|
15
|
+
|
15
16
|
it "sets a new grid for the game board" do
|
16
17
|
new_grid = [[1, 1, 1],[2, 2, 2],[3, 3, 3],[4, 4, 4]]
|
17
18
|
expect { board.set_grid(new_grid) }.to change { board.grid }.from([[1, 2, 3],[4, 5, 6], [7, 8, 9], [10, 11, 12]]).to([[1, 1, 1],[2, 2, 2],[3, 3, 3],[4, 4, 4]])
|
18
19
|
end
|
20
|
+
|
19
21
|
end
|
20
22
|
|
21
23
|
context "#get_cell" do
|
24
|
+
|
22
25
|
it { board.get_cell(0, 2).should eq 3 }
|
26
|
+
|
23
27
|
end
|
24
28
|
|
25
29
|
context "#set_cell" do
|
30
|
+
|
26
31
|
it "sets a cell at a coordinate" do
|
27
32
|
expect { board.set_cell(1, 1, "BOB")}.to change { board.get_cell(1, 1) }.from(5).to("BOB")
|
28
33
|
end
|
34
|
+
|
29
35
|
end
|
30
36
|
|
31
37
|
context '#row' do
|
38
|
+
|
32
39
|
it { board.row(1).should eq [4, 5, 6] }
|
40
|
+
|
33
41
|
end
|
34
42
|
|
35
43
|
context '#rows' do
|
44
|
+
|
36
45
|
it { board.rows.should eq [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] }
|
46
|
+
|
37
47
|
end
|
38
48
|
|
39
49
|
context '#column' do
|
50
|
+
|
40
51
|
it { board.column(2).should eq [3, 6, 9, 12] }
|
52
|
+
|
41
53
|
end
|
42
54
|
|
43
55
|
context '#columns' do
|
56
|
+
|
44
57
|
it "calculate all columns" do
|
45
58
|
board.columns === ([[1, 2, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]])
|
46
59
|
end
|
60
|
+
|
47
61
|
end
|
48
62
|
|
49
63
|
context "#coordinate_diagonals" do
|
64
|
+
|
50
65
|
it { board.coordinate_diagonals(0, 0).should eq [[1, 5, 9], [1]] }
|
51
66
|
it { board.coordinate_diagonals(1, 1).should eq [[1, 5, 9], [3, 5, 7]] }
|
52
|
-
it { board.coordinate_diagonals(2, 2).should eq [[1, 5, 9], [9, 11]] }
|
67
|
+
it { board.coordinate_diagonals(2, 2).should eq [[1, 5, 9], [9, 11]] }
|
68
|
+
it { board.coordinate_diagonals(1, 0).should eq [[4, 8, 12], [2, 4]] }
|
69
|
+
it { board.coordinate_diagonals(2, 0).should eq [[7, 11], [3, 5, 7]] }
|
70
|
+
it { board.coordinate_diagonals(3, 0).should eq [[10], [6, 8 , 10]] }
|
71
|
+
it { board.coordinate_diagonals(0, 1).should eq [[2, 6], [2, 4]] }
|
72
|
+
it { board.coordinate_diagonals(0, 2).should eq [[3], [3, 5, 7]] }
|
73
|
+
|
53
74
|
end
|
54
75
|
|
55
76
|
context '#diagonals' do
|
77
|
+
|
56
78
|
it 'calculates all diagonals' do
|
57
|
-
board.diagonals
|
79
|
+
board.diagonals == [[10], [7, 11], [4, 8, 12], [1, 5, 9], [2, 6], [3],
|
58
80
|
[1], [4, 2], [7, 5, 3], [10, 8, 6], [11, 9], [12]]
|
59
81
|
end
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
it "calculates all diagonals" do
|
86
|
+
board2 = GameBoard.new(2, 4)
|
87
|
+
board2.set_grid([[1, 2, 3, 4],
|
88
|
+
[5, 6, 7, 8]])
|
89
|
+
|
90
|
+
board2.diagonals == [[5], [1, 6], [2, 7], [3, 8], [4],
|
91
|
+
[1], [5, 2], [6, 3], [7, 4], [8]]
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
context '#to_s' do
|
97
|
+
|
98
|
+
it "prints the board properly" do
|
99
|
+
board.to_s.should eq "[1, 2, 3]\n[4, 5, 6]\n[7, 8, 9]\n[10, 11, 12]"
|
100
|
+
end
|
101
|
+
|
60
102
|
end
|
61
103
|
|
62
104
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: game_board
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-12-04 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: This is a GameBoard class with methods to help analyze the grid.
|
16
16
|
email:
|