software_challenge_client 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7809a3d6d16c4423f55d59c5841e091167492d5c
4
- data.tar.gz: cf93fa514e3d59944f5a25b5c4267c86f02a0842
3
+ metadata.gz: f17d0f5a06ce3da01d2700ea50e20e6f8ccb9d4f
4
+ data.tar.gz: 85f493205e07e2ec8c4e66b61a51da5b4a2e43dd
5
5
  SHA512:
6
- metadata.gz: 44aea3599dc16e2b4bc9daba649d1c3079b88b903de986bf4a5db04bdf625b6e6356038725c3e25e0823e1a769819c2e7a3ce1e08bd71327805f4d220f0d71fd
7
- data.tar.gz: 278be07a4517f858ced0abdd062e7b22665fffce97bdebdadffe4fcf400deece2dd026946b55644084734e2421c1ae9010200ad3b51ca4e312025748e80ebf0a
6
+ metadata.gz: ab46b529b1874eecfc1c9a3449d7e0c70734d06247004c473b183054c31e1251fabcd3be7877a4f80b6ecf3412766a0eebcb009dd852d50dcdf27fb68a397ee3
7
+ data.tar.gz: cb7cd641de2dbdf3caf1b60fb5058a00436ea985b69866938dac4988accc5e833ce1e69fd094b17d00d877e43460757480ae8b103fd104870002dc14eeec23a7
data/README.md CHANGED
@@ -30,7 +30,7 @@ ruby main.rb
30
30
  ```
31
31
 
32
32
  in a shell (while being in the example directory). Note that the
33
- software_challenge_client gem needs to be installed for this to work and a
33
+ `software_challenge_client` gem needs to be installed for this to work and a
34
34
  server waiting for a manual client has to be running.
35
35
 
36
36
  ## Documentation
@@ -91,10 +91,12 @@ pass.
91
91
  ### Releasing
92
92
 
93
93
  To release a new version, update the version number in
94
- `lib/software_challenge_client/version.rb` and update RELEASES.md. Then run
95
- `bundle exec rake release`, which will create a git tag for the version, push
96
- git commits and tags, and push the `.gem` file to
97
- [rubygems.org](https://rubygems.org).
94
+ `lib/software_challenge_client/version.rb` and update RELEASES.md.
95
+
96
+ Then run `bundle exec rake release`, which will create a git tag for the
97
+ version, push git commits and tags, and push the `.gem` file to
98
+ [rubygems.org](https://rubygems.org). You may also use the `release.sh` script
99
+ which executes `bundle exec rake release` in a suitable docker container.
98
100
 
99
101
  ## Contributing
100
102
 
@@ -1,3 +1,7 @@
1
+ = 1.2.1
2
+
3
+ - fixed a bug which could lead to an infinite loop in the possible_move method
4
+
1
5
  = 1.2.0
2
6
 
3
7
  - fixed connection code
@@ -0,0 +1,2 @@
1
+ :: Gedacht zum ausführen des ruby SimpleClients
2
+ ruby main.rb %*
@@ -110,7 +110,7 @@ class Card < Action
110
110
  raise "Unknown card type #{card_type.inspect}!"
111
111
  end
112
112
  gamestate.set_last_action(self)
113
- gamestate.current_player.cards.delete(self.type)
113
+ gamestate.current_player.cards.delete(card_type)
114
114
  end
115
115
 
116
116
  def type
@@ -53,11 +53,11 @@ class GameRules
53
53
  when FieldType::SALAD
54
54
  return false, 'Ohne Salat darf ein Salatfeld nicht betreten werden.' if player.salads < 1
55
55
  when FieldType::HARE
56
- state2 = state.deep_clone
57
- state2.set_last_action(Advance.new(distance))
58
- state2.current_player.index = new_position
59
- state2.current_player.carrots -= required_carrots
60
- return false, 'Auf ein Hasenfeld darf nur gezogen werden, wenn eine Karte gespielt werden kann' unless can_play_any_card(state2)
56
+ state_after_advance = state.deep_clone
57
+ state_after_advance.set_last_action(Advance.new(distance))
58
+ state_after_advance.current_player.index = new_position
59
+ state_after_advance.current_player.carrots -= required_carrots
60
+ return false, 'Auf ein Hasenfeld darf nur gezogen werden, wenn eine Karte gespielt werden kann' unless can_play_any_card(state_after_advance)
61
61
  when FieldType::GOAL
62
62
  carrotsLeft = player.carrots - required_carrots
63
63
  return false, "Auf das Zielfeld darf nur mit maximal 10 Karotten gezogen werden (es sind aber #{carrotsLeft} bei Erreichen des Zielfeldes)." unless carrotsLeft <= 10
@@ -131,9 +131,7 @@ class GameRules
131
131
  return true
132
132
  elsif (last_action.instance_of? Card)
133
133
  # the player has to leave a rabbit field in next turn
134
- if (last_action.type == CardType::EAT_SALAD)
135
- return true
136
- elsif (last_action.type == CardType::TAKE_OR_DROP_CARROTS) # the player has to leave the rabbit field
134
+ if (last_action.type == CardType::EAT_SALAD || last_action.type == CardType::TAKE_OR_DROP_CARROTS)
137
135
  return true
138
136
  end
139
137
  end
@@ -189,10 +187,10 @@ class GameRules
189
187
  when FieldType::SALAD
190
188
  return false, 'Spieler käme durch Spielen der FALL_BACK Kart auf ein Salatfeld, hat aber keine Salate.' if player.salads < 1
191
189
  when FieldType::HARE
192
- state2 = state.deep_clone
193
- state2.set_last_action(Card.new(CardType::HURRY_AHEAD))
194
- state2.current_player.cards.delete(CardType::FALL_BACK)
195
- return false, 'Spieler käme durch Spielen der FALL_BACK Kart auf ein Hasenfeld, kann aber dann keine weitere Karte mehr spielen.' unless can_play_any_card(state2)
190
+ state_after_card_played = state.deep_clone
191
+ state_after_card_played.set_last_action(Card.new(CardType::FALL_BACK))
192
+ state_after_card_played.current_player.cards.delete(CardType::FALL_BACK)
193
+ return false, 'Spieler käme durch Spielen der FALL_BACK Kart auf ein Hasenfeld, kann aber dann keine weitere Karte mehr spielen.' unless can_play_any_card(state_after_card_played)
196
194
  when FieldType::START
197
195
  when FieldType::CARROT
198
196
  when FieldType::POSITION_1
@@ -227,10 +225,10 @@ class GameRules
227
225
  when FieldType::SALAD
228
226
  return false, 'Spieler käme durch Spielen der HURRY_AHEAD Kart auf ein Salatfeld, hat aber keine Salate.' if player.salads < 1
229
227
  when FieldType::HARE
230
- state2 = state.deep_clone
231
- state2.set_last_action(Card.new(CardType::HURRY_AHEAD))
232
- state2.current_player.cards.delete(CardType::HURRY_AHEAD)
233
- return false, 'Spieler käme durch Spielen der HURRY_AHEAD Kart auf ein Hasenfeld, kann aber dann keine weitere Karte mehr spielen.' unless can_play_any_card(state2)
228
+ state_after_card_played = state.deep_clone
229
+ state_after_card_played.set_last_action(Card.new(CardType::HURRY_AHEAD))
230
+ state_after_card_played.current_player.cards.delete(CardType::HURRY_AHEAD)
231
+ return false, 'Spieler käme durch Spielen der HURRY_AHEAD Kart auf ein Hasenfeld, kann aber dann keine weitere Karte mehr spielen.' unless can_play_any_card(state_after_card_played)
234
232
  when FieldType::GOAL
235
233
  return false, 'Spieler käme durch Spielen der HURRY_AHEAD Kart ins Ziel, darf es aber nicht betreten (entweder noch Salate oder mehr als 10 Karotten).' unless can_enter_goal(state)
236
234
  when FieldType::CARROT
@@ -17,7 +17,6 @@ class Network
17
17
  attr_reader :connected
18
18
 
19
19
  def initialize(host, port, board, client, reservation = nil)
20
- logger.debug("New version")
21
20
  @host = host
22
21
  @port = port
23
22
  @board = board
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module SoftwareChallengeClient
3
- VERSION = "1.2.0"
3
+ VERSION = "1.2.1"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: software_challenge_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - 'kwollw '
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2017-09-19 00:00:00.000000000 Z
13
+ date: 2017-11-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: typesafe_enum
@@ -247,6 +247,7 @@ files:
247
247
  - develop.sh
248
248
  - example/client.rb
249
249
  - example/main.rb
250
+ - example/start.bat
250
251
  - generate-authors.sh
251
252
  - lib/software_challenge_client.rb
252
253
  - lib/software_challenge_client/action.rb
@@ -291,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
292
  version: '0'
292
293
  requirements: []
293
294
  rubyforge_project:
294
- rubygems_version: 2.6.11
295
+ rubygems_version: 2.6.13
295
296
  signing_key:
296
297
  specification_version: 4
297
298
  summary: This gem provides functions to build a client for the coding competition