software_challenge_client 19.0.3 → 19.0.4
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/RELEASES.md +4 -0
- data/lib/software_challenge_client/game_state.rb +30 -14
- data/lib/software_challenge_client/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b38a977bd3ae77b818d3df9f602699eff0d6456f
|
4
|
+
data.tar.gz: 9f001e402e2663e1d5f9069e0da31df4a6d662d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f7bac07ef13128ed2c51ef2fbfd54800676b50aedca88288b626c96e5f5c42b3f3bfacb10accf12ec17bce374b5692615ecd63fafa019d6ef5a605f6d7a1ca6
|
7
|
+
data.tar.gz: 13874a9ce4fff4a3ddf5d778cdbcb259c15b3ad71e4388e6ceae936c40c4540a65fb0dbb874c1948a58df85c72e54a38ef3106c3d1a8d56fe0b9c3f111e59781
|
data/RELEASES.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
require_relative './util/constants'
|
3
5
|
require_relative 'player'
|
4
6
|
require_relative 'board'
|
@@ -6,18 +8,22 @@ require_relative 'move'
|
|
6
8
|
require_relative 'condition'
|
7
9
|
require_relative 'field_type'
|
8
10
|
|
9
|
-
# Ein Spielzustand. Wird vom Server an die Computerspieler übermittelt und
|
11
|
+
# Ein Spielzustand. Wird vom Server an die Computerspieler übermittelt und
|
12
|
+
# enthält alles, was der Computerspieler wissen muss, um einen Zug zu machen.
|
10
13
|
#
|
11
|
-
# Um eine Liste der gerade möglichen Züge zu bekommen, gibt es die Methode
|
14
|
+
# Um eine Liste der gerade möglichen Züge zu bekommen, gibt es die Methode
|
15
|
+
# {GameState#possible_moves}.
|
12
16
|
class GameState
|
13
17
|
# @!attribute [rw] turn
|
14
18
|
# @return [Integer] Aktuelle Zugnummer (von 0 beginnend)
|
15
19
|
attr_accessor :turn
|
16
20
|
# @!attribute [rw] start_player_color
|
17
|
-
# @return [PlayerColor] Die Farbe des Spielers, der den ersten Zug im Spiel
|
21
|
+
# @return [PlayerColor] Die Farbe des Spielers, der den ersten Zug im Spiel
|
22
|
+
# machen darf.
|
18
23
|
attr_accessor :start_player_color
|
19
24
|
# @!attribute [rw] current_player_color
|
20
|
-
# @return [PlayerColor] Die Farbe des Spielers, der den nächsten Zug machen
|
25
|
+
# @return [PlayerColor] Die Farbe des Spielers, der den nächsten Zug machen
|
26
|
+
# darf, der also gerade an der Reihe ist.
|
21
27
|
attr_accessor :current_player_color
|
22
28
|
# @!attribute [r] red
|
23
29
|
# @return [Player] Der rote Spieler
|
@@ -29,10 +35,12 @@ class GameState
|
|
29
35
|
# @return [Board] Das aktuelle Spielbrett
|
30
36
|
attr_accessor :board
|
31
37
|
# @!attribute [rw] last_move
|
32
|
-
# @return [Move] Der zuletzt gemachte Zug (ist nil vor dem ersten Zug, also
|
38
|
+
# @return [Move] Der zuletzt gemachte Zug (ist nil vor dem ersten Zug, also
|
39
|
+
# bei turn == 0)
|
33
40
|
attr_accessor :last_move
|
34
41
|
# @!attribute [rw] condition
|
35
|
-
# @return [Condition] Gewinner und Gewinngrund, falls das Spiel bereits
|
42
|
+
# @return [Condition] Gewinner und Gewinngrund, falls das Spiel bereits
|
43
|
+
# entschieden ist, sonst nil.
|
36
44
|
attr_accessor :condition
|
37
45
|
|
38
46
|
# Zugriff auf ein Feld des Spielbrettes. Siehe {Board#field}.
|
@@ -81,32 +89,38 @@ class GameState
|
|
81
89
|
turn / 2
|
82
90
|
end
|
83
91
|
|
84
|
-
# Führt einen Zug auf dem Spielzustand aus. Das Spielbrett wird entsprechend
|
92
|
+
# Führt einen Zug auf dem Spielzustand aus. Das Spielbrett wird entsprechend
|
93
|
+
# modifiziert.
|
85
94
|
#
|
86
95
|
# @param move [Move] Der auszuführende Zug.
|
87
96
|
def perform!(move)
|
88
97
|
move.perform!(self)
|
89
98
|
end
|
90
99
|
|
91
|
-
# @return [Boolean] true, falls das Spiel bereits geendet hat, false bei noch
|
100
|
+
# @return [Boolean] true, falls das Spiel bereits geendet hat, false bei noch
|
101
|
+
# laufenden Spielen.
|
92
102
|
def game_ended?
|
93
103
|
!condition.nil?
|
94
104
|
end
|
95
105
|
|
96
|
-
# @return [Player] Der Spieler, der das Spiel gewonnen hat, falls dies schon
|
106
|
+
# @return [Player] Der Spieler, der das Spiel gewonnen hat, falls dies schon
|
107
|
+
# entschieden ist. Sonst false.
|
97
108
|
def winner
|
98
109
|
condition.nil? ? nil : condition.winner
|
99
110
|
end
|
100
111
|
|
101
|
-
# @return [String] Der Grund, warum das Spiel beendet wurde, nil falls das
|
112
|
+
# @return [String] Der Grund, warum das Spiel beendet wurde, nil falls das
|
113
|
+
# Spiel noch läuft.
|
102
114
|
def winning_reason
|
103
115
|
condition.nil? ? nil : condition.reason
|
104
116
|
end
|
105
117
|
|
106
|
-
# Ermittelt die Punkte eines Spielers. Wenn das Spiel durch Erreichen des
|
118
|
+
# Ermittelt die Punkte eines Spielers. Wenn das Spiel durch Erreichen des
|
119
|
+
# Rundenlimits beendet wird, hat der Spieler mit den meisten Punkten gewonnen.
|
107
120
|
#
|
108
121
|
# @param player [Player] Der Spieler, dessen Punkte berechnet werden sollen.
|
109
|
-
# @return [Integer] Die Punkte des Spielers, entspricht der Anzahl der Fische
|
122
|
+
# @return [Integer] Die Punkte des Spielers, entspricht der Anzahl der Fische
|
123
|
+
# im größten Schwarm des Spielers.
|
110
124
|
def points_for_player(player)
|
111
125
|
GameRuleLogic.swarm_size(board, player)
|
112
126
|
end
|
@@ -122,14 +136,16 @@ class GameState
|
|
122
136
|
condition == other.condition
|
123
137
|
end
|
124
138
|
|
125
|
-
# Erzeugt eine Kopie des Spielzustandes. Änderungen an dieser Kopie
|
139
|
+
# Erzeugt eine Kopie des Spielzustandes. Änderungen an dieser Kopie
|
140
|
+
# beeinflussen den originalen Spielzustand nicht. Die Kopie kann also zum
|
141
|
+
# testen von Spielzügen genutzt werden.
|
126
142
|
def deep_clone
|
127
143
|
Marshal.load(Marshal.dump(self))
|
128
144
|
end
|
129
145
|
|
130
146
|
# Wechselt den Spieler, der aktuell an der Reihe ist.
|
131
147
|
def switch_current_player
|
132
|
-
current_player_color = other_player_color
|
148
|
+
@current_player_color = other_player_color
|
133
149
|
end
|
134
150
|
|
135
151
|
# @return [Array<Field>] Alle Felder mit Fischen des Spielers, der gerade an der Reihe ist.
|