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 +4 -4
- data/README.md +7 -5
- data/RELEASES.md +4 -0
- data/example/start.bat +2 -0
- data/lib/software_challenge_client/action.rb +1 -1
- data/lib/software_challenge_client/game_rules.rb +14 -16
- data/lib/software_challenge_client/network.rb +0 -1
- data/lib/software_challenge_client/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f17d0f5a06ce3da01d2700ea50e20e6f8ccb9d4f
|
4
|
+
data.tar.gz: 85f493205e07e2ec8c4e66b61a51da5b4a2e43dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
95
|
-
|
96
|
-
|
97
|
-
|
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
|
|
data/RELEASES.md
CHANGED
data/example/start.bat
ADDED
@@ -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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
return false, 'Auf ein Hasenfeld darf nur gezogen werden, wenn eine Karte gespielt werden kann' unless can_play_any_card(
|
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
|
-
|
193
|
-
|
194
|
-
|
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(
|
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
|
-
|
231
|
-
|
232
|
-
|
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(
|
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
|
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.
|
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-
|
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.
|
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
|