Haupmenu erzeugen



  • ja genau, das habe ich auch alles schon hinbekommen.

    ich möchte jetzt gern meinem spiel schwierigkeitsstufen geben. LEICHT & SCHWER
    dazu möchte ich gern auf Form1 zwei Buttons mit LEICHT und mit SCHWER haben.
    Klicke ich auf LEICHT öffnet sich ein neues Form2, klicke ich auf SCHWER öffnet sich Form3.

    So stell ich mir das vor. Geht das?



  • ich habe es jetzt mal so probiert, aber mein Compiler zeigt mir fehler. Was mache ich falsch?

    #include <vcl\vcl.h>
    #pragma hdrstop
    #include "Form2.h" // <-
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma resource "*.dfm"
    TForm1 Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent
    Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Form2->Show();
    }

    ein zweites formular habe ich erzeugt und natürlich ein Button auf Form1, wie man sieht.

    wie kann ich nur Form 1 durch klicken auf Button 1 miteinander verbinden.

    Ich hab die allererste Borland Builder Version, also schon uralt 😞

    liebe Grüße waldwuffel



  • waldwuffel schrieb:

    Ich hab die allererste Borland Builder Version, also schon uralt 😞

    Ja und? 😉
    Du meinst #include "Unit2.h". Binde diese noch ins Projekt ein. (Projekt -> Hinzufügen)
    Grüße, halloei



  • hey danke halloei, jetzt klappt es, ich bin langsam echt verzweifel, dabei ist das ja wirklich dar nicht umständlich. kann ich jetzt auch noch irgendwie die Reihenfolge festgelegen? (Ich bin zu faul mein Spiel nochmal komplett neu zu schreiben)

    mein Programm beginnt immer mit Form1, kann ich da irgendwas machen, damit es mit form2 startet? wenn ich dann bei form2 auf das button klicke, springt es auf form1?

    Besten Dank nochmal für eure Hilfe
    waldwuffel



  • Sicher. Gehe in die Projektoptionen und dann bei Forms oder so. Da kannst du die Mainform (die, die zuerst aufgerufen wird) festlegen.
    Grüße, halloei



  • dankeschön!

    Jetzt hab ich gleich noch ne ganz andere Frage:
    ich habe 3 Labels die mir je 3 verschiedene Zahlen zwischen 0 und 9 und auch Buchstaben ausgeben, der benutzer gibt nur in einem Editfeld diese Zahlen ein. Wie kann ich die ausgabe und eingabe mit einander vergleichen?

    So weit bin ich bisher. Aber was mache ich falsch?

    randomize();
    ...
    a=random(10); Label1->Caption=a;
    b=random(10); Label2->Caption=b;
    c=random(10); Label6->Caption=c;
    d=Label7->Caption="a";
    ...
    AnsiString o=Edit1->Text;
    if (o==a+b+c+d) Label4->Caption="Richtig!";
    else Label4->Caption="Falsch!";



  • Hallo,

    welchen Typ haben denn a, b und c? Sicherlich Integer, oder? Wenn ja, dann müsste spätestens an dieser Stelle :: if (o==a+b+c+d) :: ein Fehler kommen. Mit a+b+c addierst du a,b und c -> mit +d versuchst du einen String mit dem Ergebnis aus a+b+c zu verketten?! Das ganze wiederrum versuchst du dann mit o (was vom Typ AnsiString ist) zu vergleichen.

    Nehmen wir an:
    a = 1
    b = 7
    c = 5
    d = "a";

    Das Ergebnis daraus soll "175a" sein, dann musst du zunächst die Integer (a,b und c) in Strings umwandeln. IntToStr(a); IntToStr(b).... Danach erst kannst du sie verketten:

    if (o == IntToStr(a) + IntToStr(b) + IntToStr(c) + d) { ; } // d muss nicht umgewandelt werden, weil d bereits vom Typ (Ansi)String ist.
    

    Anders sähe das aus, wenn das gewünscht Ergebnis "13a" sein sollte. Dann musst du zunächst alle Integer addieren und dann in String umwandelt, damit die Summe mit dem verbleibenden AnsiString "d" verkettet werden kann.

    if (o == IntToStr(a+b+c) + d) { ; }
    

    Vielleicht habe ich dich aber auch falsch verstanden?! 😕

    btw.: wenn du eindeutige Bezeichner für Objekte und Variablen verwendest, ist es für dich und für Außenstehende leichter, deinen Quellcode zu verstehen und zu überblicken.

    LG, Micha



  • @waldwuffel
    irgendwie hat das nichts mehr mit dem eigentlichen Thema zu tun, deshalb bitte beachten: ein Thema pro Thread, ein Thread pro Thema

    zur Frage:
    ich vermute eher daß die eingegebenen Werte (o) mit jedem Label einzeln verglichen werden sollen, z.B.

    if (o==IntToStr(a) || o==IntToStr(b) || o==IntToStr(c) || o==d) Label4->Caption="Richtig!";
    

    wenn das mehrere Labels sind bietet sich ein Array der Labels an, durch das kann man dann z.B. mit einer Schleife gehen, um nachzuschaun, ob eines mit dem angegebenen Wert übereinstimmt. Aber auch das ist ein völlig anderes Thema.



  • Hallo waldwuffel,

    back to topic: Hauptmenü erzeugen und Schwierigkeitsgrad einstellen.

    Ich verstehe immernoch nicht ganz, wozu du ein 2. Formular brauchst... Einfach nur, weil du es so schöner findest? Oder zum Üben? Wenn Beides nicht: Ein 2. Formular ist nicht notwendig!
    Wie gesagt: Du kannst im Hauptmenü einen Menüpunkt "Schwierigkeit" mit den Untermenüpunkten "Leicht/Mittel/Schwer" erstellen. In einer OnClick-Methode, die du per Objektinspektor allen 3 Untermenüpunkten zuordnen kannst, legst du dann einfach fest, wie groß der Wertevorrat sein soll, aus dem die drei Zeichen ausgegeben werden. Das speicherst du in einer member-Variablen des Formulars. Derart:

    // IN DER *.H
    
    //...
    private:
        int iWertebereich;
    //...
    
    // IN DER *.CPP:
    
    void __fastcall TForm1::SubMenuClick(TObject *Sender)
    {
        if(Sender == SubMenuSimple)
            iWertebereich= 10;
        else if(Sender == SubMenuMedium)
                iWertebereich= 30;
            else if(Sender == SubMenuHard)
                    iWertebereich= 60;
    }
    //----------------------------------------------------
    

    iWertebereich kannst du dann für random() weiter verwenden...

    MfG



  • danke, noch mal Kolumbus!
    Ich wollt einfach ein2 formular, weil ichs einfach schöner fand, und weil ich auch wissen wollte wie das funktioniert.

    *an alle: danke schön für eure Hilfe

    Ps: fürs nächste Mal merk ich mir:

    ein Thema pro Thread, ein Thread pro Thema

    Liebe Grüße und eine dickes Danke waldwuffel


Anmelden zum Antworten