software_challenge_client 22.1.0 → 23.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.
- checksums.yaml +4 -4
- data/.gitignore +15 -15
- data/.rspec +3 -3
- data/.rubocop.yml +11 -11
- data/.ruby-version +1 -1
- data/.stickler.yml +7 -7
- data/.vscode/launch.json +40 -40
- data/.vscode/settings.json +9 -9
- data/AUTHORS +6 -6
- data/CODE_OF_CONDUCT.md +13 -13
- data/Dockerfile +3 -3
- data/Gemfile +5 -5
- data/Guardfile +45 -45
- data/README.md +172 -147
- data/RELEASES.md +144 -140
- data/Rakefile +7 -7
- data/bin/console +15 -15
- data/bin/setup +7 -7
- data/develop.sh +3 -3
- data/example/client.rb +35 -35
- data/example/main.rb +42 -42
- data/example/start.bat +2 -2
- data/generate-authors.sh +19 -19
- data/lib/software_challenge_client/board.rb +149 -127
- data/lib/software_challenge_client/client_interface.rb +19 -19
- data/lib/software_challenge_client/condition.rb +27 -27
- data/lib/software_challenge_client/coordinates.rb +71 -45
- data/lib/software_challenge_client/debug_hint.rb +17 -17
- data/lib/software_challenge_client/direction.rb +41 -0
- data/lib/software_challenge_client/field.rb +70 -69
- data/lib/software_challenge_client/game_rule_logic.rb +206 -136
- data/lib/software_challenge_client/game_state.rb +57 -29
- data/lib/software_challenge_client/invalid_move_exception.rb +15 -15
- data/lib/software_challenge_client/logging.rb +26 -26
- data/lib/software_challenge_client/move.rb +37 -41
- data/lib/software_challenge_client/network.rb +126 -126
- data/lib/software_challenge_client/piece.rb +43 -81
- data/lib/software_challenge_client/player.rb +31 -31
- data/lib/software_challenge_client/protocol.rb +103 -54
- data/lib/software_challenge_client/runner.rb +36 -36
- data/lib/software_challenge_client/team.rb +23 -25
- data/lib/software_challenge_client/util/constants.rb +9 -9
- data/lib/software_challenge_client/version.rb +5 -5
- data/lib/software_challenge_client.rb +23 -25
- data/lib/update_client_module.sh +15 -15
- data/push_image_production.sh +12 -12
- data/release.sh +9 -9
- data/software_challenge_client.gemspec +41 -41
- metadata +3 -5
- data/lib/software_challenge_client/color.rb +0 -26
- data/lib/software_challenge_client/has_hints.rb +0 -11
- data/lib/software_challenge_client/piece_type.rb +0 -16
data/README.md
CHANGED
@@ -1,147 +1,172 @@
|
|
1
|
-
# Software-Challenge Client
|
2
|
-
|
3
|
-
This gem includes everything to build a client for the coding
|
4
|
-
competition [Software-Challenge](http://www.software-challenge.de).
|
5
|
-
|
6
|
-
------------------------------------------------------------------------
|
7
|
-
|
8
|
-
_Language:_ Most documentation will be in german language, because it is intended
|
9
|
-
to be used by pupils taking part in the Software-Challenge programming
|
10
|
-
competition. Only internal documentation is in english.
|
11
|
-
|
12
|
-
------------------------------------------------------------------------
|
13
|
-
|
14
|
-
_Sprache:_ Ein Grossteil der Dokumentation ist in deutscher Sprache verfasst, da
|
15
|
-
sie dazu gedacht ist, von am Programmierwettbewerb Software-Challenge
|
16
|
-
teilnehmenden Schülerinnen und Schülern gelesen zu werden. Interne Dokumentation
|
17
|
-
ist weiterhin in englisch.
|
18
|
-
|
19
|
-
------------------------------------------------------------------------
|
20
|
-
|
21
|
-
## Installation
|
22
|
-
|
23
|
-
Um die Software-Challenge Bibliothek in deinem Computerspieler zu verwenden, füge folgende Zeile in das Gemfile deines Projektes ein:
|
24
|
-
|
25
|
-
gem 'software_challenge_client'
|
26
|
-
|
27
|
-
Installiere das Gem dann mit dem Befehl:
|
28
|
-
|
29
|
-
$ bundle
|
30
|
-
|
31
|
-
Oder installiere das Gem ohne ein Gemfile mit:
|
32
|
-
|
33
|
-
$ gem install software_challenge_client
|
34
|
-
|
35
|
-
## Verwendung
|
36
|
-
|
37
|
-
Ein Beispielprojekt zur Verwendung der Bibliothek findet man im Verzeichnis `example` ([Beispielprojekt auf GitHub](https://github.com/CAU-Kiel-Tech-Inf/socha_ruby_client/tree/master/example)).
|
38
|
-
|
39
|
-
Du kannst den Beispielclient mittels
|
40
|
-
|
41
|
-
ruby main.rb
|
42
|
-
|
43
|
-
in einer Konsole ausführen (dazu musst du dich im Verzeichnis `example` befinden).
|
44
|
-
|
45
|
-
Damit dies funktioniert, muss das Gem bereits wie oben beschrieben installiert
|
46
|
-
sein und es muss ein Spielserver auf eine Verbindung warten (also zum Beispiel
|
47
|
-
ein Spiel mit einem manuell gestarteten Spieler in der grafischen Oberfläche
|
48
|
-
angelegt worden sein).
|
49
|
-
|
50
|
-
Neben Beiwerk wie dem Initialisieren der Verbindung zum Spielserver und
|
51
|
-
Verarbeiten der Startparameter (was beides in `main.rb` des Beispielprojektes
|
52
|
-
passiert), musst du nur eine Klasse implementieren, um einen lauffähigen
|
53
|
-
Computerspieler zu haben (`client.rb` im Beispielprojekt):
|
54
|
-
|
55
|
-
require 'software_challenge_client'
|
56
|
-
|
57
|
-
class Client < ClientInterface
|
58
|
-
include Logging
|
59
|
-
|
60
|
-
attr_accessor :gamestate
|
61
|
-
|
62
|
-
def initialize(log_level)
|
63
|
-
logger.level = log_level
|
64
|
-
logger.info 'Einfacher Spieler wurde erstellt.'
|
65
|
-
end
|
66
|
-
|
67
|
-
# gets called, when it's your turn
|
68
|
-
def move_requested
|
69
|
-
logger.info "Spielstand: #{gamestate.points_for_player(gamestate.current_player)} - #{gamestate.points_for_player(gamestate.other_player)}"
|
70
|
-
move = best_move
|
71
|
-
logger.debug "Zug gefunden: #{move}" unless move.nil?
|
72
|
-
move
|
73
|
-
end
|
74
|
-
|
75
|
-
def best_move
|
76
|
-
GameRuleLogic.possible_moves(gamestate).sample
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
##
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
1
|
+
# Software-Challenge Client
|
2
|
+
|
3
|
+
This gem includes everything to build a client for the coding
|
4
|
+
competition [Software-Challenge](http://www.software-challenge.de).
|
5
|
+
|
6
|
+
------------------------------------------------------------------------
|
7
|
+
|
8
|
+
_Language:_ Most documentation will be in german language, because it is intended
|
9
|
+
to be used by pupils taking part in the Software-Challenge programming
|
10
|
+
competition. Only internal documentation is in english.
|
11
|
+
|
12
|
+
------------------------------------------------------------------------
|
13
|
+
|
14
|
+
_Sprache:_ Ein Grossteil der Dokumentation ist in deutscher Sprache verfasst, da
|
15
|
+
sie dazu gedacht ist, von am Programmierwettbewerb Software-Challenge
|
16
|
+
teilnehmenden Schülerinnen und Schülern gelesen zu werden. Interne Dokumentation
|
17
|
+
ist weiterhin in englisch.
|
18
|
+
|
19
|
+
------------------------------------------------------------------------
|
20
|
+
|
21
|
+
## Installation
|
22
|
+
|
23
|
+
Um die Software-Challenge Bibliothek in deinem Computerspieler zu verwenden, füge folgende Zeile in das Gemfile deines Projektes ein:
|
24
|
+
|
25
|
+
$ gem 'software_challenge_client'
|
26
|
+
|
27
|
+
Installiere das Gem dann mit dem Befehl:
|
28
|
+
|
29
|
+
$ bundle
|
30
|
+
|
31
|
+
Oder installiere das Gem ohne ein Gemfile mit:
|
32
|
+
|
33
|
+
$ gem install software_challenge_client
|
34
|
+
|
35
|
+
## Verwendung
|
36
|
+
|
37
|
+
Ein Beispielprojekt zur Verwendung der Bibliothek findet man im Verzeichnis `example` ([Beispielprojekt auf GitHub](https://github.com/CAU-Kiel-Tech-Inf/socha_ruby_client/tree/master/example)).
|
38
|
+
|
39
|
+
Du kannst den Beispielclient mittels
|
40
|
+
|
41
|
+
$ ruby main.rb
|
42
|
+
|
43
|
+
in einer Konsole ausführen (dazu musst du dich im Verzeichnis `example` befinden).
|
44
|
+
|
45
|
+
Damit dies funktioniert, muss das Gem bereits wie oben beschrieben installiert
|
46
|
+
sein und es muss ein Spielserver auf eine Verbindung warten (also zum Beispiel
|
47
|
+
ein Spiel mit einem manuell gestarteten Spieler in der grafischen Oberfläche
|
48
|
+
angelegt worden sein).
|
49
|
+
|
50
|
+
Neben Beiwerk wie dem Initialisieren der Verbindung zum Spielserver und
|
51
|
+
Verarbeiten der Startparameter (was beides in `main.rb` des Beispielprojektes
|
52
|
+
passiert), musst du nur eine Klasse implementieren, um einen lauffähigen
|
53
|
+
Computerspieler zu haben (`client.rb` im Beispielprojekt):
|
54
|
+
|
55
|
+
require 'software_challenge_client'
|
56
|
+
|
57
|
+
class Client < ClientInterface
|
58
|
+
include Logging
|
59
|
+
|
60
|
+
attr_accessor :gamestate
|
61
|
+
|
62
|
+
def initialize(log_level)
|
63
|
+
logger.level = log_level
|
64
|
+
logger.info 'Einfacher Spieler wurde erstellt.'
|
65
|
+
end
|
66
|
+
|
67
|
+
# gets called, when it's your turn
|
68
|
+
def move_requested
|
69
|
+
logger.info "Spielstand: #{gamestate.points_for_player(gamestate.current_player)} - #{gamestate.points_for_player(gamestate.other_player)}"
|
70
|
+
move = best_move
|
71
|
+
logger.debug "Zug gefunden: #{move}" unless move.nil?
|
72
|
+
move
|
73
|
+
end
|
74
|
+
|
75
|
+
def best_move
|
76
|
+
GameRuleLogic.possible_moves(gamestate).sample
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
### Abgabe des Clients im SC Wettkampfsystem
|
81
|
+
|
82
|
+
Da Ruby eine interpretierte Sprache ist, muss der Ruby-Quellcode direkt
|
83
|
+
in ein ZIP-Archiv gepackt und auf das [Wettkampfsystem](https://docs.software-challenge.de/glossary/contest) hochgeladen
|
84
|
+
werden. Auf dem [Wettkampfsystem](https://docs.software-challenge.de/glossary/contest) ist ein Ruby-Interpreter sowie das
|
85
|
+
aktuellste `software_challenge_client` Gem installiert. Alle weiteren
|
86
|
+
Bibliotheken müssen im ZIP-Archiv vorhanden sein. Nach dem Hochladen des ZIP-Archivs muss die auszuführende Hauptdatei im [Wettkampfsystem](https://docs.software-challenge.de/glossary/contest)
|
87
|
+
ausgewählt werden. Diese wird dann zum Start des Computerspielers
|
88
|
+
gestartet. Damit dies richtig funktioniert, ist es entscheidend, dass
|
89
|
+
die Hauptdatei mit einer sogenannten "Shebang"-Zeile beginnt:
|
90
|
+
|
91
|
+
#!/usr/bin/env ruby
|
92
|
+
|
93
|
+
Weiterhin ist es ratsam, den Magic-Comment zum Encoding direkt unter die
|
94
|
+
Shebang-Zeile zu schreiben:
|
95
|
+
|
96
|
+
# encoding: UTF-8
|
97
|
+
|
98
|
+
Ein vollständiges Beispiel für einen abgabefertigen Ruby-Computerspieler
|
99
|
+
gibt es im [example Verzeichnis des Computerspieler-Gems bei
|
100
|
+
Github](https://github.com/software-challenge/client-ruby/tree/main/example).
|
101
|
+
Packt man die beiden Dateien `client.rb` und `main.rb` in ein
|
102
|
+
ZIP-Archiv, hat man einen abgabefertigen Computerspieler. Beim Hochladen
|
103
|
+
wählt man `main.rb` als Hauptdatei.
|
104
|
+
|
105
|
+
## Generating the Documentation
|
106
|
+
|
107
|
+
Code documentation can be generated using YARD in the project root (source code
|
108
|
+
needs to be checked out and `bundle` has to be executed,
|
109
|
+
see [Installation](#installation)):
|
110
|
+
|
111
|
+
$ yard
|
112
|
+
|
113
|
+
After generation, the docs can be found in the `doc` directory. Start at
|
114
|
+
`index.html`.
|
115
|
+
|
116
|
+
Documentation for the latest source can also be found
|
117
|
+
on
|
118
|
+
[rubydoc.info](http://www.rubydoc.info/github/CAU-Kiel-Tech-Inf/socha_ruby_client).
|
119
|
+
|
120
|
+
When updating the docs, you may use
|
121
|
+
|
122
|
+
$ yard server --reload
|
123
|
+
|
124
|
+
or inside a docker container
|
125
|
+
|
126
|
+
$ yard server --reload --bind 0.0.0.0
|
127
|
+
|
128
|
+
to get a live preview of them at [http://localhost:8808](http://localhost:8808).
|
129
|
+
|
130
|
+
## Development
|
131
|
+
|
132
|
+
After checking out the repo, run `bin/setup` to install
|
133
|
+
dependencies. Then, run `rspec` to run the tests. You can also
|
134
|
+
run `bin/console` for an interactive prompt that will allow you to
|
135
|
+
experiment.
|
136
|
+
|
137
|
+
To install this gem onto your local machine, run `gem uninstall
|
138
|
+
software_challenge_client` to remove an existing gem and then `bundle exec rake
|
139
|
+
install` to install the current version.
|
140
|
+
|
141
|
+
To develop inside a docker container, make sure you have Docker installed and execute
|
142
|
+
`develop.sh`.
|
143
|
+
|
144
|
+
### Specs
|
145
|
+
|
146
|
+
The gem is tested using RSpec. To run all tests, execute `rspec`. When
|
147
|
+
developing, you may use Guard to execute tests when files change. To do this,
|
148
|
+
execute `guard`. Tests will then be automatically run when you change a file.
|
149
|
+
|
150
|
+
### Linting
|
151
|
+
|
152
|
+
Linting by rubocop is included in the guard config. It is run when all specs
|
153
|
+
pass.
|
154
|
+
|
155
|
+
### Releasing
|
156
|
+
|
157
|
+
To release a new version, update the version number in
|
158
|
+
`lib/software_challenge_client/version.rb` and update RELEASES.md.
|
159
|
+
|
160
|
+
Then run `bundle exec rake release`, which will create a git tag for the
|
161
|
+
version, push git commits and tags, and push the `.gem` file to
|
162
|
+
[rubygems.org](https://rubygems.org). You may also use the `release.sh` script
|
163
|
+
which executes `bundle exec rake release` in a suitable docker container.
|
164
|
+
|
165
|
+
## Contributing
|
166
|
+
|
167
|
+
Bug reports and pull requests are welcome on GitHub at
|
168
|
+
https://github.com/CAU-Kiel-Tech-Inf/socha_ruby_client. This project is intended
|
169
|
+
to be a safe, welcoming space for collaboration, and contributors are expected
|
170
|
+
to adhere to the [code of
|
171
|
+
conduct](https://github.com/CAU-Kiel-Tech-Inf/socha-client-ruby/blob/master/CODE_OF_CONDUCT.md)
|
172
|
+
(from [Contributor Covenant](http://contributor-covenant.org)).
|
data/RELEASES.md
CHANGED
@@ -1,140 +1,144 @@
|
|
1
|
-
=
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
= 22.0
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
=
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
= 21.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
= 21.0
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
= 21.0.
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
= 21.0.
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
=
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
= 20.2.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
= 20.2.
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
= 20.2.
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
=
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
= 19.0
|
50
|
-
|
51
|
-
-
|
52
|
-
|
53
|
-
= 19.0.
|
54
|
-
|
55
|
-
- fixed
|
56
|
-
|
57
|
-
= 19.0.
|
58
|
-
|
59
|
-
- fixed bug in Move#perform! (thanks to wollw!)
|
60
|
-
|
61
|
-
= 19.0.
|
62
|
-
|
63
|
-
- fixed bug in
|
64
|
-
|
65
|
-
= 19.0.
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
=
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
= 1.2.
|
74
|
-
|
75
|
-
- fixed
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
= 1.
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
= 0.
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
- Corrected
|
96
|
-
|
97
|
-
= 0.3.
|
98
|
-
|
99
|
-
- Corrected
|
100
|
-
|
101
|
-
= 0.3.
|
102
|
-
|
103
|
-
-
|
104
|
-
|
105
|
-
= 0.3.
|
106
|
-
|
107
|
-
- Fixed bug
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
-
|
114
|
-
|
115
|
-
= 0.
|
116
|
-
|
117
|
-
-
|
118
|
-
|
119
|
-
= 0.1.
|
120
|
-
|
121
|
-
-
|
122
|
-
|
123
|
-
= 0.1.
|
124
|
-
|
125
|
-
-
|
126
|
-
|
127
|
-
= 0.1.
|
128
|
-
|
129
|
-
- Fixed bug in
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
= 0.1.
|
139
|
-
|
140
|
-
|
1
|
+
= 23.0.2
|
2
|
+
|
3
|
+
First Version for "Hey, Danke für den Fisch"
|
4
|
+
|
5
|
+
= 22.1.0
|
6
|
+
|
7
|
+
Fix gamestate.round
|
8
|
+
|
9
|
+
= 22.0.3
|
10
|
+
|
11
|
+
First tagged Version for Osteseeschach
|
12
|
+
|
13
|
+
= 21.2.0
|
14
|
+
|
15
|
+
Adjustments for Backend version 21.2.0
|
16
|
+
|
17
|
+
= 21.1.0
|
18
|
+
|
19
|
+
Pieces are now mutable and `==` of pieces considers rotated shapes which result in the same covered board fields as equal.
|
20
|
+
|
21
|
+
= 21.0.2
|
22
|
+
|
23
|
+
Fixed problem which caused `last_move` of a `GameState` always be `nil` (thanks to wollw!).
|
24
|
+
|
25
|
+
= 21.0.1
|
26
|
+
|
27
|
+
Improved performance and defined Ruby version 2.5.5 as minimum requirement
|
28
|
+
|
29
|
+
= 21.0.0
|
30
|
+
|
31
|
+
First version for game "Blokus"
|
32
|
+
|
33
|
+
= 20.2.4
|
34
|
+
|
35
|
+
Update game name in documentation
|
36
|
+
|
37
|
+
= 20.2.3
|
38
|
+
|
39
|
+
Improve method documentation
|
40
|
+
|
41
|
+
= 20.2.1 & 20.2.2
|
42
|
+
|
43
|
+
Bugfixes for performing moves on a gamestate
|
44
|
+
|
45
|
+
= 20.2.0
|
46
|
+
|
47
|
+
First version for game "Hive"
|
48
|
+
|
49
|
+
= 19.1.0
|
50
|
+
|
51
|
+
- winning condition is now set when changing a gamestate with Move#perform!
|
52
|
+
|
53
|
+
= 19.0.4
|
54
|
+
|
55
|
+
- fixed one more bug in in Move#perform! (thanks to wollw!)
|
56
|
+
|
57
|
+
= 19.0.3
|
58
|
+
|
59
|
+
- fixed another bug in in Move#perform! (thanks to wollw!)
|
60
|
+
|
61
|
+
= 19.0.2
|
62
|
+
|
63
|
+
- fixed bug in Move#perform! (thanks to wollw!)
|
64
|
+
|
65
|
+
= 19.0.1
|
66
|
+
|
67
|
+
- fixed bug in swarm size calculation (thanks to wollw!)
|
68
|
+
|
69
|
+
= 19.0.0
|
70
|
+
|
71
|
+
First version for game "Piranhas"
|
72
|
+
|
73
|
+
= 1.2.1
|
74
|
+
|
75
|
+
- fixed a bug which could lead to an infinite loop in the possible_move method
|
76
|
+
|
77
|
+
= 1.2.0
|
78
|
+
|
79
|
+
- fixed connection code
|
80
|
+
- fixed bug which lead to a exception when testing for playability of fallback card
|
81
|
+
|
82
|
+
= 1.1.0
|
83
|
+
|
84
|
+
Added missing perform! methods for actions.
|
85
|
+
|
86
|
+
= 1.0.0
|
87
|
+
|
88
|
+
First version for game "Hase und Igel".
|
89
|
+
|
90
|
+
= 0.3.4
|
91
|
+
|
92
|
+
Last version for game "Mississippi Queen".
|
93
|
+
|
94
|
+
- Renamed Turn#direction to Turn#turn_steps to make clearer that a number should be given, not a Direction instance.
|
95
|
+
- Corrected generation of XML for Push-actions
|
96
|
+
|
97
|
+
= 0.3.3
|
98
|
+
|
99
|
+
- Corrected checking/updating of coal for decelerations.
|
100
|
+
|
101
|
+
= 0.3.2
|
102
|
+
|
103
|
+
- Corrected some return types in the documentation (thanks to wollw!).
|
104
|
+
|
105
|
+
= 0.3.1
|
106
|
+
|
107
|
+
- Fixed bug: Coal was not read from server-XML (thanks to wollw!)
|
108
|
+
|
109
|
+
= 0.3.0
|
110
|
+
|
111
|
+
- Fixed bug where wrong (old) method getMove was called, the new name is
|
112
|
+
move_requested
|
113
|
+
- Improved end game handling
|
114
|
+
|
115
|
+
= 0.2.0
|
116
|
+
|
117
|
+
- First working version for Mississippi Queen
|
118
|
+
|
119
|
+
= 0.1.5
|
120
|
+
|
121
|
+
- Fixed bug in reservation code.
|
122
|
+
|
123
|
+
= 0.1.4
|
124
|
+
|
125
|
+
- Added support for reservation ID to let clients work on contest system.
|
126
|
+
|
127
|
+
= 0.1.3
|
128
|
+
|
129
|
+
- Fixed bug in makeClearBoard method (thanks to wollw!).
|
130
|
+
|
131
|
+
= 0.1.2
|
132
|
+
|
133
|
+
- Fixed bug in == (test for equality) method of connections (thanks to
|
134
|
+
wollw!).
|
135
|
+
- Fixed link in readme to code of conduct.
|
136
|
+
- Removed trailing whitespace.
|
137
|
+
|
138
|
+
= 0.1.1
|
139
|
+
|
140
|
+
Compatibility to Ruby 1.9 (source encoding issues)
|
141
|
+
|
142
|
+
= 0.1.0
|
143
|
+
|
144
|
+
First complete version.
|
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'bundler/gem_tasks'
|
3
|
-
require 'yard'
|
4
|
-
|
5
|
-
YARD::Rake::YardocTask.new do |t|
|
6
|
-
t.files = ['lib/**/*.rb'] # optional
|
7
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
require 'yard'
|
4
|
+
|
5
|
+
YARD::Rake::YardocTask.new do |t|
|
6
|
+
t.files = ['lib/**/*.rb'] # optional
|
7
|
+
end
|
data/bin/console
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'bundler/setup'
|
5
|
-
require 'software_challenge_client'
|
6
|
-
|
7
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
-
# with your gem easier. You can also use a different console, if you like.
|
9
|
-
|
10
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
-
# require "pry"
|
12
|
-
# Pry.start
|
13
|
-
|
14
|
-
require 'irb'
|
15
|
-
IRB.start
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'software_challenge_client'
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require 'irb'
|
15
|
+
IRB.start
|