extends "res://tests/basis.gd" ## Alle Plätze sind Bots, ohne Wartezeiten, drei Plätze mit je drei Würfeln: ## eine ganze Partie in Sekunden. Stufe über "-- 0|1|2". var game: Node func _ready() -> void: add_child(preload("res://scenes/main.tscn").instantiate()) await get_tree().process_frame var args := OS.get_cmdline_user_args() Net.start_singleplayer("Tester", 2, int(args[0]) if args.size() > 0 else 1, 3) _lauf() func _lauf() -> void: await _warte(func(): game = _find(get_tree().root, "Game"); return game != null, 20.0) game.tempo = 0.0 game.seats[game.local_seat].ai = true # Volle Vorräte: so wirft jeder Bot sicher, und der Topf kommt in Bewegung. for i in game.seats.size(): game.hand[i] = ["peek", "gag", "count", "bid_up"] 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 < 600.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 if game.phase != "over": # Wo hängt es? Alles ausgeben, was den Ablauf treibt. print(" STAND phase=%s turn=%d bid=%s must_bid=%s muenze_laeuft=%s answered=%s" % [ game.phase, game.turn, game.bid, game.must_bid, game._muenze_laeuft, game._answered.keys()]) for i in game.seats.size(): print(" Platz %d %s count=%d alive=%s ai=%s hand=%s" % [i, game.seats[i].name, game.seats[i].count, game.seats[i].alive, game.seats[i].ai, game.hand.get(i, [])]) for z in game.log_lines: print(" LOG " + z) print(" paused=%s stream=%s" % [get_tree().paused, game._stream]) for i in game.seats.size(): for d in game.table.dice_of(i): print(" Wuerfel Platz %d: pos=%s sleeping=%s freeze=%s settled=%s flat=%.2f" % [ i, d.global_position, d.sleeping, d.freeze, d.is_settled(), d.flatness()]) _pruef("Partie endet (%s, Stufe %d, %d Runden, %.0fs Spielzeit)" % [game.banner, DiceAI.stufe, game.runde, 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()