This commit is contained in:
team3
2026-09-16 15:04:02 +02:00
parent 3be22351a3
commit b9d6b115c0
23 changed files with 795 additions and 425 deletions

View File

@@ -1,29 +1,32 @@
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".
## 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:
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)
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 < 6000.0:
while game.phase != "over" and t < 600.0:
await get_tree().create_timer(0.2).timeout
t += 0.2
if game.phase != letzte:
@@ -40,6 +43,20 @@ func _lauf() -> void:
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, 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)