tic_tac_toe_jchavarria 0.0.1
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.
- checksums.yaml +7 -0
- data/bin/tic_tac_toe +2 -0
- data/lib/tic_tac_toe.rb +12 -0
- data/lib/tic_tac_toe/tictactoe.rb +121 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9488d46ca4331333c83b90f8e3838806b85c26f6
|
4
|
+
data.tar.gz: cdda21d2e70d6f6fb0e879d06ebee4d6bdd999af
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 84855cfdad4d0f6db94ab433b5780be951642696017fc0075a9ec9929d6423b9a4fae72435e8a0f8d1364306c4fef4a0d0a8d1cf5ebc15d8f9d4d7489db1d8f2
|
7
|
+
data.tar.gz: 97c67861d657f656b50b587873fb73b647720238a3f40de457fe18284c9727bd8469afe91b470bca666b535ff1ac9584fdb321f0caa72bc67703fdd950024426
|
data/bin/tic_tac_toe
ADDED
data/lib/tic_tac_toe.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
require_relative "./tic_tac_toe/tictactoe.rb"
|
3
|
+
|
4
|
+
|
5
|
+
=begin
|
6
|
+
require_relative "./tic_tac_toe/Board.rb"
|
7
|
+
require_relative "./tic_tac_toe/Players.rb"
|
8
|
+
require_relative "./tic_tac_toe/Display.rb"
|
9
|
+
require_relative "./tic_tac_toe/Human.rb"
|
10
|
+
require_relative "./tic_tac_toe/Machine.rb"
|
11
|
+
require_relative "./tic_tac_toe/Game.rb"
|
12
|
+
=end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
=begin
|
2
|
+
Class Tictactoe
|
3
|
+
Jorge Chavarria Rodriguez
|
4
|
+
=end
|
5
|
+
|
6
|
+
EMPTY_BOX = "-"
|
7
|
+
MAX_NUMBER_OF_PIECES_IN_TICTACTOE = 9
|
8
|
+
|
9
|
+
class Tictactoe
|
10
|
+
|
11
|
+
attr_accessor :board
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@board = [["-","-","-"],["-","-","-"],["-","-","-"]]
|
15
|
+
@game_winner = :no_player
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def put_piece_at_game(row_position, column_position, game_piece)
|
20
|
+
if @board[row_position][column_position] == EMPTY_BOX
|
21
|
+
@board[row_position][column_position] = game_piece
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def is_there_a_winner?
|
27
|
+
is_there_a_winner_in_row? or is_there_a_winner_in_column? or is_there_a_winner_in_diagonal_1? or is_there_a_winner_in_diagonal_2?
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def who_is_the_winner?
|
32
|
+
@game_winner
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
def is_there_a_tie?
|
37
|
+
not is_there_a_winner? and the_board_is_full?
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def clean_the_board
|
42
|
+
for actual_row in (0..2)
|
43
|
+
for actual_column in (0..2)
|
44
|
+
@board[actual_row][actual_column] = EMPTY_BOX
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# ***** These are private functions *****
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def is_there_a_winner_in_row?
|
54
|
+
for actual_row in (0..2)
|
55
|
+
if all_elements_are_equals?(@board[actual_row]) and not is_there_an_empty_box?(@board[actual_row])
|
56
|
+
@game_winner = @board[actual_row][0]
|
57
|
+
return true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
false
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
def is_there_a_winner_in_column?
|
65
|
+
for actual_column in (0..2)
|
66
|
+
actual_column_values = [@board[0][actual_column], @board[1][actual_column], @board[2][actual_column]]
|
67
|
+
|
68
|
+
if all_elements_are_equals?(actual_column_values) and not is_there_an_empty_box?(actual_column_values)
|
69
|
+
@game_winner = @board[0][actual_column]
|
70
|
+
return true
|
71
|
+
end
|
72
|
+
end
|
73
|
+
false
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
def is_there_a_winner_in_diagonal_1?
|
78
|
+
diagonal_1_values = [@board[0][0], @board[1][1], @board[2][2]]
|
79
|
+
|
80
|
+
if all_elements_are_equals?(diagonal_1_values) and not is_there_an_empty_box?(diagonal_1_values)
|
81
|
+
@game_winner = @board[0][0]
|
82
|
+
return true
|
83
|
+
end
|
84
|
+
false
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
def is_there_a_winner_in_diagonal_2?
|
89
|
+
diagonal_2_values = [@board[0][2], @board[1][1], @board[2][0]]
|
90
|
+
|
91
|
+
if all_elements_are_equals?(diagonal_2_values) and not is_there_an_empty_box?(diagonal_2_values)
|
92
|
+
@game_winner = @board[0][2]
|
93
|
+
return true
|
94
|
+
end
|
95
|
+
false
|
96
|
+
end
|
97
|
+
|
98
|
+
|
99
|
+
def all_elements_are_equals?(array)
|
100
|
+
array.uniq.length == 1
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
def is_there_an_empty_box?(array)
|
105
|
+
array.include?(EMPTY_BOX)
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
def the_board_is_full?
|
110
|
+
pieces_in_game = 0
|
111
|
+
for current_row in (0..2)
|
112
|
+
for current_column in (0..2)
|
113
|
+
if @board[current_row][current_column] != EMPTY_BOX
|
114
|
+
pieces_in_game += 1
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
pieces_in_game == MAX_NUMBER_OF_PIECES_IN_TICTACTOE
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tic_tac_toe_jchavarria
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jorge Chavarria
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-06-14 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Console Tic Tac Toe game
|
14
|
+
email: jchavarria@pernix-solutions.com
|
15
|
+
executables:
|
16
|
+
- tic_tac_toe
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/tic_tac_toe.rb
|
21
|
+
- lib/tic_tac_toe/tictactoe.rb
|
22
|
+
- bin/tic_tac_toe
|
23
|
+
homepage: ''
|
24
|
+
licenses: []
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 2.0.3
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: Tic tac toe console game
|
46
|
+
test_files: []
|