ruby_ttt 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/game.rb +49 -0
  2. data/lib/ruby_ttt.rb +1 -50
  3. metadata +2 -1
data/lib/game.rb ADDED
@@ -0,0 +1,49 @@
1
+ module RubyTictactoe
2
+
3
+ class Game
4
+ include TictactoeConstants
5
+ attr_accessor :board, :player_one, :player_two, :ui, :player_first_move
6
+ def initialize(settings)
7
+ @board = settings[:board]
8
+ @player_one = settings[:player_one]
9
+ @player_two = settings[:player_two]
10
+ @player_first_move = settings[:player_first_move]
11
+ @ui = UI.new
12
+ end
13
+
14
+ def advance_game
15
+ game_status_check(current_player.opponent.marker)
16
+ ui.next_move_message(current_player.marker) unless board.game_over?
17
+ end
18
+
19
+ def game_status_check(marker)
20
+ if board.winner?(marker)
21
+ ui.winning_game_message(marker)
22
+ elsif !board.moves_remaining?
23
+ ui.tie_game_message
24
+ end
25
+ end
26
+
27
+ def verify_move(cell)
28
+ return false if !board.available_cell?(cell)
29
+ current_player.add_marker(board, cell)
30
+ true
31
+ end
32
+
33
+ def current_player
34
+ if total_markers(MARKER_X) > total_markers(MARKER_O)
35
+ player_two
36
+ elsif total_markers(MARKER_O) > total_markers(MARKER_X)
37
+ player_one
38
+ else
39
+ player_first_move
40
+ end
41
+ end
42
+
43
+ def total_markers(marker)
44
+ board.all_cells.select { |cell, value| value == marker }.count
45
+ end
46
+
47
+ end
48
+
49
+ end
data/lib/ruby_ttt.rb CHANGED
@@ -6,53 +6,4 @@ require 'game_setup'
6
6
  require 'player'
7
7
  require 'ui'
8
8
  require 'alpha_beta_player'
9
-
10
- module RubyTictactoe
11
-
12
- class Game
13
- include TictactoeConstants
14
- attr_accessor :board, :player_one, :player_two, :ui, :player_first_move
15
- def initialize(settings)
16
- @board = settings[:board]
17
- @player_one = settings[:player_one]
18
- @player_two = settings[:player_two]
19
- @player_first_move = settings[:player_first_move]
20
- @ui = UI.new
21
- end
22
-
23
- def advance_game
24
- game_status_check(current_player.opponent.marker)
25
- ui.next_move_message(current_player.marker) unless board.game_over?
26
- end
27
-
28
- def game_status_check(marker)
29
- if board.winner?(marker)
30
- ui.winning_game_message(marker)
31
- elsif !board.moves_remaining?
32
- ui.tie_game_message
33
- end
34
- end
35
-
36
- def verify_move(cell)
37
- return false if !board.available_cell?(cell)
38
- current_player.add_marker(board, cell)
39
- true
40
- end
41
-
42
- def current_player
43
- if total_markers(MARKER_X) > total_markers(MARKER_O)
44
- player_two
45
- elsif total_markers(MARKER_O) > total_markers(MARKER_X)
46
- player_one
47
- else
48
- player_first_move
49
- end
50
- end
51
-
52
- def total_markers(marker)
53
- board.all_cells.select { |cell, value| value == marker }.count
54
- end
55
-
56
- end
57
-
58
- end
9
+ require 'game'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_ttt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -38,6 +38,7 @@ files:
38
38
  - lib/ai.rb
39
39
  - lib/alpha_beta_player.rb
40
40
  - lib/board.rb
41
+ - lib/game.rb
41
42
  - lib/game_setup.rb
42
43
  - lib/player.rb
43
44
  - lib/player_factory.rb