software_challenge_client 1.2.0 → 1.2.1

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: 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