-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgame.rb
executable file
·55 lines (49 loc) · 1.22 KB
/
game.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
require_relative "game/display"
require_relative "game/human_player"
require_relative "game/computer_player"
class Game
def initialize(type)
@player1 = HumanPlayer.new("W")
if type == '1'
@player2 = ComputerPlayer.new("BLK")
else
@player2 = HumanPlayer.new("BLK")
end
@current_player = @player1
@display = Display.new(@current_player)
end
def play
until game_over?
begin
@current_player.make_move(@display)
rescue
puts "Invalid move"
sleep(1)
@display.start_pos = nil
@display.end_pos = nil
retry
end
swap_current_player
end
@display.render(false)
puts "#{@current_player.name} lost haha loser"
end
def game_over?
@display.board.checkmate?(:W) || @display.board.checkmate?(:BLK)
end
def swap_current_player
@current_player = @current_player == @player1 ? @player2 : @player1
@display.current_player = @current_player
if @current_player == @player2
@display.cursor.cursor_pos = [0,0]
else
@display.cursor.cursor_pos = [7,0]
end
end
end
if __FILE__ == $PROGRAM_NAME
p 'Input 0 for singleplayer or 1 for multiplayer'
input = gets.chomp
g = Game.new(input)
g.play
end