software_challenge_client 22.1.0.1 → 23.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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 -141
- data/lib/software_challenge_client/game_state.rb +57 -24
- 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
|