Interaktives Tutorial

  • Ich habe eine Idee welche man ja gemeinsam realisieren könnte !
    Da es viele Anfänger in Autoit gibt könnte man die Sprache doch einfach mit Hilfe eines Programm erklären das wenn man es startet z.B den
    Editor öffnet schreibt und dabei die Befehle erklärt. Das heißt es schreibt in den Script Editor die einzelnen Befehle.
    Wenn jeder ein bisschen macht hat man am Ende ein großes Programm bei dem der User einem Programmierer quasie über die Schulter schaut während er Beispiel Programme programmiert. Man hat am ende sogar den Script automatische auf dem PC.

    Das heißt jetzt nicht das ich mir das wünsche weil ich ein noob bin sondern würde auch helfen um es Einsteigern leichter zu machen.


    Dieses Projekt zu realisieren ist nicht besonders schwer. Aber man bräuchte viele Leute die Bespielscripe programmieren und vorstellen. So hat man am Ende eine große Datenbank an erklärungen und mit jedem Update kommen mehr dazu ;)

    Hoffe ihr versteht was ich meine :D

    Vorschläge Fragen und Kritik und wer mitmachen möchte bitte posten !

    lg

    clonker

    Einmal editiert, zuletzt von clonker (20. Februar 2010 um 22:17)

  • Also im Grunde einer Art interaktives Tutorial?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • So ein Projekt gibt es glaub ich schon für AutoIt, aber hab vergessen, welcher Thread es war. *wurde eh nicht mehr aktualisiert*

    Gute Idee! :)

  • Danke für Lob und Interesse. :)

    Alle die mitmachen wollen sind herzlich eingeladen ! :thumbup:

    Zitat

    Also im Grunde einer Art interaktives Tutorial?

    Genau !

    Also wir haben nun unser erstes Problem.
    Wie traägt man die einzelnen Scripte zusammen.
    Also meine grobe Idee bis jetzt.

    Das eigentliche Grundprogramm sollte ein GUI sein in dem man aus einer Liste die Tutorials auswählen kann.
    Möglichst nach Schwierigkeit geordnet.
    Ich dinke wir sollte nicht alle scripte in unseren Quellcode packen.
    Die Tutorials benötigen ja kein GUI also könne sie einfach über unseren HAUPTSCRIPT aufgerufen werden.
    So müsste man mit jedem Update einfach nur Scripte in unsere Liste im Hauptscript hinzufügen.
    Alle Scripte denke ich sollten in einen Ordner mit Hauptscript also au3 und exe. So läd man sich alles als zip runter
    und startet das Hauptprogramm welches dann die unterscripte startet.

    Die tuts sollten immer ein kleiner Script sein an dem etwas erklärt wird. Z.B ein Tutorial was eine message box erstellt
    dort kann dann der Befehl erklärt werden. So ändert man z.B die Flag startet das Programm und der User soeht sofort was im echten Programm
    passiert. Z.B das error symbol kommt

    So sind immoment meine Ideen.

    Wer weitere Ideen Vorschläge und Verbesserungen hat soll die bitte hier posten.
    Es ist schließlich ein PROJEKT.

    Wir sammeln in diesem Thread erst mal alles und sehen dann weiter


    lg clonker

    P.S. Werde den Thread Namen in "Interaktives Tutorial" umbenennen.

    Wer einen coolen namen für unser Prog hat bitte posten !

    Einmal editiert, zuletzt von clonker (20. Februar 2010 um 22:22)

  • Wir sollten die Scripte auf einen Server mit mehreren FTP zugängen hochladen, wie zb. http://www.bplaced.net/ (hat max. 8 Zugänge für 8 Personen). Hier sollten wir das dann so machen, dass jeder sein Script (Teil des Programmes) einreicht. Jeder sollte dabei seinen eigenen Ordner haben. Und am Ende wird dann überlegt, welchen Programmteil man wo sinnvoll einsetzen kann. Die fertige Version wird dann wieder auf dem Server abgelegt, und hier im AutoIT Forum zur Verfügung gestellt.

    Ist nur so eine Idee ;)

  • Man kann es ja so machen das man bespricht wer was macht, und wenn man dann ein Scrpt fertig hat, dann kann man es z.B auf diesen Server:

    Zitat

    wie zb. http://www.bplaced.net/ (hat max. 8 Zugänge für 8 Personen)

    hochladen

    • Offizieller Beitrag

    Finde den Link leider nicht mehr.

    Aber etwas wirklich interaktives zu skripten ist nicht gerade einfach. Das geht nur solange recht gut, wie die Aufgabenstellung eine geringe und leicht zu überprüfende Zahl an Lösungsvarianten zuläßt. ;)
    Ich wünsch euch auf jeden Fall viel Spaß.

  • So ich hab hier schon mal den Updater geschrieben. Er ist dafür zuständig, dass die Version auf dem neusten Stand bleibt:

    [autoit]

    ;Dieser Codeteil müsste mit der GUI geladen werden, und wird beim allerersten Start ausgeführt.
    If Not FileExists(@DocumentsCommonDir & "\version.txt") Then
    FileOpen(@DocumentsCommonDir & "\version.txt", 1)
    ;muss nach jeder neuen Version angepasst werden
    FileWriteLine(@DocumentsCommonDir & "\version.txt","1") ;<-----HIER
    ;________________________________________________________
    FileClose(@DocumentsCommonDir & "\version.txt")
    EndIf
    #cs ----------------------------------------------------------------------------
    Hauptteil des Programmes wie GUI usw. kommt hierhin...
    #ce ----------------------------------------------------------------------------
    ;////////////////////////////////////////////////////////////Update Funktion, Aufruf erfolgt dann am besten mit einer Schaltfläche innerhalb der GUI////////////////////////////////////////////////////////////////////;
    Func _Updater()
    $servername = "Hier kommt der Name des Servers hin (http://www.server.de oder server.de)"
    $projektname = "hier der Unterordner auf dem Server, also der Name des Projekts"
    $exedatei = "Hier kommt der Name der EXE datei hin die später auf dem Rechner landet"
    $update = MsgBox(52, "Updateassistent", "Möglicherweise sind Updates vorhanden. Dies wird empfohlen, da hiermit Programmfehler behoben werden könnten, auf Aktualisierungen prüfen? Das Programm wird sich dann mit dem Update Server verbinden.")
    Select
    Case $update = 6
    ProgressOn("Updater", "Überprüfe, ob Server erreichbar ist...")
    Sleep(2000)
    If Ping($servername,250) Then
    ProgressSet(20, "Updater", "Verbunden!")
    Sleep(2000)
    Else
    ProgressOff()
    MsgBox(16,"FEHLER", "Das Update Modul hat einen Fehler abgefangen, Grund: der Server ist leider nicht erreichbar oder deine Internetverbindung ist nicht aktiviert.")
    Return
    EndIf
    If InetGet("http://" & $servername & "/" & $projektname & "/version.txt", "C:\Temp\version.txt") Then
    ProgressSet(40, "Updater", "Lade Update Info Datei herunter...")
    Sleep(2000)
    Else
    ProgressOff()
    MsgBox(16,"FEHLER", "Das Update Modul hat einen Fehler abgefangen, Grund: Update Info Datei konnte nicht heruntergeladen werden.")
    Return
    EndIf
    $downloaded = FileReadLine("C:\Temp\version.txt")
    $localversion = FileReadLine(@DocumentsCommonDir & "\version.txt")
    ProgressSet(60, "Updater", "Vergleiche Server Version mit local Version...")
    Sleep(2000)
    If $downloaded = $localversion Then
    ProgressOff()
    MsgBox(16, "Updater", "Keine neue Version von " & $projektname & " verfügbar")
    FileDelete("C:\Temp\version.txt")
    Return
    EndIf
    If $downloaded > $localversion Then
    ProgressSet(80, "Updater", "Lade neue Version herunter...")
    Sleep(2000)
    InetGet("http://" & $servername & "/" & $projektname & "/" & $exedatei, "C:\Temp\" & $exedatei)
    ProgressSet(90, "Updater", "Schließe Installation ab...")
    Sleep(2000)
    FileClose(@DocumentsCommonDir & "\version.txt")
    FileClose("C:\Temp\version.txt")
    ProgressSet(95, "Updater", "Aktualisiere Versionsdaten...")
    Sleep(1000)
    FileCopy("C:\Temp\version.txt", @DocumentsCommonDir & "\version.txt")
    ProgressSet(100, "Updater", "Lösche temporäre Dateien...")
    Sleep(1000)
    FileDelete("C:\Temp\version.txt")
    ProgressOff()
    MsgBox(64, "Updater", "Eine neue Version von " & $exedatei & " wurde installiert, das neue Programm befindet sich im Ordner C:\Temp\" & $exedatei)

    EndIf

    [/autoit][autoit][/autoit][autoit]

    Case $update = 7
    MsgBox(64, "Updateassistent", "Update verweigert")
    EndSelect
    EndFunc
    ;---->ENDE VON UPDATER

    [/autoit]

    Bitte um Anmerkungen, wie mans besser machen kann o.ä. :)

  • Ich habe eine GUI für das "Hauptfenster" erstellt. Ihr könnt sie euch ja mal anschaun und entscheiden oder ihr sie so haben möchtet oder nicht.


    Menüliste: "Tutorialiste neu laden" | "Tutorial abspielen" | "Tutorials durchsuchen" | "Einstellungen" | "Nach Updates suchen"

    Im Listview könnte man den Schwierigkeitsgrad auch mit farbigen Bitmaps anzeigen (dunkelrot - sehr schwer <> hellgrün - sehr leicht).

  • Zitat

    du setzt Arrays bzw einen kleinen Taschenrechner auf 40 b.z.w. 50% ? was machst du dann mit .Dll funktionen oder Gdi+ ?

    Ist das jetzt ernst gemeint ?( ... In dem Screenshot das sind ja nur Beispieldaten, einfach so reingesetzt.

  • Hey, Clonker...cooles Projekt!
    Steht dein Namen in Verbindung mit dem Spiel Clonk (4,Planet,Endeavor,Extrem...) 8o

  • Ich habe eine GUI für das "Hauptfenster" erstellt. Ihr könnt sie euch ja mal anschaun und entscheiden oder ihr sie so haben möchtet oder nicht.


    Menüliste: "Tutorialiste neu laden" | "Tutorial abspielen" | "Tutorials durchsuchen" | "Einstellungen" | "Nach Updates suchen"

    Im Listview könnte man den Schwierigkeitsgrad auch mit farbigen Bitmaps anzeigen (dunkelrot - sehr schwer <> hellgrün - sehr leicht).

    Wow, nette GUI. Ich wär dafür, dass wir die nehmen. :thumbup:

  • So sorry für die Pause,
    War am Sonntag den ganzen Tag nicht da ;)

    Also als erstes mal das GUI finde ich super :thumbup: Vielen Dank.
    Ich möchte am Anfang erstmal etwas klarstellen. JEDER der etwas zu diesem Projekt gesciptet hatt wir namentlich erwähnt.
    Sei es wenn er ein TuT gepostet hat (siehe screenshot name)

    So noch eine Sache wegen dem Updater ...

    Also wir haben ja bisjetzt die Scripte extern in einen Ordner gepackt.
    Soll der Updater wenn eine neue Version verfügbar ist die zip runterladen vom server oda wie ?
    Denn wir müssen ja immer alles Updaten GUI Script sowie Scripte Ordner ...

    Dann müsste der User jedesmal entpacken und seine vorhandenen Daten überschreiben. Würde also gehen.
    Noch eine Frage wenn ich das richtig verstanden habe wird die neue Datei in den Temp ordner geladen warum nicht unter download ?

    lg clonker

    P.S. Ja es kommt von Clonk Rage

  • wie soll ein tut ungefähr aussehen?

    edit:
    du köntest einen installer benutzen(könnt ich auch machen)
    z.b. NSIS
    ich hab mal ein beispiel angehängt
    Kann auch noch mit lizens komponetntenauswahl etc angepasst werden

  • Nein, wir müssten nicht immer alles updaten, da der Compiler alle im Include verzeichnis liegenden Daten ausliest und in einer einzigen exe datei speichert.