Hi fairyEm,

hui... Viel Spaß...

Da ihr dass in der Schule macht, erkläre ich jetzt nicht die Grundlagen. Wenn da Probleme sind, schau nochmal deine Unterlagen aus der Schule durch oder schreib mich an. Hier eher so ein Ansatz, wie man das umsetzen könnte...

Ich würde den Ansatz über Formen nehmen. Du baust dir also dein Spielfeld zusammen (Koda Form Designer) und lässt alle Blöcke weg. Außerdem bereitest du einen zweidimensionalen Array (Größe:[100][5]) für die Blöcke vor. Die Größe der Zeilen spiegelt dabei die maximale Anzahl an Blöcken (evt. ändern) , die Reihe spiegelt einmal die Art des Blockes ("L", "viereck", "linie", "z", "t") und die 4 BlockStücke selber (Tetrisblöcke bestehen immer aus 4 Stücken).

Wenn das spiel nun läuft, kannst du neue Formularelemente erstellen. (also vier neue Buttons etc.) Diese Elemente (Buttons) speicherst du an der entsprechenden Stelle im Array ab (Bsp. Bewegend immer auf [0], stehende Blöcke auf [1] bis [99] ) und lässt diese dann immer hinunter bewegen.

Ablauf also: Wenn auf [0] Elemente gespeichert sind, dann schaue, ob diese nach unten bewegbar sind. Wenn ja, dann bewege diese nach unten. Wenn nein, dann speichere die Buttons in die nächst freie Array-Zeile und mache [0] frei.

Wenn auf [0] frei ist, dann erstelle einen neuen Block und speichere diesen in [0].

Noch ein zwei Tipps:

  • Mache das nicht Dynamisch. Lieber eine Feldgröße von 200 px und Blockgrößen von 20px x 20px, ist einfacher für die Berechnungen.
  • Halte in einer eigenen Variable mit, was der höchste Block ist. So musst du nicht immer durchzählen.
  • Ich würde die Blöcke nicht mit in die Abfrage nehmen. Da klickt eh keiner drauf, das ist viel zu viel Arbeit, zieht unglaublich viel Prozessorzeit und was soll dann überhaupt passieren?
  • Setze dich frühzeitig dran! Das Projekt dauert lange!

Ich hoffe, ich konnte dir etwas helfen. Wenn du noch fragen hast, frag einfach!

Dornteufel

...zur Antwort

Hi Bavfighter,

ja, ist es. Jedoch finde ich deine Beschreibung recht schwammig. Ich versuche mein bestes, diese Frage zu beantworten. Falls es nicht klappt, beschreibe das Problem bitte noch einmal genauer in den Kommentaren.

Zur Situation: Ich denke, du willst den Text in der vorher beschriebenen Inputbox in dem zweiten Fenster ausgeben. Also: Text eingeben - Button drücken - Erstes Fenster schließt sich - Neues Fenster öffnet sich - Text wird angezeigt

Methode 1: Die vorgefertigten Funktionen

Hier ist nur das Wissen von Variablen wichtig. Kennst du wahrscheinlich schon, deshalb einfach nur der Quellcode:

$text = InputBox("Frage","Gib was ein")
MsgBox(0,"Antwort",$text)

Methode 2: Eigene Fenster beim Erstellen

Hier musst du beim Drücken auf den Button zuerst den Inhalt der InputBox auslesen.

$text = GUICtrlRead($inputbox)

Danach kannst du in dem neuen Fenster in das Label/Textfeld/Radiobutton etc. beim erstellen bereits den Text hinterlegen. (Beispielsweise hier bei einem Label)

$Label1 = GUICtrlCreateLabel($text,20,20)

Methode 3: Eigene Fenster während der Laufzeit

Wenn du den Text erst bei einem bestimmten Ereignis anzeigen lassen willst, kannst du auch vorhandene Labels/Textfelder... verwenden. Den Text eines Labels (und fast allem anderen) kannst du mit dem folgenden Befehl ändern:

GUICtrlSetData($Label1, $text)

Natürlich musst du den Text wie in Methode 2 vorher ausgelesen haben.

Ich hoffe, ich habe eine Möglichkeit für dich getroffen. Wenn nicht, melde dich einfach.

Dornteufel

...zur Antwort

Hi Spiegelfechter,

First of all, willst du das in AutoIT oder in JavaScript machen? Wenn AutoIT, dann kannst du JQuery vergessen. :( Falls du dass aber mit JavaScript machen möchtest, dann antworte mir nochmal kurz, und ich münze diese Antwort auf JQuery (oder PureJavaScript) um. Hier aber erst mal nur die AutoIT Variante.

Jede Website besteht aus Quellcode. Dieser Quellcode ist bei Spielen oder bekannten Websiten meist in einer Zeile zusammen komprimiert, jedoch kannst du in vielen Browsern mit F9, STRG-F9 oder STRG-SHIFT-I (oder Rechtsklick -> Element untersuchen) den Quellcode schön ordentlich dargestellt betrachten. Meist existiert hier auch eine hervorhebe Option, mit der du ein Element anklicken kannst und der Editor dann direkt zu diesem Element in dem Quellcode springt.

Hier musst du dir die Elemente nun ansehen. Was haben die Elemente gemeinsam? Worin erkennt man, ob ein Element ausverkauft ist?

Häufig spiegelt die ID des Elementes das Element selber wieder. So kannst du jedes Element unterscheiden. Es muss aber nicht so sein! Hier ist einfach Scharfsinn und ausprobieren gefragt.

Das Element selber kannst du dann in AutoIT und FF mit dem Befehl _FFClick anklicken. Hier musst du dann deinen eigenen Suchergebnisse einsetzen:

_FFClick("shop_item35", "id")

In diesem Beispiel klicke ich das Objekt in dem Quelltext an, welches die id=shop_item35 hat. Alternativ kannst du auch zum Beispiel dir die Klassen anschauen. Vielleicht hat jedes Shop-Element die selbe Klasse? Dann klicke das 35 Shop_element an:

_FFClick("shop_image", "class", 35)

Mehr Informationen dazu findest du hier: http://german.documentation.ff-au3.thorsten-willert.de/ff_functions/_FFClick.php

Das Auslesen der Daten ist leider nicht so einfach. Hier gibt es zwar die Methode _FFReadHTML(), jedoch gibt diese uns den kompletten Quelltext wieder. Hier muss man also irgendwie den Quelltext eingrenzen.

Mir haben die Befehle _StringBetween() und StringTrimLeft() / StringTrimRight() geholfen. Mithilfe von StringBetween kannst du den Text zwischen zwei Passagen herausfiltern, während du mit TrimLeft oder Right vorne und hinten noch Reste wegschneiden kannst. Wenn du Arrays schon kennst, kannst du dir diese Befehle mal ansehen.

Falls Probleme auftreten, antworte einfach nochmal auf diese Antwort. Ich versuche dann, dir beim Problem lösen zu helfen.

LG Lennard

(Und sorry, wenn ich etwas zu viel über HTML geredet habe...)

...zur Antwort

Hi Flooorii,

durch das win10 update wurden alle wichtige Treiber (auch Maus) neu installiert. Es kann sein, dass AutoIT diese Konfigurationen nicht übernommen hat. In diesem Falle sollte eine komplette Neuinstallation ADS Problem beheben (behalte deine Scripte).

Probiere mal ein simples Script, in welchem vorerst keine Treiber angesprochen werden. Bsp: MsgBox(0,"","Test")

Wie äußert sich denn das Problem? Wenn die Datei einfach nicht geöffnet wird, dann kann es auch an einer fehlenden Datei Zuweisung liegen.

...zur Antwort

Ganz einfach... Das Script schaut sich alles an, merkt sich, was es in den Funktionen tun muss, macht aber noch nichts (soll ja auch erst, wenn du die Taste drückst) und dann erreicht das Script das Ende. Das Ende heißt in AutoIT immer, dass das Script sich selber beenden soll. Du hast also ein Programm, dass sich innerhalb von 0.01 Sekunden selbst beendet.

Um dieses zu verhindern, schreib einfach am ende des Scripts folgende Zeilen:

While 1 Sleep(100) Wend

Viel Glück

...zur Antwort