Browsergame Bot ||| Gtk Endlosschleife?

08/25/2015 22:45 Krabat2#1
Mein Bot lieg bisher in einer Endlosschleife.

Ungefähr so :

1. Prüfen ob die Zeit abgelaufen ist
2. Sammeln gehen
3. Timer auf die Zeit einstellen
4. Sobald Timer abgelaufen ist weiter mit 1.


Nun habe ich ein Gtk fenster mit 2 Feldern und 1 Button gemacht zum einloggen.

Ich habe die alte main Funktion in eine andere Funktion gepackt und verwende den Felderinhalt zum einloggen.

sobald man den Button drückt wird die Funktion aufgerufen und die Endlosschleife wird gestartet.

Jedoch wenn ich das Fenster schließen will stürzt das Programm ab.(Ich denke es liegt daran dass das Programm den "Fensterschließ" - Befehl nicht verarbeiten kann da die Endlosschleife noch ausgeführt wird.

Wie kann ich das beheben?

MFG
08/26/2015 17:34 Computerfreek#2
GTK? Wie verwendest du das denn?
Schau dir mal den Teil mit Signals an. Das sind im prinzip Events, auf die du reagieren kannst (z.B. Mausklick). Das Zeichnen der GUI machst du einfach in einem anderen Thread, wodurch sich GUI und Logik nicht im Wege stehen.
08/28/2015 03:40 Krabat2#3
Wie meinst du "in einem anderen Thread" ? Kenne mich nicht wirklich aus :/
08/28/2015 23:46 .SkyneT.#4
Quote:
Originally Posted by Krabat2 View Post
Wie meinst du "in einem anderen Thread" ? Kenne mich nicht wirklich aus :/
[Only registered and activated users can see links. Click Here To Register...], das erste Ergebnis, wenn man "c++ thread" googelt...
08/29/2015 00:20 Krabat2#5
Ja ich habe natürlich vorher gegooglet, jedoch war ich mir nicht sicher ob ich die "gtk / gdk threads" verwenden muss oder die z.B. von "windows.h".

Ich habe jetzt einfach mit "CreateThread" einen Thread erstellt wo der Bot läuft während der main Thread sich um die Oberfläche kümmert (wenn ich alles richtig verstanden habe)
08/29/2015 16:20 dowhile#6
Wenn du plattformunabhaengig bleiben moechtest, solltest du die Threads von GTK verwenden.
08/29/2015 17:16 Padmak#7
Oder eben ganz unabhängig - die std::threads, die Skynet bereits erwähnt hat.
Warum komplizierter als es sein muss ;)

Padmak
08/29/2015 21:33 Krabat2#8
Quote:
Wenn du plattformunabhaengig bleiben moechtest, solltest du die Threads von GTK verwenden.
Nein ich benutze eh nur Windows.

Quote:
Oder eben ganz unabhängig - die std::threads, die Skynet bereits erwähnt hat.
Warum komplizierter als es sein muss

Padmak
klingt interessant werde ich mir anschauen