@derfium,
der Witz an einer Programmiersprache ist, daß man 1000 Möglichkeiten hat, ein Problem zu lösen.....
Du könntest dein Script 467 mal hintereinanderkopieren, den Text entsprechend editieren (die Vokabeln) und hättest genau das, was du brauchst in 14359 Programmzeilen!
Allerdings wäre das Ganze SEHR unübersichtlich, und neue Vokabeln dazuschreiben würde bedeuten, immer den Quelltext ändern zu müssen.....nicht sehr schön.
Vokabeln und Programm trennen ist deer erste Schritt!
Also schreibt man zum Beispiel die Vokabeln einfach in eine Datei.
Mach in Windows den Editor auf, (oder benutze Scite) und schreib einfach die Vokabeln nebeneinander mit Komma getrennt in eine Zeile...also etwa so:
speichere diese Daten als "Vokabeln.txt" in deinem Programmverzeichnis ab. Nun musst du beim Erweitern dieser "Datenbank" nur noch diese Datei öffnen und nicht mehr deinen Quellcode verändern.
Ausserdem hast du nun die Möglichkeit, sowohl von Englisch nach Deutsch als auch von Deutsch nach Englisch abgefragt zu werden.^^
Dazu musst du in deinem Programm nur die Datei öffnen, deine Vokabeln auslesen (vor dem Komma steht das deutsche Wort, hinter dem Komma das englische) und zufällig eine Vokabel auswählen und die passende Übersetzung dazu abfragen.
Fehlen nur noch die passenden bzw. fehlenden Programmfunktionen^^
In der deutschen Hilfe zu AutoIt solltest du fündig werden, dort sind für alle Funktionen Beispielscripte enthalten, die mit einem Mausklick ausgeführt werden können.
Ich würde (als Anfänger) mit fileread() den Dateiinhalt in eine (String-)Variable einlesen, die Anzahl der im String enthaltenen Kommas bestimmen (damit hast du automatisch die Anzahl der Vokabeln) und dann per Random(1,$Anzahl_Kommas,1) eine Zeile der Datei auswählen.
Das Wort links vom Komma ist das englische, rechts vom Komma das deutsche.
Das gesamte Programm sollte bequem in 10 Zeilen passen und nur die rudimentären String- und Dateibearbeitungsfunktionen benutzen.
Eine große Hilfe für Anfanger ist die Darstellung der Inhalte der Variablen während der Programmentwicklung
Die DEBUG-Messageboxen in Scite zur Anzeige der Variableninhalte erhält man, wenn man den Cursor auf die zu untersuchende Variable setzt und STRG+SHIFT+D drückt. (siehe Menü 'Extras' )
Alle DEBUG-Messagebogen auskommentieren kann man mit STRG+ALT+D
Alle DEBUG-Zeilen löschen kann man mit STRG+ALT+Z
Beispiel:
Spoiler anzeigen
;Wenn vokabeln.txt noch nicht besteht, anlegen
if not fileexists("vokabeln.txt") then FileWrite("vokabeln.txt","hello,Hallo"&@crlf&"car,Auto"&@crlf&"dog,Hund"&@crlf&"cat,Katze"&@crlf)
;;editor öffnen, Daten können eingetragen werden, SPEICHERN nicht vergessen^^
shellexecute("vokabeln.txt")
;Hier gehts los....
;Dateiinhalt in Stringvariable einlesen
$string=fileread("vokabeln.txt")
if @error then;falls Fehler aufgetreten sind....
MsgBox(0,"Fehler Vokabeldatei!","Programm wird beendet! Bitte eine Datei Vokabel.txt erstellen und mit Komma getrennte Vokabelpaare eintragen!")
exit;Ende
endif
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$string' & @lf & @lf & 'Return:' & @lf & $string) ;### Debug MSGBOX
;Anzahl Kommas im String bestimmen
StringReplace($string,",",",") ;komma mit komma im String ersetzen
$AnzahlKommas=@extended ;anzahl ersetzter kommas ausgeben
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$Anzahl_Kommas' & @lf & @lf & 'Return:' & @lf & $AnzahlKommas) ;### Debug MSGBOX
;Zufallszahl bestimmen zwischen 1 und AnzahlKommas
$Zufallszahl=random(1,$AnzahlKommas,1)
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$Zufallszahl' & @lf & @lf & 'Return:' & @lf & $Zufallszahl) ;### Debug MSGBOX
;Zufällige Zeile aus Datei auslesen
$Zufallszeile=FileReadLine("vokabeln.txt",$Zufallszahl)
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$Zufallszeile' & @lf & @lf & 'Return:' & @lf & $Zufallszeile) ;### Debug MSGBOX
;Position des Kommas in der Zeile bestimmen
$Kommaposition=stringinstr($Zufallszeile,",")
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$Kommaposition' & @lf & @lf & 'Return:' & @lf & $Kommaposition) ;### Debug MSGBOX
;linker Teil vom Komma ist die englische Vokabel
$EnglischeVokabel=stringleft($zufallszeile,$kommaposition-1)
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$EnglischeVokabel' & @lf & @lf & 'Return:' & @lf & $EnglischeVokabel) ;### Debug MSGBOX
;rechter Teil vom Komma ist die deutsche Vokabel
$DeutscheVokabel=stringtrimleft($zufallszeile,$kommaposition);linker Teil incl Komma wird abgeschnitten
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$DeutscheVokabel' & @lf & @lf & 'Return:' & @lf & $DeutscheVokabel) ;### Debug MSGBOX
;jetzt kommt dein Programmteil^^
$AbgefragteVokabel = InputBox ("Hallo" , "Was heißt '"&$DeutscheVokabel&"' auf englisch?")
If $AbgefragteVokabel = $EnglischeVokabel Then
MsgBox (0, "Richtig! ", "Gut gemacht! ")
Else
MsgBox (0, "Falsch! ", "Das war leider falsch. Die englische Übersetzung von '"&$DeutscheVokabel&"' ist '"&$EnglischeVokabel&"'")
endif
$AbgefragteVokabel = InputBox ("Hallo" , "Was heißt '"&$EnglischeVokabel&"' auf deutsch?")
If $AbgefragteVokabel = $DeutscheVokabel Then
MsgBox (0, "Richtig! ", "Gut gemacht! ")
Else
MsgBox (0, "Falsch! ", "Das war leider falsch. Die deutsche Übersetzung von '"&$EnglischeVokabel&"' ist '"&$DeutscheVokabel&"'")
endif