ruby_ttt 0.1.0 → 0.1.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.
Files changed (3) hide show
  1. data/lib/game_setup.rb +10 -1
  2. data/lib/ruby_ttt.rb +17 -5
  3. metadata +2 -2
data/lib/game_setup.rb CHANGED
@@ -36,11 +36,15 @@ class GameSetup
36
36
  end
37
37
 
38
38
  def get_difficulty_level
39
- return nil unless player_one.player_type == COMPUTER_PLAYER || player_two.player_type == COMPUTER_PLAYER
39
+ return nil unless computer_player_selected?
40
40
  level = ui.request_difficulty_level
41
41
  validate_level(level) ? ui.level_assigned_message(level) : invalid_level(level)
42
42
  end
43
43
 
44
+ def computer_player_selected?
45
+ (player_one.player_type == COMPUTER_PLAYER) || (player_two.player_type == COMPUTER_PLAYER)
46
+ end
47
+
44
48
  def validate_type(type, player)
45
49
  (type == HUMAN_PLAYER) || (type == COMPUTER_PLAYER)
46
50
  end
@@ -73,4 +77,9 @@ class GameSetup
73
77
  ui.first_move_message(player)
74
78
  end
75
79
 
80
+ def set_player_types(player_one_type, player_two_type)
81
+ player_one.player_type = player_one_type
82
+ player_two.player_type = player_two_type
83
+ end
84
+
76
85
  end
data/lib/ruby_ttt.rb CHANGED
@@ -18,20 +18,32 @@ class Game
18
18
  until board.game_over?
19
19
  ui.display_board
20
20
  move = get_next_move
21
- board.available_cell?(move) ? advance_game(move, current_player) : invalid_move(move)
21
+ advance_game if verify_move(move)
22
22
  end
23
23
  exit_game
24
24
  end
25
25
 
26
+ def verify_move(cell)
27
+ if board.available_cell?(cell)
28
+ board.add_marker(current_player.marker, cell)
29
+ true
30
+ else
31
+ invalid_move(cell)
32
+ end
33
+ end
34
+
26
35
  def get_next_move
27
- return ui.request_human_move if current_player.player_type == HUMAN_PLAYER
36
+ return ui.request_human_move if !computer_move?
28
37
  difficulty_level == HARD_LEVEL ? ai.computer_move(board, current_player) : board.random_cell
29
38
  end
30
39
 
31
- def advance_game(cell, player)
32
- board.add_marker(player.marker, cell)
40
+ def computer_move?
41
+ current_player.player_type == COMPUTER_PLAYER
42
+ end
43
+
44
+ def advance_game
33
45
  game_status_check
34
- player.next_player_turn
46
+ current_player.next_player_turn
35
47
  ui.next_move_message(current_player) unless board.game_over?
36
48
  end
37
49
 
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.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-12 00:00:00.000000000 Z
12
+ date: 2013-12-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec