moorhuhn in c++



  • hi,

    in bin grad dabei ein moorhuhn ähnliches spiel zu programmieren, und wollt fragen ob jemand weiß, ob ich einem timer bzw einem Timer-vektor (wenn das geht), die funktion des timers schon progr. kann, ohne einen Timer über das timersymbol auf meine form zu hohlen und doppelklick??
    Wäre nett wenn mir da jemand helften könnte!!

    Und falls hier jemand schon was ahnliches programmiert hat wäre nett wenn er siche melden könnte.

    mfg Johony


  • Mod

    du kannst mit GetTickCount(); die aktuellen ticks von windows abfragen, ohne form oder sonst was.

    rapso->greets();



  • Arbeitest du mit MFC oder sowas? Bei einfachen Spielen geht das vielleicht grade nochmal gut, aber wenn du Performance und viele Möglichkeiten brauchst, nimm eine spezielle Spiele- bzw. GrafikAPI. Leichter zu lernen sind allegro und SDL es gibt auch andere. Für 3D werden hauptsächlich Direct3D (was ein Teil von DirectX ist, einer Spiele API von Microsoft) und OpenGL verwendet.
    Viel Glück
    geloescht



  • Was soll ein "Timer-Vektor" sein?? 😕
    Klar kannst Du den Timer auch in purem Code erstellen.
    Aber ist das nicht schnurzpiepe?!
    Ansonsten gilt oben gesagtes: Wenn da mehr als 2-3 Bitmaps rumflattern sollen: Laß es bleiben (mit GDI)!



  • Hi,

    johony schrieb:

    Und falls hier jemand schon was ahnliches programmiert hat wäre nett wenn er siche melden könnte.

    Ich habe schon einmal ein Moorhuhn geproggt(hieß Morehuhn 😃 ). Ich hab es mit SDL gemacht und das würde ich dir auch empfehlen.Auch generell für 2D-Spiele.

    Gruß ########



  • hi,

    thx schon, aber ich hab schon nen einfaches 2d-spiel gemeint und das mit dem timer-vektor, oder was auch immer ich gemeint hab weis ich jetzt.

    des war halt dass ich im private von TForm1 einen Vektor als zeiger deklariert hab. => private: TTimer *huhn_bewegung[20];
    In der form weißt dann die FormCreakt dem Vektor einen Timer zu, der dann durch OnTimer eine funktion zugeteilt bekommt
    => void __fastcall TForm1::FormCreate(...)
    {
    huhn_bewegung[0] = new(TTimer)(this);
    huhn_bewegung[0] -> OnTimer = bewegen;
    }

    void __fastcall TForm1::bewegen(...)
    {
    zb.: image->Left+=5;
    }

    dass hatte ich damit gemeint!!

    aber trotzdem nochmal vielen dank.

    mfg johony



  • Nur das naechste Mal solltest du erwaehnen, dass das eine spezielle Komponente vom BCB ist... Damit weiss nicht jeder etwas anzufangen..
    MfG Aoeke



  • nabnd,

    klar mach ich dess, ich bin nur net oft in so einem Forum, und denk da nich immer an alles. Aber kein prob, ich werd meine frage nächstes mal durchdachter formulierren.

    mfg johony



  • Aoeke schrieb:

    Nur das naechste Mal solltest du erwaehnen, dass das eine spezielle Komponente vom BCB ist... Damit weiss nicht jeder etwas anzufangen..

    Und dann sag (besonders im Spieleprogrammierungs-Forum) auch lieber Array statt Vektor... das verwirrt gewaltig... 💡
    Zudem setzen die TTimer-Komponenten auf die Windows-Message TIMER auf. Und Windows unterstützt nur jeweils eine Hand voll Timer-Messages gleichzeitig (XP und 2000 sicher mehr als WME oder W98). Daher solltest Du Dir ggf. einen "Globalen Timer" schreiben (hab' ich auch schon gemacht), der alle gewünschten OnTimer-Aufrufe in einer Liste (Vektor 😉 ) speichert. Wenn Du eine Klasse schreibst, die sich automatisch beim Kreieren darin speichert, kannst Du diese so modeln, daß keine Unterschiede mehr zu TTimer (bzgl. Benutzung) existieren. (Außer der Name natürlich... 🙄 )
    🤡 👍



  • hi,

    achso, des mit arrays hab ich net gewusst, ist mein erstes spiel (prijekt für schule).
    und des mit einem eigenem Timer ist... , naja ist höchstwahrscheinlich unmöglich für mich zu machen.

    aber bis jetzt klappt des mim TTimer bestens. falls ich dann nen eigenen brauchen sollte brauch ich eure hilfe.

    thx schonmal! 🙄

    mfg johony



  • War Vektor jetzt nicht in dem Sinne "Sprungvektor" aka Callback gemeint?

    Bye, TGGC (Hast du's drauf?)



  • TGGC schrieb:

    War Vektor jetzt nicht in dem Sinne "Sprungvektor" aka Callback gemeint?

    Nein.
    Ein Array von Timern (bzw. Zeigern auf Timer).

    TTimer *huhn_bewegung[20];



  • Komischer Ausdruck. Sagt denn jemand int-vektor oder bool-vektor?

    Bye, TGGC (Hast du's drauf?)



  • TGGC schrieb:

    Komischer Ausdruck. Sagt denn jemand int-vektor oder bool-vektor?

    Bye, TGGC (Hast du's drauf?)

    jop ich 😃



  • hi,

    ich wollt fragen du ("derVerzweifelte") dein game vielleicht mal geben könntest bzw. auch den code dazu. wenn du lust hast kannst dich ja mal in icq melden.

    Wäre echt nich schlecht, zwar kann ich meine Huhner jetzt schon einigermaßen* abschießen, aber vielleicht hast du des ja mit dem überprüfen auf welches Huhn letztendlich geclick bzw. geschossen würde n bissche rafinierter gemacht.

    *Muss halt noch if-enstscheidung ganz austüfteln.

    mfg Johony



  • Hi,

    johony schrieb:

    hi,

    ich wollt fragen du ("derVerzweifelte") dein game vielleicht mal geben könntest bzw. auch den code dazu. wenn du lust hast kannst dich ja mal in icq melden.

    Wäre echt nich schlecht, zwar kann ich meine Huhner jetzt schon einigermaßen* abschießen, aber vielleicht hast du des ja mit dem überprüfen auf welches Huhn letztendlich geclick bzw. geschossen würde n bissche rafinierter gemacht.

    *Muss halt noch if-enstscheidung ganz austüfteln.

    mfg Johony

    Tut mir leid, den Code habe ich nicht mehr. Ist schon lange her als ich das gemacht habe. Auch war der Code nicht gerade profimäßig gecodet. Das mit dem Abschießen habe ich so gemacht, das ich geprüft habe, ob sich die Maus auf der Moorhuhnbitmap befand und ob die linke Maustaste gedrückt wurde. (Nach der Art if(Mausposition == Bitmap_Huhn_1_Pos && SDL_Left_Mouse_Button_Down(oder so ähnlich))
    dann for(int c=0; c<=25; c++)
    {

    //ich weiß jetzt nicht wie du den Timer eingebaut hast

    Bitmap_Huhn_1_Pos -= 2

    }

    Wenn du weitere Fragen hast dann poste hier wieder.(ich weiß, dass oben genannte Beispiel fürs Abschießen is nich so toll.)

    Gruß #########



  • tag,

    also ich habs schon auch so gemacht, nur muss halt die if-bedingung(die du auch geschrieben hast) noch erweitern. weil bis jetzt frage ich nur n paar koordinaten ab.
    Bis jetzt hab ich die so(wenn auf das Image(huhn) geklickt wird):

    void __fastcall TForm1::xy_pruefung(TObject *Sender)
    {
    POINT mouse_coords;
    GetCursorPos(&mouse_coords);

    int Maus_top = mouse_coords.y;
    int Maus_left = mouse_coords.x;

    int i,j;

    for(i=0;i<Anzahl_Huehner;i++)
    {
    for(j=0;j<=10;j++)
    {
    if( (Maus_top == ((Huehner_img[i]->Top +j)|| (Huehner_img[i]->Top -j))) ||
    (Maus_left == ((Huehner_img[i]->Top +j)|| (Huehner_img[i]->Top -j))))
    {
    //Huehner_img[i]->Visible = false;
    bsStart->Visible=true; //das ich seh ob ich getroffen hab
    }
    }
    }
    }

    Und du hast des in SDL gamacht?
    wie lang hast du gebraucht um des hinzugriegen mit dem SDL??
    Weil ich mach des bis jetzt nur im builder ohne dirket3d oder sonst irgendwas.

    mfg johony



  • johony schrieb:

    tag,

    Und du hast des in SDL gamacht?
    wie lang hast du gebraucht um des hinzugriegen mit dem SDL??
    Weil ich mach des bis jetzt nur im builder ohne dirket3d oder sonst irgendwas.

    Puh...also nen Monat bestimmt. Wie gesagt ich war da noch ein ziemlicher noob und es war mein erstes Spiel. Hab immer probiert und probiert und mich an die SDL-Docu gehalten.(Dieses Forum kannte ich da noch leider nicht 😃 , was mir bestimmt viel Arbeit erspart hätte.) Aber ich empfehle dir auf jeden Fall SDL. Ich weiß nicht was du im Moment benutzt, aber wenn es MFC sein sollte, dass habe ich auch probiert. Ist echt S C H E I S S E!

    Gruß ########



  • kein plan mit was ich des mach, ich hab einfach den Borland c++ Builder 6.
    und Zeit hätt ich grad noch nen monat, mit ferien halt.
    hab mir grad des SDL gehzogen.
    Aber hast du deine Hühner eigentlich als array/vektor gemacht oder einzeln?

    class TForm1 : public TForm
    {
    .
    .
    private: // Anwender-Deklarationen
    .
    .
    TImage *Huehner_img[10];
    TTimer *Huehner_timer;

    //und so erzeug ich die in einem Timer der x hochzählt:

    weil so muss ich bis jetzt immer beim schuss die koordinaten abprüfen,
    oder kann man des auch anders machen?

    naja ich guck mir auf jeden fall mal das SDL an.

    mfg johony



  • Noch ein Moorhuhn-like game... Darauf hat die Welt gewartet...

    Aber was meinst du mit "Timer-Vektor"?

    Ne Art array? Vektoren sind doch... vierecke!


Anmelden zum Antworten