software_challenge_client 20.2.2 → 20.2.3

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