software_challenge_client 20.2.2 → 21.0.2

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/.ruby-version +1 -1
  4. data/.vscode/launch.json +41 -0
  5. data/.vscode/settings.json +10 -0
  6. data/Dockerfile +1 -1
  7. data/Gemfile +1 -0
  8. data/Guardfile +1 -0
  9. data/README.md +4 -3
  10. data/RELEASES.md +20 -0
  11. data/Rakefile +4 -4
  12. data/example/client.rb +6 -9
  13. data/example/main.rb +9 -9
  14. data/lib/software_challenge_client.rb +26 -23
  15. data/lib/software_challenge_client/board.rb +99 -34
  16. data/lib/software_challenge_client/client_interface.rb +1 -0
  17. data/lib/software_challenge_client/color.rb +16 -0
  18. data/lib/software_challenge_client/condition.rb +4 -1
  19. data/lib/software_challenge_client/coordinate_set.rb +92 -0
  20. data/lib/software_challenge_client/coordinates.rb +45 -0
  21. data/lib/software_challenge_client/debug_hint.rb +1 -0
  22. data/lib/software_challenge_client/field.rb +21 -53
  23. data/lib/software_challenge_client/game_rule_logic.rb +257 -332
  24. data/lib/software_challenge_client/game_state.rb +86 -68
  25. data/lib/software_challenge_client/has_hints.rb +1 -1
  26. data/lib/software_challenge_client/invalid_move_exception.rb +1 -0
  27. data/lib/software_challenge_client/logging.rb +1 -0
  28. data/lib/software_challenge_client/network.rb +1 -1
  29. data/lib/software_challenge_client/piece.rb +43 -14
  30. data/lib/software_challenge_client/piece_shape.rb +109 -0
  31. data/lib/software_challenge_client/player.rb +7 -6
  32. data/lib/software_challenge_client/player_type.rb +14 -0
  33. data/lib/software_challenge_client/protocol.rb +83 -75
  34. data/lib/software_challenge_client/rotation.rb +22 -0
  35. data/lib/software_challenge_client/runner.rb +2 -1
  36. data/lib/software_challenge_client/set_move.rb +13 -4
  37. data/lib/software_challenge_client/skip_move.rb +5 -0
  38. data/lib/software_challenge_client/util/constants.rb +3 -4
  39. data/lib/software_challenge_client/version.rb +2 -1
  40. data/lib/update_client_module.sh +15 -0
  41. data/software_challenge_client.gemspec +15 -13
  42. metadata +54 -36
  43. data/lib/software_challenge_client/cube_coordinates.rb +0 -23
  44. data/lib/software_challenge_client/direction.rb +0 -55
  45. data/lib/software_challenge_client/drag_move.rb +0 -19
  46. data/lib/software_challenge_client/line_direction.rb +0 -15
  47. data/lib/software_challenge_client/piece_type.rb +0 -18
  48. data/lib/software_challenge_client/player_color.rb +0 -25
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: software_challenge_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 20.2.2
4
+ version: 21.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - 'kwollw '
8
8
  - 'Ralf-Tobias Diekert '
9
9
  - 'Sven Koschnicke '
10
- autorequire:
10
+ autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2019-12-03 00:00:00.000000000 Z
13
+ date: 2020-11-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: typesafe_enum
16
+ name: builder
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ">="
@@ -27,7 +27,7 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  version: '0'
29
29
  - !ruby/object:Gem::Dependency
30
- name: builder
30
+ name: typesafe_enum
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - ">="
@@ -55,35 +55,35 @@ dependencies:
55
55
  - !ruby/object:Gem::Version
56
56
  version: '1.10'
57
57
  - !ruby/object:Gem::Dependency
58
- name: rake
58
+ name: fuubar
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: '10.0'
63
+ version: '0'
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: '10.0'
70
+ version: '0'
71
71
  - !ruby/object:Gem::Dependency
72
- name: yard
72
+ name: guard
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - ">="
76
76
  - !ruby/object:Gem::Version
77
- version: '0.8'
77
+ version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - ">="
83
83
  - !ruby/object:Gem::Version
84
- version: '0.8'
84
+ version: '0'
85
85
  - !ruby/object:Gem::Dependency
86
- name: rspec
86
+ name: guard-rspec
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ">="
@@ -97,7 +97,7 @@ dependencies:
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
- name: fuubar
100
+ name: guard-rubocop
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - ">="
@@ -111,7 +111,7 @@ dependencies:
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  - !ruby/object:Gem::Dependency
114
- name: rubocop
114
+ name: pry
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
@@ -125,7 +125,7 @@ dependencies:
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  - !ruby/object:Gem::Dependency
128
- name: rubocop-rspec
128
+ name: pry-byebug
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - ">="
@@ -139,7 +139,7 @@ dependencies:
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  - !ruby/object:Gem::Dependency
142
- name: guard
142
+ name: pry-coolline
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
145
  - - ">="
@@ -153,7 +153,7 @@ dependencies:
153
153
  - !ruby/object:Gem::Version
154
154
  version: '0'
155
155
  - !ruby/object:Gem::Dependency
156
- name: guard-rspec
156
+ name: pry-rescue
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
159
  - - ">="
@@ -167,21 +167,21 @@ dependencies:
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  - !ruby/object:Gem::Dependency
170
- name: guard-rubocop
170
+ name: rake
171
171
  requirement: !ruby/object:Gem::Requirement
172
172
  requirements:
173
173
  - - ">="
174
174
  - !ruby/object:Gem::Version
175
- version: '0'
175
+ version: '10.0'
176
176
  type: :development
177
177
  prerelease: false
178
178
  version_requirements: !ruby/object:Gem::Requirement
179
179
  requirements:
180
180
  - - ">="
181
181
  - !ruby/object:Gem::Version
182
- version: '0'
182
+ version: '10.0'
183
183
  - !ruby/object:Gem::Dependency
184
- name: pry
184
+ name: rspec
185
185
  requirement: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - ">="
@@ -195,7 +195,7 @@ dependencies:
195
195
  - !ruby/object:Gem::Version
196
196
  version: '0'
197
197
  - !ruby/object:Gem::Dependency
198
- name: pry-rescue
198
+ name: rubocop
199
199
  requirement: !ruby/object:Gem::Requirement
200
200
  requirements:
201
201
  - - ">="
@@ -209,7 +209,7 @@ dependencies:
209
209
  - !ruby/object:Gem::Version
210
210
  version: '0'
211
211
  - !ruby/object:Gem::Dependency
212
- name: pry-coolline
212
+ name: rubocop-rspec
213
213
  requirement: !ruby/object:Gem::Requirement
214
214
  requirements:
215
215
  - - ">="
@@ -223,7 +223,7 @@ dependencies:
223
223
  - !ruby/object:Gem::Version
224
224
  version: '0'
225
225
  - !ruby/object:Gem::Dependency
226
- name: pry-byebug
226
+ name: solargraph
227
227
  requirement: !ruby/object:Gem::Requirement
228
228
  requirements:
229
229
  - - ">="
@@ -236,6 +236,20 @@ dependencies:
236
236
  - - ">="
237
237
  - !ruby/object:Gem::Version
238
238
  version: '0'
239
+ - !ruby/object:Gem::Dependency
240
+ name: yard
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0.8'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: '0.8'
239
253
  description: ''
240
254
  email:
241
255
  - kwollw@users.noreply.github.com
@@ -250,6 +264,8 @@ files:
250
264
  - ".rubocop.yml"
251
265
  - ".ruby-version"
252
266
  - ".stickler.yml"
267
+ - ".vscode/launch.json"
268
+ - ".vscode/settings.json"
253
269
  - AUTHORS
254
270
  - CODE_OF_CONDUCT.md
255
271
  - Dockerfile
@@ -268,35 +284,36 @@ files:
268
284
  - lib/software_challenge_client.rb
269
285
  - lib/software_challenge_client/board.rb
270
286
  - lib/software_challenge_client/client_interface.rb
287
+ - lib/software_challenge_client/color.rb
271
288
  - lib/software_challenge_client/condition.rb
272
- - lib/software_challenge_client/cube_coordinates.rb
289
+ - lib/software_challenge_client/coordinate_set.rb
290
+ - lib/software_challenge_client/coordinates.rb
273
291
  - lib/software_challenge_client/debug_hint.rb
274
- - lib/software_challenge_client/direction.rb
275
- - lib/software_challenge_client/drag_move.rb
276
292
  - lib/software_challenge_client/field.rb
277
293
  - lib/software_challenge_client/game_rule_logic.rb
278
294
  - lib/software_challenge_client/game_state.rb
279
295
  - lib/software_challenge_client/has_hints.rb
280
296
  - lib/software_challenge_client/invalid_move_exception.rb
281
- - lib/software_challenge_client/line_direction.rb
282
297
  - lib/software_challenge_client/logging.rb
283
298
  - lib/software_challenge_client/network.rb
284
299
  - lib/software_challenge_client/piece.rb
285
- - lib/software_challenge_client/piece_type.rb
300
+ - lib/software_challenge_client/piece_shape.rb
286
301
  - lib/software_challenge_client/player.rb
287
- - lib/software_challenge_client/player_color.rb
302
+ - lib/software_challenge_client/player_type.rb
288
303
  - lib/software_challenge_client/protocol.rb
304
+ - lib/software_challenge_client/rotation.rb
289
305
  - lib/software_challenge_client/runner.rb
290
306
  - lib/software_challenge_client/set_move.rb
291
307
  - lib/software_challenge_client/skip_move.rb
292
308
  - lib/software_challenge_client/util/constants.rb
293
309
  - lib/software_challenge_client/version.rb
310
+ - lib/update_client_module.sh
294
311
  - release.sh
295
312
  - software_challenge_client.gemspec
296
313
  homepage: http://www.software-challenge.de
297
314
  licenses: []
298
315
  metadata: {}
299
- post_install_message:
316
+ post_install_message:
300
317
  rdoc_options: []
301
318
  require_paths:
302
319
  - lib
@@ -304,16 +321,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
304
321
  requirements:
305
322
  - - ">="
306
323
  - !ruby/object:Gem::Version
307
- version: '2.3'
324
+ version: 2.5.5
308
325
  required_rubygems_version: !ruby/object:Gem::Requirement
309
326
  requirements:
310
327
  - - ">="
311
328
  - !ruby/object:Gem::Version
312
329
  version: '0'
313
330
  requirements: []
314
- rubygems_version: 3.0.3
315
- signing_key:
331
+ rubyforge_project:
332
+ rubygems_version: 2.7.6.2
333
+ signing_key:
316
334
  specification_version: 4
317
- summary: This gem provides functions to build a client for the coding competition
318
- Software-Challenge 2017.
335
+ summary: Provides functions to build a client for the coding competition Software-Challenge
336
+ Germany.
319
337
  test_files: []
@@ -1,23 +0,0 @@
1
- class CubeCoordinates
2
-
3
- attr_reader :x, :y, :z
4
-
5
- def initialize(x, y, z = nil)
6
- @x = x
7
- @y = y
8
- @z = z.nil? ? -x - y : z
9
- throw InvalidArgumentException("sum of coordinates #{@x}, #{@y}, #{@z} have to be equal 0") if @x + @y + @z != 0
10
- end
11
-
12
- def ==(other)
13
- x == other.x && y == other.y && z == other.z
14
- end
15
-
16
- def to_s
17
- "(#{x}, #{y}, #{z})"
18
- end
19
-
20
- def inspect
21
- to_s
22
- end
23
- end
@@ -1,55 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'typesafe_enum'
4
-
5
- # Die sechs möglichen Bewegungsrichtungen auf dem Spielbrett. Die Richtungen sind:
6
- #
7
- # - UP_RIGHT
8
- # - RIGHT
9
- # - DOWN_RIGHT
10
- # - DOWN_LEFT
11
- # - LEFT
12
- # - UP_LEFT
13
- #
14
- # Zugriff erfolgt z.B. durch Direction::UP_RIGHT.
15
- class Direction < TypesafeEnum::Base
16
- new :UP_RIGHT
17
- new :RIGHT
18
- new :DOWN_RIGHT
19
- new :DOWN_LEFT
20
- new :LEFT
21
- new :UP_LEFT
22
-
23
- # Verschiebt den durch das Koordinatenpaar angegebenen Punkt in die
24
- # entsprechende Richtung. Der resultierende Punkt kann ausserhalb des
25
- # Spielbrettes liegen. Dies kann mit {GameRuleLogic#inside_bounds?} geprüft
26
- # werden.
27
- # @param coordinates [CubeCoordinates] Das zu verschiebende Koordinatenpaar.
28
- # @param distance [Integer] Um wieviele Felder in die Richtung verschoben werden soll.
29
- def translate(start, distance = 1)
30
- shiftX = start.x
31
- shiftY = start.y
32
- shiftZ = start.z
33
- case self.key
34
- when :RIGHT
35
- shiftX = start.x + distance
36
- shiftY = start.y - distance
37
- when :LEFT
38
- shiftX = start.x - distance
39
- shiftY = start.y + distance
40
- when :UP_RIGHT
41
- shiftX = start.x + distance
42
- shiftZ = start.z - distance
43
- when :UP_LEFT
44
- shiftY = start.y + distance
45
- shiftZ = start.z - distance
46
- when :DOWN_RIGHT
47
- shiftY = start.y - distance
48
- shiftZ = start.z + distance
49
- when :DOWN_LEFT
50
- shiftX = start.x - distance
51
- shiftZ = start.z + distance
52
- end
53
- return CubeCoordinates.new(shiftX, shiftY, shiftZ)
54
- end
55
- end
@@ -1,19 +0,0 @@
1
- require_relative 'has_hints'
2
-
3
- class DragMove
4
-
5
- include HasHints
6
-
7
- attr_reader :start
8
- attr_reader :destination
9
-
10
- def initialize(start, destination)
11
- @start = start
12
- @destination = destination
13
- @hints = []
14
- end
15
-
16
- def to_s
17
- "[Move: Drag from #{start} to #{destination}]"
18
- end
19
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'typesafe_enum'
4
- # Ausrichtung einer Linie auf dem Spielbrett. Mögliche Werte sind:
5
- # - HORIZONTAL
6
- # - VERTICAL
7
- # - RISING_DIAGONAL
8
- # - FALLING_DIAGONAL
9
-
10
- class LineDirection < TypesafeEnum::Base
11
- new :HORIZONTAL
12
- new :VERTICAL
13
- new :RISING_DIAGONAL
14
- new :FALLING_DIAGONAL
15
- end
@@ -1,18 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'typesafe_enum'
4
- # Der Typ eines Spielsteins. Es gibt folgende Typen:
5
- # - BEE
6
- # - BEETLE
7
- # - GRASSHOPPER
8
- # - SPIDER
9
- # - ANT
10
- #
11
- # Zugriff z.B. mit PieceType::BEE
12
- class PieceType < TypesafeEnum::Base
13
- new :BEE, 'Q'
14
- new :BEETLE, 'B'
15
- new :GRASSHOPPER, 'G'
16
- new :SPIDER, 'S'
17
- new :ANT, 'A'
18
- end
@@ -1,25 +0,0 @@
1
- # encoding: utf-8
2
- # player color constants
3
- require 'typesafe_enum'
4
-
5
- # Die Spielerfarben. RED oder BLUE
6
- class PlayerColor < TypesafeEnum::Base
7
- new :RED, 'R'
8
- new :BLUE, 'B'
9
-
10
- # @param color [PlayerColor]
11
- # @return [PlayerColor] Farbe des Gegenspielers
12
- def self.opponent_color(color)
13
- case color
14
- when PlayerColor::RED
15
- PlayerColor::BLUE
16
- when PlayerColor::BLUE
17
- PlayerColor::RED
18
- end
19
- end
20
-
21
- def opponent
22
- PlayerColor.opponent_color(self)
23
- end
24
-
25
- end