|
1 | | -# not all imports are currently used, but they might be in the future and it shows all available functionalities |
| 1 | +# Nicht alle Imports werden aktuell verwendet. |
| 2 | +# Diese können in Zukunft aber sehr nützlich sein |
| 3 | +# und zeigen außerdem alle Funktionalitäten der Software-Challenge Python API. |
2 | 4 | import math |
3 | 5 | import random |
4 | 6 | import time |
5 | 7 | from typing import Optional, Tuple |
6 | 8 | from socha import ( |
7 | | - Field, |
| 9 | + Coordinate, |
| 10 | + Vector, |
| 11 | + Direction, |
| 12 | + FieldType, |
| 13 | + TeamEnum, |
| 14 | + Board, |
| 15 | + Move, |
8 | 16 | GameState, |
9 | | - Move |
| 17 | + RulesEngine, |
10 | 18 | ) |
11 | 19 | from socha.api.networking.game_client import IClientHandler |
12 | 20 | from socha.starter import Starter |
|
15 | 23 | class Logic(IClientHandler): |
16 | 24 | game_state: GameState |
17 | 25 |
|
18 | | - # this method is called every time the server is requesting a new move |
19 | | - # this method should always be implemented otherwise the client will be disqualified |
| 26 | + # Diese Methode wird immer aufgerufen, wenn der Spielserver einen Zug vom Client anfordert. |
| 27 | + # Sie muss implementiert sein, weil der Computerspieler sonst disqualifiziert wird. |
| 28 | + # Damit ein Zug an den Spielserver übermittelt wird, muss dieser mit *return* von der Methode zurückgegeben werden. |
20 | 29 | def calculate_move(self) -> Move: |
21 | 30 | return random.choice(self.game_state.possible_moves()) |
22 | 31 |
|
23 | | - # this method is called every time the server has sent a new game state update |
24 | | - # this method should be implemented to keep the game state up to date |
| 32 | + # Diese Methode wird jedes Mal aufgerufen, wenn der Server einen neunen Spielstand bereitstellt. |
| 33 | + # Sie muss implentiert sein, damit die Spielstand Instanz auf dem neusten Stand bleibt. |
25 | 34 | def on_update(self, state: GameState) -> None: |
26 | 35 | self.game_state = state |
27 | 36 |
|
| 37 | + # Die Klasse IClientHandler hält noch weitere Methoden, die durch bestimmte Aktionen des Servers ausgeführt werden. |
| 38 | + # Weitere Informationen dazu gibt es in der verlinkten Dokumentation unter dem Submodul socha.api.networking.game_client. |
28 | 39 |
|
29 | 40 | if __name__ == "__main__": |
30 | 41 | Starter(logic=Logic()) |
31 | | - # if u wanna have more insights, u can set the logging level to debug: |
| 42 | + # Wenn man mehr Debug Informationen aus dem Hintergrund der API haben möchte, kann das Log-Level auf debug gesetzt werden: |
32 | 43 | # Starter(logic=Logic(), log_level=logging.DEBUG) |
0 commit comments