maze-server 0.9.2 → 0.9.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 01a4f6508bbce0941c7b7e9691204c26b11b8222
4
- data.tar.gz: 9f5efe9f83720ee843d03de3a2bb5193e97ceb13
3
+ metadata.gz: 37e53347bcf52bf94d22d9cead52640ddaaf0a26
4
+ data.tar.gz: a81750259cea435728de7006e9296f087bc9b933
5
5
  SHA512:
6
- metadata.gz: c7c8f6bf2790132931cb20b7dc7367fad78c620d9afb0bfbfb9e96a500e9b567382bac69b7b67c8ce03665662c62ddf928de872364a42102bf5dc8c9a1d40e87
7
- data.tar.gz: caa375e28751a599d1debaa0149c3e30db50d02a8dce3662c8538c3dd6dc19677013d91e7bd73180020eba59eb3efd39417eeecf844b9caf9a24229766087464
6
+ metadata.gz: 6cea12fb5d013e2eeac9ea49c7ef91e1f53f6ad296352248b971c900c9192b412721be7ac8ed2f116c2f6e5f0526953445387d9f83286cd33813b5955fa04381
7
+ data.tar.gz: 6226a861f016fd42e4cff19b4d81863b71c2e5bc2afac6e63d986b5bcf78849750c7ec7ed69d5a089bf9d50a6f942582de4e3c87c005b56113bda3f149340d21
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ script: bundle exec rspec spec
data/README.rdoc CHANGED
@@ -1,9 +1,9 @@
1
1
  = \Maze Server
2
2
  {<img src="https://badge.fury.io/rb/maze-server.png" alt="Gem Version" />}[http://badge.fury.io/rb/maze-server]
3
- {<img src="https://drone.io/github.com/FuriKuri/maze-server/status.png"/>}[https://drone.io/github.com/FuriKuri/maze-server/latest]
3
+ {<img src="https://travis-ci.org/FuriKuri/maze-server.png?branch=master" alt="Build Status" />}[https://travis-ci.org/FuriKuri/maze-server]
4
4
  {<img src="https://gemnasium.com/FuriKuri/maze-server.png"/>}[https://gemnasium.com/FuriKuri/maze-server]
5
5
  {<img src="https://codeclimate.com/github/FuriKuri/maze-server.png" />}[https://codeclimate.com/github/FuriKuri/maze-server]
6
-
6
+ {<img src="https://coveralls.io/repos/FuriKuri/maze-server/badge.png" alt="Coverage Status" />}[https://coveralls.io/r/FuriKuri/maze-server]
7
7
  == Installation
8
8
 
9
9
  Add this line to your application's Gemfile:
@@ -21,6 +21,14 @@ class MazeGame
21
21
  @players[client].move(orientation)
22
22
  end
23
23
 
24
+ def moves
25
+ player_moves = {}
26
+ @players.each do |client, player|
27
+ player_moves[client.name] = player.moves
28
+ end
29
+ player_moves
30
+ end
31
+
24
32
  def maze(client)
25
33
  @maze.to_s_for_player(client.number, @players[client].current_position)
26
34
  end
@@ -30,6 +38,14 @@ class MazeGame
30
38
  puts @maze.to_s
31
39
  end
32
40
 
41
+ def player_reached_exit?(client)
42
+ @maze.exit?(@players[client].current_position)
43
+ end
44
+
45
+ def all_players_reached_exit?
46
+ @players.reject{|client, _| player_reached_exit? client }.empty?
47
+ end
48
+
33
49
  def reached_player_exit?
34
50
  !winning_players.empty?
35
51
  end
@@ -1,9 +1,10 @@
1
1
  class MazePlayer
2
- attr_reader :current_position, :name
2
+ attr_reader :current_position, :name, :moves
3
3
 
4
4
  def initialize(current_position, name)
5
5
  @current_position = current_position
6
6
  @name = name
7
+ @moves = 0
7
8
  end
8
9
 
9
10
  def move(orientation)
@@ -39,5 +40,6 @@ class MazePlayer
39
40
  def do_move(diff)
40
41
  @current_position = [@current_position[0] + diff[0],
41
42
  @current_position[1] + diff[1]]
43
+ @moves += 1
42
44
  end
43
45
  end
@@ -37,28 +37,30 @@ class MazeServer
37
37
  end
38
38
 
39
39
  def start_game
40
- until @maze_game.reached_player_exit?
40
+ until @maze_game.all_players_reached_exit?
41
41
  do_moves
42
42
  end
43
- puts @maze_game.winning_players
43
+ puts @maze_game.moves
44
44
  confirm_clients
45
45
  end
46
46
 
47
47
  private
48
48
  def do_moves
49
49
  @players.each do |player_number, client|
50
- puts "Print maze for player #{client.name}"
51
- puts @maze_game.maze(client)
52
- next_moves = @maze_game.show_next_moves(client).map { |move| move.to_s }
53
- client.socket.puts('{"operation" : "NEXT_MOVE", "messageId" : 2, "type": "REQUEST", "data" : ' + next_moves.to_s + '}')
54
- move = JSON.parse(client.socket.gets.chop)['move'].to_sym
55
- @maze_game.move(client, move)
50
+ unless @maze_game.player_reached_exit?(client)
51
+ puts "Print maze for player #{client.name}"
52
+ puts @maze_game.maze(client)
53
+ next_moves = @maze_game.show_next_moves(client).map { |move| move.to_s }
54
+ client.socket.puts('{"operation" : "NEXT_MOVE", "messageId" : 2, "type": "REQUEST", "data" : ' + next_moves.to_s + '}')
55
+ move = JSON.parse(client.socket.gets.chop)['move'].to_sym
56
+ @maze_game.move(client, move)
57
+ end
56
58
  end
57
59
  end
58
60
 
59
61
  def confirm_clients
60
62
  @players.each do |player_number, client|
61
- client.socket.puts('{"operation" : "WINNING_PLAYERS", "messageId" : 3, "type": "NOTIFICATION", "data" : ' + @maze_game.winning_players.to_s + '}')
63
+ client.socket.puts('{"operation" : "WINNING_PLAYERS", "messageId" : 3, "type": "NOTIFICATION", "data" : ' + @maze_game.moves.to_s + '}')
62
64
  client_msg = client.socket.gets.chop
63
65
  puts "#{client.name} send message #{client_msg}"
64
66
  end
@@ -1,3 +1,3 @@
1
1
  module Server
2
- VERSION = '0.9.2'
2
+ VERSION = '0.9.3'
3
3
  end
data/maze-server.gemspec CHANGED
@@ -22,4 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency 'rake'
23
23
  spec.add_development_dependency 'rspec'
24
24
  spec.add_development_dependency 'simplecov'
25
+ spec.add_development_dependency 'coveralls'
26
+
25
27
  end
@@ -1,5 +1,6 @@
1
1
  require_relative '../../../../lib/maze/game/generator/maze_generator'
2
2
  require_relative '../../../../lib/maze/game/generator/maze_walker'
3
+ require_relative '../../../../spec/spec_helper'
3
4
 
4
5
  describe MazeGenerator do
5
6
  it 'creates a empty maze' do
@@ -1,4 +1,5 @@
1
1
  require_relative '../../../../lib/maze/game/generator/maze_walker'
2
+ require_relative '../../../../spec/spec_helper'
2
3
 
3
4
  describe MazeWalker do
4
5
  it 'creates a way in a maze' do
@@ -1,5 +1,6 @@
1
1
  require_relative '../../../lib/maze/game/maze_game'
2
2
  require_relative '../../../lib/maze/server/maze_server'
3
+ require_relative '../../../spec/spec_helper'
3
4
 
4
5
  describe MazeGame do
5
6
  before do
@@ -46,4 +47,29 @@ describe MazeGame do
46
47
  Maze.any_instance.stub(:to_s_for_player).and_return('maze')
47
48
  @maze_game.maze(@client).should == 'maze'
48
49
  end
50
+
51
+ it 'returns the moves for each player' do
52
+ MazePlayer.any_instance.stub(:moves).and_return(3)
53
+ @maze_game.moves.should include('Player' => 3)
54
+ end
55
+
56
+ it 'can say if player reached exit' do
57
+ MazePlayer.any_instance.stub(:current_position).and_return([1, 1])
58
+ @maze_game.reached_player_exit?.should be_true
59
+ end
60
+
61
+ it 'can say if player is still in maze' do
62
+ MazePlayer.any_instance.stub(:current_position).and_return([1, 2])
63
+ @maze_game.reached_player_exit?.should be_false
64
+ end
65
+
66
+ it 'can say if all players reached exit' do
67
+ MazePlayer.any_instance.stub(:current_position).and_return([1, 1])
68
+ @maze_game.all_players_reached_exit?.should be_true
69
+ end
70
+
71
+ it 'can say if not all players reached exit' do
72
+ MazePlayer.any_instance.stub(:current_position).and_return([1, 2])
73
+ @maze_game.all_players_reached_exit?.should be_false
74
+ end
49
75
  end
@@ -1,4 +1,5 @@
1
1
  require_relative '../../../lib/maze/game/maze_player'
2
+ require_relative '../../../spec/spec_helper'
2
3
 
3
4
  describe MazePlayer do
4
5
  before do
@@ -52,4 +53,11 @@ describe MazePlayer do
52
53
  @player.move(:right)
53
54
  @player.current_position.should == [6, 5]
54
55
  end
56
+
57
+ it 'count the moves' do
58
+ @player.move(:right)
59
+ @player.move(:right)
60
+ @player.move(:right)
61
+ @player.moves.should == 3
62
+ end
55
63
  end
@@ -1,5 +1,6 @@
1
1
  require_relative '../../../lib/maze/game/maze'
2
2
  require_relative '../../../lib/maze/game/generator/maze_generator'
3
+ require_relative '../../../spec/spec_helper'
3
4
 
4
5
  describe Maze do
5
6
  before do
@@ -2,6 +2,7 @@ require_relative '../../../lib/maze/server/maze_server'
2
2
  require_relative '../../../lib/maze/server/version'
3
3
  require_relative '../../../lib/maze/game/maze_game'
4
4
  require 'socket'
5
+ require_relative '../../../spec/spec_helper'
5
6
 
6
7
  describe MazeServer do
7
8
 
@@ -30,7 +31,7 @@ describe MazeServer do
30
31
  end
31
32
 
32
33
  it 'handle a game' do
33
- MazeGame.any_instance.stub(:reached_player_exit?).and_return(false, true)
34
+ MazeGame.any_instance.stub(:all_players_reached_exit?).and_return(false, true)
34
35
  response = double('response', :chop => '{"move" : "left"}')
35
36
  socket = double('socket', :gets => response, :puts => nil)
36
37
  Client.any_instance.stub(:socket).and_return(socket)
@@ -0,0 +1,2 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maze-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Theo Pack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-25 00:00:00.000000000 Z
11
+ date: 2013-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coveralls
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Maze server
70
84
  email:
71
85
  - tf.pack@googlemail.com
@@ -75,6 +89,7 @@ extensions: []
75
89
  extra_rdoc_files: []
76
90
  files:
77
91
  - .gitignore
92
+ - .travis.yml
78
93
  - Gemfile
79
94
  - LICENSE.txt
80
95
  - README.rdoc
@@ -94,6 +109,7 @@ files:
94
109
  - spec/maze/game/maze_player_spec.rb
95
110
  - spec/maze/game/maze_spec.rb
96
111
  - spec/maze/server/maze_server_spec.rb
112
+ - spec/spec_helper.rb
97
113
  homepage: https://github.com/FuriKuri/maze-server
98
114
  licenses:
99
115
  - MIT
@@ -125,3 +141,4 @@ test_files:
125
141
  - spec/maze/game/maze_player_spec.rb
126
142
  - spec/maze/game/maze_spec.rb
127
143
  - spec/maze/server/maze_server_spec.rb
144
+ - spec/spec_helper.rb