Variabeln zusammensetzen

  • Moin,

    bin grade dabei mir ein Wer wird Millionär zu bauen.

    Nun möchte ich die Variable der richtigen Antwort immer passend der Frage zusammensetzen, sprich

    $frage0richtig -> $frage1richtig

    In Php würd das ja iwie so gehen:

    $frage . $zaehler . $richtig;

    Wie gehts in Autoit? Der Zähler verändert sich und daraus soll dann die Variable entstehen..

    Gruß

    Paul01


    PS: Allgemein was das Programm angeht bin ich grad etwas hilflos wie ich das ganze umsetzen kann..

    Kann jz schauen ob die erste Frage stimmt und darauf reagieren aber wie ich jz zur nächsten springe ist noch so ne Sache.. Mal schauen ob sich das mit der oben stehenden Frage dann beantwortet

    Einmal editiert, zuletzt von Paul01 (15. September 2017 um 00:31)

  • Hallo Paul01 !

    Ich bin mir angesichts der Uhrzeit nicht ganz sicher, ob ich deine Frage richtig verstehe:sleeping:.

    Was Du suchst, ist wahrscheinlich ein 2-dimensionales Array. Hier mal ein kurzes Beispiel mit 5 Frage/Antwort-Paaren.

    Code
    #include <Array.au3>
    Local $aQA[5][2] = [ _
            ["Frage 1", "Antwort 1"], _
            ["Frage 2", "Antwort 2"], _
            ["Frage 3", "Antwort 3"], _
            ["Frage 4", "Antwort 4"], _
            ["Frage 5", "Antwort 5"]]
    
    _ArrayDisplay($aQA)

    Edit : Zusatzinfo

    Eine gute Einführung (von BugFix ) in Arrays findest Du unter : http://www.bug-fix.info/array_tut.htm

    Folgende Funktionen sind ebenfalls einen Blick wert :

    _ArrayAdd

    _ArrayDisplay

    _FileReadToArray

    Danach kannst Du sicher besser beurteilen, ob ein Array die von Dir gesuchte Lösung darstellt.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (15. September 2017 um 08:01) aus folgendem Grund: Antwort erweitert

    • Offizieller Beitrag

    Ich würde Fragen und Antworten in einem Array verwalten und ebenfalls den SubIndex für die richtige Antwort, etwa so:

    AutoIt
    ; Frage-Nr. = ArrayIndex +1
    ; Richtige Antwort = 'SubIndex_wahr' (2/3/4/5)
    
    Global $aQA[15][6] = [ _
    ['Frage','SubIndex_wahr','Antwort_1','Antwort_2','Antwort_3','Antwort_4'], _
    ['Frage','SubIndex_wahr','Antwort_1','Antwort_2','Antwort_3','Antwort_4'], _
    ...
    ]
  • BugFix den Eintrag mit dem richtigen Index kannst du dir ehrlich gesagt schenken. Nimm einfach als ersten Index die Frage und als zweiten die dazugehörige Antwort.

    Dann kannst du beim Anzeigen der Fragen die Fragen zufällig am "Spielfeld" anzeigen und gehst einfach alle im Array durch statt sich dann zu merken,

    wo die richtige Antwort sich auf welchem Feld befindet.

    • Offizieller Beitrag

    Nimm einfach als ersten Index die Frage und als zweiten die dazugehörige Antwort.

    Dann kannst du beim Anzeigen der Fragen die Fragen zufällig am "Spielfeld" anzeigen

    Kann man machen. Dann musst du beim Anzeigen der Antwortmöglichkeiten deren Reihenfolge trotzdem durchwürfeln und dir dort merken, wo du die richtige Antwort hinterlegt hast. Da ist es wesentlich performanter, bereits in der Vorlage den Antwortmix zu haben und den Index zur richtigen Antwort zu speichern. Du vergleichst ja nicht den Antworttext, sondern den Antwort-Index, geht etwas flotter von der Hand.

  • Das Argument Performance würde ziehen wenn man > 1.000 Fragen pro Sekunden bekäme.
    Im Falle von hier wo man so etwa aller 10s mal ne Frage präsentiert bekommt, ist es sicherlich vernachlässigbar wenn die Frage eine halbe Millisekunde früher oder später auftaucht ;)

    Ich finde beide Methoden gut. Die Auswahl hat dann aber eher mit persönlichen Geschmack als mit handfesten Argumenten dafür oder dagegen zu tun.

  • Du vergleichst ja nicht den Antworttext, sondern den Antwort-Index, geht etwas flotter von der Hand.

    Dafür musst du aber den richtigen Index hinterlegen und dir dann merken wohin du ihn gespeichert hast im Feld.

    Ich finde die Variante ohne Index besser, weil man ein saubereres Array hat und einfach es durchgehen kann.

    Und hier den Vergleich zu ziehen, das die Indexvariante schneller ist finde ich ehrlich gesagt mehr als nur lächerlich, es handelt sich um eine einzige Frage.

    Das ist absolut vernachlässigbar, da ist vermutlich das Zeichnen der Oberfläche wesentlich zeitaufwendiger.

    • Offizieller Beitrag

    Und hier den Vergleich zu ziehen, das die Indexvariante schneller ist finde ich ehrlich gesagt mehr als nur lächerlich, es handelt sich um eine einzige Frage.

    Ist für diese Anwendung sicher völlig richtig. Aber ich denke, man sollte ruhig versuchen auch bei simplen Dingen nach den solchen Lösungen zu schauen, um sie parat zu haben, wenn es wirklich not tut.

    Ich finde die Variante ohne Index besser, weil man ein saubereres Array hat und einfach es durchgehen kann.

    Genau das hast du doch mit der Indexvariante:

    • Offizieller Beitrag

    Es gäbe auch noch die Möglichkeit, Richtig oder Falsch in die Antworten zu speichern:

    Spoiler anzeigen
  • Danke euch !

    Werde es so:

    Code
    Global $aQA[15][6] = [ _
    ['Frage1',2,'Antwort_1','Antwort_2','Antwort_3','Antwort_4'], _
    ['Frage2',5,'Antwort_1','Antwort_2','Antwort_3','Antwort_4'] _
    ]

    oder so:

    Code
    Global $aQA[6][5] = [ _
    [' Frage1', 'rAntwort1', 'fAntwort2', 'fAntwort3', 'fAntwort4'], _
    [' Frage2', 'fAntwort1', 'rAntwort2', 'fAntwort3', 'fAntwort4'], _
    [' Frage3', 'fAntwort1', 'fAntwort2', 'rAntwort3', 'fAntwort4'], _
    [' Frage4', 'fAntwort1', 'fAntwort2', 'fAntwort3', 'rAntwort4'], _
    [' Frage5', 'rAntwort1', 'fAntwort2', 'fAntwort3', 'fAntwort4'], _
    [' Frage6', 'fAntwort1', 'rAntwort2', 'fAntwort3', 'fAntwort4']]

    lösen :)

  • Okey eine Frage hab ich noch.

    Ich möcht jz den Buttons HIntergrundgrafiken zuweisen.

    $aAnswerButton[0] = GUICtrlCreateButton('', 24, 88, 297, 65, $BS_BITMAP)

    _GUICtrlButton_SetImage(-1, "C:\Users\user1\Pictures\button.bmp")

    Das geht nicht, warum?

    Oder ist es möglich einen Button komplett durchsichtig zu machen?

    Hab ich mit GUICtrlSetColor(-1, $GUI_BKCOLOR_TRANSPARENT) und GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) schon versucht, wird aber iwie nicht transparent

    • Offizieller Beitrag

    Wenn Du auf einem Button eine Grafik und Text haben willst, dann am besten die Grafik als Icon ("pic.ico").

    Spoiler anzeigen
  • Wenn ichs so mache:

    $aAnswerButton[0] = GUICtrlCreateButton('', 24, 88, 297, 65)

    GUICtrlSetImage(-1, "C:\Users\user1\Pictures\button.ico", 0)

    Ist das halt nicht in der Originalgröße..

    Hab eine Grafik die genau so groß ist wie der Button

  • Und wie kann ich dann darauf reagieren? Also auf das klicken :3

    Kann ich nicht einfach den Button komplett transparent machen so dass ich die Hintergrund Grafik von der GUI sehe?

    • Offizieller Beitrag

    Einen Button kann man nicht transparent machen. Das geht nur bei einem Label.

    Vielleicht meinst Du das so:

    Spoiler anzeigen
  • Da machst dus jz nur für Labels transparent oder?

    Mh.. Ist ja echt krampf iwie..

    Zitat


    Nimm stattdessen ein Icon- oder Pic-Control und lege ein Label darüber für den Text.

    Muss ichs wohl so mal versuchen.. Wenn nicht färb ich die Buttons halt einfach einfarbig, hässlich aber nunja xD

  • Hallo Paul01 !

    Da machst dus jz nur für Labels transparent oder?

    Mh.. Ist ja echt krampf iwie..

    Nimm mir den folgenden Kommentar bitte nicht übel, aber :

    Könntest Du Fragen zukünftig in einer Form stellen, die nicht so aussieht, als hätte sie ein 6-jähriger verfasst ?

    Ich denke, das darf man als Zeichen der Wertschätzung gegenüber denen die helfen bzw. bereits (reichlich) geholfen haben, schon erwarten !!

    Ist nur meine Meinung - ich weiß natürlich nicht, wie die anderen das sehen.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    Da machst dus jz nur für Labels transparent oder?

    Mh.. Ist ja echt krampf iwie..

    Du wolltest doch, dass man das Hintergrundbild sieht?!

    Irgendwie reden wir aneinander vorbei. Zeig doch mal anhand einer Grafik/Zeichnung, wie das aussehen soll.

    Ich muss Musashi schon etwas recht geben, dass Deine Beschreibung nicht so ganz eindeutig ist.

    • Offizieller Beitrag

    Wenn nicht färb ich die Buttons halt einfach einfarbig, hässlich aber nunja

    Warum einfarbig? Wie wäre es mit Farbverlauf, sieht immer ganz schick aus. An dem Bsp. siehst du auch, wie du Text auf einem Bild (der Farbverlauf ist ein Picture-Ctrl.) transparent schreibst.

    Bsp. Gradient-Button