software_challenge_client 20.2.2 → 20.2.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
  SHA256:
3
- metadata.gz: 1fae378685b67cd4b5e9568aa6da7f59734266680819f15fa97297e2a532fa34
4
- data.tar.gz: 1d2592e9d328f2cc079a21aa6fcc5901395b1e18b9edf3505e06a7805623fcc4
3
+ metadata.gz: 60c420d04b5a4e4698dfdcbefbeab11ab0654275d22d034862ca0d905c70c9c8
4
+ data.tar.gz: 350efa8b2c7a859ac8c8cb03af9b98f1df32a2edb1a40e4361db77fb7ae62225
5
5
  SHA512:
6
- metadata.gz: 53b31ae3336f7cc0544de8099ddc39156a0d4e7ae7c118c1cff160072e4d7085ce6852b004c028404378ec4e0024b1ea5b8e58e6aad1ae096a629e79a349e35d
7
- data.tar.gz: ab4d43ca12dcc42969887613908b1e1f49b85148cb4324901e9afb74cfe6498acbca72865b8517553da4101384370950f018492c25a34c1c95497d3cc236b259
6
+ metadata.gz: 381e43a1d2ba588ae698c1bbfa6da502893cf9dac3005d2c33bcde6f58d772b7c28e27e7b193954688a61d5ca3bb7f17d97ae23d4c53285ea8d24cdbc9a2845f
7
+ data.tar.gz: 7c5780b519aef624d543c1aa26a1af9718adef54f93156ed56be352b00f449c6e4714958f97271e77f7d3b6b5e7cc32f91d977e2f961fb20a59e9a3b0f17b71c
data/RELEASES.md CHANGED
@@ -1,3 +1,7 @@
1
+ = 20.2.3
2
+
3
+ Improve method documentation
4
+
1
5
  = 20.2.1 & 20.2.2
2
6
 
3
7
  Bugfixes for performing moves on a gamestate
data/Rakefile CHANGED
@@ -3,5 +3,4 @@ require "yard"
3
3
 
4
4
  YARD::Rake::YardocTask.new do |t|
5
5
  t.files = ['lib/**/*.rb'] # optional
6
- t.options = ['--any', '--extra', '--opts'] # optional
7
6
  end
@@ -15,11 +15,14 @@ class Board
15
15
  # seiner x und y CubeCoordinates im Array gespeichert.
16
16
  attr_reader :fields
17
17
 
18
+ # Anzahl der Felder eines hexagonalen Spielfeldes
19
+ # @param radius [Integer] Radius des Spielfeldes
18
20
  def self.field_amount(radius)
19
21
  return 1 if radius == 1
20
22
  (radius - 1) * 6 + Board.field_amount(radius - 1)
21
23
  end
22
24
 
25
+ # Anzahl der Felder des fuer Hive verwendeten Spielfeldes
23
26
  FIELD_AMOUNT = Board.field_amount((BOARD_SIZE + 1)/2)
24
27
 
25
28
  # Erstellt ein neues leeres Spielbrett.
@@ -28,6 +31,7 @@ class Board
28
31
  fields.each{ |f| add_field(f) }
29
32
  end
30
33
 
34
+ # @return [Array] leere Felder entsprechend des Spielbrettes angeordnet
31
35
  def self.empty_game_field
32
36
  fields = []
33
37
  (-SHIFT..SHIFT).to_a.each do |x|
@@ -39,10 +43,12 @@ class Board
39
43
  fields
40
44
  end
41
45
 
46
+ # Entfernt alle Felder des Spielfeldes
42
47
  def clear
43
48
  @fields = []
44
49
  end
45
50
 
51
+ # @return [Array] Liste aller Felder
46
52
  def field_list
47
53
  @fields.flatten.select{ |e| !e.nil? }
48
54
  end
@@ -90,21 +96,23 @@ class Board
90
96
  field_list.select{ |f| f.color == color }
91
97
  end
92
98
 
99
+ # @return [Array] Liste aller Spielsteine, die auf dem Spielbrett platziert wurden
93
100
  def pieces
94
101
  field_list.map(&:pieces).flatten
95
102
  end
96
103
 
104
+ # @param [PlayerColor] Spielerfarbe
105
+ # @return [Array] Liste aller Spielsteine eines Spielers, die auf dem Spielbrett platziert wurden
97
106
  def deployed_pieces(color)
98
107
  pieces.select { |p| p.color == color }
99
108
  end
100
109
 
110
+ # @return eine unabhaengige Kopie des Spielbretts
101
111
  def clone
102
112
  Marshal.load(Marshal.dump(self))
103
113
  end
104
114
 
105
- # Gibt eine textuelle Repräsentation des Spielbrettes aus. Hier steht R für
106
- # einen roten Fisch, B für einen blauen, ~ für ein leeres Feld und O für ein
107
- # Kraken-Feld.
115
+ # Gibt eine textuelle Repräsentation des Spielbrettes aus.
108
116
  def to_s
109
117
  field_list.sort_by(&:z).map{ |f| f.obstructed ? 'OO' : f.empty? ? '--' : f.pieces.last.to_s }.join
110
118
  end
@@ -12,7 +12,8 @@ class Condition
12
12
  attr_reader :reason
13
13
 
14
14
  # Initializes the winning Condition with a player
15
- # @param winer [Player] winning player
15
+ # @param winner [Player] winning player
16
+ # @param reason [String] why the player has won
16
17
  def initialize(winner, reason)
17
18
  @winner = winner
18
19
  @reason = reason
@@ -1,3 +1,5 @@
1
+ # CubeCoordinates erleichtern viele Berechnungen auf einem hexagonalen Spielfeld. Siehe
2
+ # https://www.redblobgames.com/grids/hexagons/#coordinates-cube
1
3
  class CubeCoordinates
2
4
 
3
5
  attr_reader :x, :y, :z
@@ -22,9 +22,9 @@ class Direction < TypesafeEnum::Base
22
22
 
23
23
  # Verschiebt den durch das Koordinatenpaar angegebenen Punkt in die
24
24
  # entsprechende Richtung. Der resultierende Punkt kann ausserhalb des
25
- # Spielbrettes liegen. Dies kann mit {GameRuleLogic#inside_bounds?} geprüft
25
+ # Spielbrettes liegen. Dies kann mit {GameRuleLogic.is_on_board} geprüft
26
26
  # werden.
27
- # @param coordinates [CubeCoordinates] Das zu verschiebende Koordinatenpaar.
27
+ # @param start [CubeCoordinates] Das zu verschiebende Koordinatenpaar.
28
28
  # @param distance [Integer] Um wieviele Felder in die Richtung verschoben werden soll.
29
29
  def translate(start, distance = 1)
30
30
  shiftX = start.x
@@ -1,5 +1,6 @@
1
1
  require_relative 'has_hints'
2
2
 
3
+ # Ein Zug, der einen auf dem Spielbrett befindlichen Spielstein bewegt.
3
4
  class DragMove
4
5
 
5
6
  include HasHints
@@ -7,6 +8,8 @@ class DragMove
7
8
  attr_reader :start
8
9
  attr_reader :destination
9
10
 
11
+ # @param start [CubeCoordinates]
12
+ # @param destination [CubeCoordinates]
10
13
  def initialize(start, destination)
11
14
  @start = start
12
15
  @destination = destination
@@ -1,7 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  # Ein Feld des Spielfelds. Ein Spielfeld ist durch die Koordinaten eindeutig identifiziert.
4
- # Das type Attribut gibt an, um welchen Feldtyp es sich handelt
5
4
  class Field
6
5
  # @!attribute [rw] pieces
7
6
  # @return [Array<Piece>] Spielsteine auf dem Feld, beginnend beim untersten Stein
@@ -15,7 +14,6 @@ class Field
15
14
 
16
15
  # Konstruktor
17
16
  #
18
- # @param type [FieldType] Feldtyp
19
17
  # @param x [Integer] X-Koordinate
20
18
  # @param y [Integer] Y-Koordinate
21
19
  # @param pieces [Array<Piece>] Spielsteine auf dem Feld
@@ -46,10 +44,12 @@ class Field
46
44
  coordinates.z
47
45
  end
48
46
 
47
+ # @return [Boolean] true, wenn eine Spielsteine auf dem Feld liegen und es nicht durch eine Brombeere blockiert ist
49
48
  def empty?
50
49
  pieces.empty? && !obstructed
51
50
  end
52
51
 
52
+ # @return [Boolean] true, es nicht durch eine Brombeere blockiert ist
53
53
  def obstructed?
54
54
  obstructed
55
55
  end
@@ -58,10 +58,13 @@ class Field
58
58
  pieces.push(piece)
59
59
  end
60
60
 
61
+ # Entfernt den obersten Spielstein
62
+ # @return [Piece] entfernten Spielstein oder nil
61
63
  def remove_piece
62
64
  pieces.pop
63
65
  end
64
66
 
67
+ # @return [PlayerColor] Farbe des Spielers, der den obersten Spielstein kontrolliert. Ohne Spielsteine nil
65
68
  def color
66
69
  pieces.last&.color
67
70
  end
@@ -205,7 +205,7 @@ class Protocol
205
205
 
206
206
  # send a string
207
207
  #
208
- # @param document [String] The string that will be send to the connected server.
208
+ # @param string [String] The string that will be send to the connected server.
209
209
  def sendString(string)
210
210
  @network.sendString("<room roomId=\"#{@roomId}\">#{string}</room>")
211
211
  end
@@ -5,7 +5,7 @@
5
5
  module Constants
6
6
  ROUND_LIMIT = 30 # Rundenbegrenzung. Nach Ende der angegebenen Runde endet auch das Spiel.
7
7
  GAME_IDENTIFIER = 'swc_2020_hive' # Der Identifikator des Spiels. Für die Kommunikation mit dem Spielserver.
8
- STARTING_PIECES = 'QSSSGGBBAAA'
9
- BOARD_SIZE = 11
10
- SHIFT = ((BOARD_SIZE - 1) / 2)
8
+ STARTING_PIECES = 'QSSSGGBBAAA' # Spielsteine, die jeder Spieler am Anfang des Spiels bekommt in textueller Repraesentation
9
+ BOARD_SIZE = 11 # Durchmesser des Spielbretts in Feldern
10
+ SHIFT = ((BOARD_SIZE - 1) / 2) # Wert, den man auf eine CubeCoordinate addieren muss, um einen positiven Index (fuer das Feld-Array) zu bekommen
11
11
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module SoftwareChallengeClient
3
- VERSION = "20.2.2"
3
+ VERSION = "20.2.3"
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: 20.2.2
4
+ version: 20.2.3
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: 2019-12-03 00:00:00.000000000 Z
13
+ date: 2019-12-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: typesafe_enum