software_challenge_client 19.0.3 → 19.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|