README.md in software_challenge_client-1.2.1 vs README.md in software_challenge_client-19.0.0

- old
+ new

@@ -1,67 +1,105 @@ -# Software Challenge Client +# Software-Challenge Client This gem includes everything to build a client for the coding competition [Software-Challenge](http://www.software-challenge.de). +------------------------------------------------------------------------ + +_Language:_ Most documentation will be in german language, because it is intended +to be used by pupils taking part in the Software-Challenge programming +competition. Only internal documentation is in english. + +------------------------------------------------------------------------ + +_Sprache:_ Ein Grossteil der Dokumentation ist in deutscher Sprache verfasst, da +sie dazu gedacht ist, von am Programmierwettbewerb Software-Challenge +teilnehmenden Schülerinnen und Schülern gelesen zu werden. Interne Dokumentation +ist weiterhin in englisch. + +------------------------------------------------------------------------ + ## Installation -Add this line to your application's Gemfile: +Um die Software-Challenge Bibliothek in deinem Computerspieler zu verwenden, füge folgende Zeile in das Gemfile deines Projektes ein: -```ruby -gem 'software_challenge_client' -``` + gem 'software_challenge_client' -And then execute: +Installiere das Gem dann mit dem Befehl: $ bundle -Or install it yourself as: +Oder installiere das Gem ohne ein Gemfile mit: $ gem install software_challenge_client -## Usage +## Verwendung -See the example client in the example directory. +Ein Beispielprojekt zur Verwendung der Bibliothek findet man im Verzeichnis `example` ([Beipspielprojekt auf GitHub](https://github.com/CAU-Kiel-Tech-Inf/socha_ruby_client/tree/master/example)). -You can execute the example client by entering +Du kannst den Beispielclient mittels -```console -ruby main.rb -``` + ruby main.rb -in a shell (while being in the example directory). Note that the -`software_challenge_client` gem needs to be installed for this to work and a -server waiting for a manual client has to be running. +in einer Konsole ausführen (dazu musst du dich im Verzeichnis `example` befinden). -## Documentation +Damit dies funktioniert, muss das Gem bereits wie oben beschrieben installiert +sein und es muss ein Spielserver auf eine Verbindung warten (also zum Beispiel +ein Spiel mit einem manuell gestarteten Spieler in der grafischen Oberfläche +angelegt worden sein). +Neben Beiwerk wie dem Initialisieren der Verbindung zum Spielserver und +Verarbeiten der Startparameter (was beides in `main.rb` des Beispielprojektes +passiert), musst du nur eine Klasse implementieren, um einen lauffähigen +Computerspieler zu haben (`client.rb` im Beispielprojekt): + + require 'software_challenge_client' + + class Client < ClientInterface + include Logging + + attr_accessor :gamestate + + def initialize(log_level) + logger.level = log_level + logger.info 'Einfacher Spieler wurde erstellt.' + end + + # gets called, when it's your turn + def move_requested + logger.info "Spielstand: #{gamestate.points_for_player(gamestate.current_player)} - #{gamestate.points_for_player(gamestate.other_player)}" + move = best_move + logger.debug "Zug gefunden: #{move}" unless move.nil? + move + end + + def best_move + gamestate.possible_moves.sample + end + end + +## Generating the Documentation + Code documentation can be generated using YARD in the project root (source code needs to be checked out and `bundle` has to be executed, see [Installation](#installation)): -```console -yard -``` + yard After generation, the docs can be found in the `doc` directory. Start at `index.html`. Documentation for the latest source can also be found on [rubydoc.info](http://www.rubydoc.info/github/CAU-Kiel-Tech-Inf/socha_ruby_client). When updating the docs, you may use -```console -yard server --reload -``` + yard server --reload or inside a docker container -```console -yard server --reload --bind 0.0.0.0 -``` + yard server --reload --bind 0.0.0.0 to get a live preview of them at [http://localhost:8808](http://localhost:8808). ## Development