-
Notifications
You must be signed in to change notification settings - Fork 0
/
war_game_server.rb
48 lines (40 loc) · 983 Bytes
/
war_game_server.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
require 'socket'
require_relative './war_game'
class WarGameServer
CONTROL_SEQUENCE = 'END'
attr_reader :game
def initialize(port=51528)
@server = TCPServer.new(port)
@clients = []
end
def accept_new_client
client = @server.accept
@clients << client
client.puts "Welcome, Player #{@clients.count}!#{CONTROL_SEQUENCE}"
if @clients.count == 2
@game = WarGame.new(WarPlayer.new, WarPlayer.new)
@game.deal
end
end
def take_commands
player1_command = @clients[0].gets
player2_command = @clients[1].gets
play_round
end
def stop
@server.close
end
def play_round
@game.play_round do |card1, card2, result|
@clients.each do |client|
client.puts(pretty_round_result(card1, card2, result))
end
end
end
def pretty_round_result(card1, card2, result)
message = ""
message << "Player 1: #{card1.to_s}\nPlayer 2: #{card2.to_s}\n" if card1 && card2
message << "#{result}"
message << CONTROL_SEQUENCE if message =~ /wins/
end
end