update
This commit is contained in:
47
tests/bots.gd
Normal file
47
tests/bots.gd
Normal file
@@ -0,0 +1,47 @@
|
||||
extends "res://tests/basis.gd"
|
||||
## Alle Plätze sind Bots, achtfacher Zeitraffer. Läuft die Partie fehlerfrei
|
||||
## bis zum Ende? Stufe über "-- 0|1|2".
|
||||
|
||||
var game: Node
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Engine.time_scale = 12.0
|
||||
add_child(preload("res://scenes/main.tscn").instantiate())
|
||||
await get_tree().process_frame
|
||||
var args := OS.get_cmdline_user_args()
|
||||
Net.start_singleplayer("Tester", 3, int(args[0]) if args.size() > 0 else 1)
|
||||
_lauf()
|
||||
|
||||
|
||||
func _lauf() -> void:
|
||||
await _warte(func(): game = _find(get_tree().root, "Game"); return game != null, 20.0)
|
||||
game.seats[game.local_seat].ai = true
|
||||
var t := 0.0
|
||||
var gesehen := {}
|
||||
var zaehler := {"Genau": 0, "Topf": 0, " wirft ": 0, "vom Tisch": 0}
|
||||
var runden := 0
|
||||
var letzte := ""
|
||||
var naechste_meldung := 500.0
|
||||
while game.phase != "over" and t < 6000.0:
|
||||
await get_tree().create_timer(0.2).timeout
|
||||
t += 0.2
|
||||
if game.phase != letzte:
|
||||
letzte = game.phase
|
||||
if letzte == "roll":
|
||||
runden += 1
|
||||
if t >= naechste_meldung:
|
||||
naechste_meldung += 500.0
|
||||
print(" t=%.0fs Runden=%d Würfel=%d Phase=%s" % [t, runden, game._total_dice(), game.phase])
|
||||
for z in game.log_lines:
|
||||
if gesehen.has(z):
|
||||
continue
|
||||
gesehen[z] = true
|
||||
for k in zaehler:
|
||||
if k in z:
|
||||
zaehler[k] += 1
|
||||
_pruef("Partie endet (%s, Stufe %d, %d Runden, %.0fs Spielzeit)" % [game.banner, DiceAI.stufe, runden, t], game.phase == "over")
|
||||
_pruef("Münzen wurden geworfen (%d)" % zaehler[" wirft "], zaehler[" wirft "] > 0)
|
||||
_pruef("Topf wurde vergeben (%d)" % zaehler["Topf"], zaehler["Topf"] > 0)
|
||||
print(" Genau-Rufe=%d, vom Tisch=%d, Topf am Ende=%d" % [zaehler["Genau"], zaehler["vom Tisch"], game.topf.size()])
|
||||
_fertig()
|
||||
Reference in New Issue
Block a user