@@ -7,7 +7,7 @@ def initialize(white, black)
7
7
@player1 = white
8
8
@player2 = black
9
9
@move_count = 0
10
- @curr_player = :w
10
+ @curr_player = @player1
11
11
end
12
12
13
13
def play
@@ -16,35 +16,23 @@ def play
16
16
until @board . checkmate? ( :w ) || @board . checkmate? ( :b )
17
17
system ( 'clear' )
18
18
@board . display
19
- if @move_count . even?
20
- begin
21
- puts "Check." if @board . in_check? ( :w )
22
- puts "Player 1:"
23
- start , target = @player1 . play_turn
24
- make_move ( :w , start , target )
25
- rescue RuntimeError => e
26
- puts e . message
27
- puts "Please select valid move."
28
- retry
29
- end
30
- else
31
- begin
32
- puts "Check." if @board . in_check? ( :b )
33
- puts "Player 2:"
34
- start , target = @player2 . play_turn
35
- make_move ( :b , start , target )
36
- rescue RuntimeError => e
37
- puts e . message
38
- puts "Please select valid move."
39
- retry
40
- end
19
+ begin
20
+ puts "Check." if @board . in_check? ( @curr_player )
21
+ puts "#{ @curr_player . name } 's turn."
22
+ start , target = @curr_player . play_turn
23
+ make_move ( @curr_player . color , start , target )
24
+ rescue RuntimeError => e
25
+ puts e . message
26
+ puts "Please select valid move."
27
+ retry
41
28
end
29
+ @curr_player = ( @curr_player == @player1 ? @player2 : @player1 )
42
30
@move_count += 1
43
31
end
44
32
45
33
system ( 'clear' )
46
34
@board . display
47
- winner = @board . checkmate? ( :w ) ? 'Player 2' : 'Player 1'
35
+ winner = @board . checkmate? ( :w ) ? @player2 . name : @player1 . name
48
36
puts "CHECKMATE. #{ winner } wins."
49
37
puts "Game lasted for #{ @move_count / 2 } turns."
50
38
puts "Game time: #{ Time . now - start_time } s"
@@ -60,8 +48,8 @@ def make_move(color, start, target)
60
48
end
61
49
62
50
if __FILE__ == $PROGRAM_NAME
63
- player1 = HumanPlayer . new
64
- player2 = HumanPlayer . new
51
+ player1 = HumanPlayer . new ( :w , 'Foo' )
52
+ player2 = HumanPlayer . new ( :b , 'Bar' )
65
53
game = Game . new ( player1 , player2 )
66
54
game . play
67
55
end
0 commit comments