Hintergrund animieren :) TBitmap->Canvas



  • So weit ich mich erinnern kann, wurde in diesen Threads hier noch kein Code aufgedröselt.



  • Tada 🙂 fertig 🙂

    Nun versteh ich es auch mit Canvas->Rect *grins*

    Danke für eure Geduld 🙂

    Das Beispiel könnt ihr hier runterladen:
    http://sm2.funpic.de/ag3nt/myProjects/bgscroll.rar

    PS: Ihr müßt den Link selber in den Browser eingeben, da mein Hoster sich sonst in die hosen macht 🙂 er meldet dann wenn ihr es nicht manuell macht linken verboten

    Ich hoffe es gefällt euch 🙂



  • da ist nichts zu finden (404)



  • Das Beispiel könnt ihr hier runterladen:
    http://sm2.funpic.de/ag3nt/myProjects/bgscroll.rar

    PS: Ihr müßt den Link selber in den Browser eingeben, da mein Hoster sich sonst in die hosen macht er meldet dann wenn ihr es nicht manuell macht linken verboten

    OK ?



  • Nö. Bei mir (IE) geht's nicht!



  • Grotten Schlecht!

    hast du dir das Ergebnis mal selbst Angeschaut, und gesehen wie nach kurzer
    Zeit lange Streifen kommen, und auch gefargt Warum?

    Als Startwert hast du 960
    diesen Wert zählst du runter (hohe--)
    Wann ereichst du dann den Wert 1440???

    if (hohe==1440) {
                    hohe=960;
                    }
    

    solte es nicht besser "hohe <= 0" heissen?

    warum hast du jpeg.hpp included wenn sie nicht genutzt wird?

    // Warteschleife
            idletime = GetTickCount()+1;
            Application->ProcessMessages();
    

    wo ist da die Schleife, was für ein Sinn hat das Ganze jetzt in deinen Code? Kein!

    Warum ladest du das Hintergrundbild inerhalb der Schleife immer neu?

    Warum versuchst du nicht den Ablauf zu verstehen und nicht durch unüberlegtes
    Copy´n Paste so ein Misst auf zu Tischen?

    Wenn du schon von meinem Code abschaust, dann mach es doch wenigstens richtig!

    So kann aus dir nie ein Spieleprogger mit dem BCB werden, also werde ich dich
    wohl nie Einstellen können 🙄



  • Leute ich glaube hier gabs ein missverständnis der Code den du beschreibst micha ist falsch also das war der anfangscode 🙂 Den code hatte ich vergessen in der rar zu updaten hier ist der richtige code:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    
    // Public Variablen
    
            // INT VARIABLEN
            int xwingX=300;
            int xwingY=300;
    
            // BOOL VARIABLEN
            bool schuss=false;
            bool GameOver=false;
    
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
            // Einstellungen
    
                    Form1->Cursor = crCross;
                    Button1->Visible=false;
                    // Puffergrafiken *background *puffer
                    Graphics::TBitmap *puffer = new Graphics::TBitmap();
                    Graphics::TBitmap *backpic = new Graphics::TBitmap();
                    Graphics::TBitmap *xwing = new Graphics::TBitmap();
                    puffer->Width = 640;
                    puffer->Height =480;
    
            // Bilder in Bitmaps laden
                    backpic->LoadFromFile(ExtractFilePath(ParamStr(0))+"bg.bmp");
                    xwing->LoadFromFile(ExtractFilePath(ParamStr(0))+"xwing.bmp");
    
            // Bilder transparent darstellen
                    xwing->TransparentColor=clLime;
                    xwing->Transparent=true;
    
            schuss = false;
            DWORD idletime;
            int hohe=960;
    
            while (!GameOver)
            {
            // Warteschleife
            idletime = GetTickCount()+35;
            Application->ProcessMessages();
    
            puffer->Canvas->CopyRect(Rect(0,0,640,480),backpic->Canvas,Rect(0,hohe,640,hohe+480));
            hohe--;
    
            // Prüft wo der Hintergrundscroller ist und setzt nochmal auf std
            if (hohe<=0)
                    hohe=960;
    
            // Zeichnet X Wing
            puffer->Canvas->Draw(xwingX,xwingY,xwing);
    
            // Zeichnet X Wing -> Schuss
            if (schuss==true) {
                    // Schuss linke Seite
                    puffer->Canvas->Pen->Color = clWhite;
                    puffer->Canvas->PenPos = Point (xwingX,xwingY);
                    puffer->Canvas->LineTo(xwingX,0);
                    // Schuss rechte Seite
                    puffer->Canvas->Pen->Color = clWhite;
                    puffer->Canvas->PenPos = Point (xwingX+31,xwingY);
                    puffer->Canvas->LineTo(xwingX+31,0);
                    schuss=false;
    
                            }
    
             while (GetTickCount() < idletime)
             Sleep(0);
    
            Form1->Canvas->Draw(0,0,puffer);
            }
            delete puffer;
            delete backpic;
            delete xwing;
            Form1->Close();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
            if (Key==VK_ESCAPE)
                    GameOver=true;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
            xwingX=X-15;
            xwingY=Y-25;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
            schuss=true;
    }
    //---------------------------------------------------------------------------
    

    PS: Micha ich hab nie gesagt das ich ein Profi bin ich sachen Gamedev ok? Deshalb find ich es nicht passend gleich solch eine kritik über mich auszuüben erlich. Ich geb doch mein bestes und so langsam mach ich doch fortschritte oder nicht? Also ganz erlich, dass fand ich echt traurig, so demotivierst du anfänger wie mich 😞



  • PS: Micha ich hab nie gesagt das ich ein Profi bin ich sachen Gamedev ok? Deshalb find ich es nicht passend gleich solch eine kritik über mich auszuüben erlich. Ich geb doch mein bestes und so langsam mach ich doch fortschritte oder nicht? Also ganz erlich, dass fand ich echt traurig, so demotivierst du anfänger wie mich

    Damit versuche ich nicht dich nieder zu machen.
    Sondern ich Versuche dich auf den richtigen Weg zu bringen, und da
    gehört krasse Kritik dazu, oder besser gesagt man gebe mal ein Denk
    anstoß.

    Ich habe mich mal über eine Wortwahl von Junix aufgeregt, aber jetzt verstehe ich
    auch warum es auch mal unfreundlich erscheinen kann, (sorry @Junix,
    jetzt verstehe ich erst warum)

    Fakt ist, das du weder mit der C++ programmierung noch mit dessen Ablauf
    vertraut bist, ebenso versuchst du dich (was ja nicht verkehrt ist) an
    großen Sachen ran, ohne vorher simple Sachen zu verstehen.
    Zur klammerung oben, ist gemeint das du Wissensdurst hast, aber es Falsch angehst.

    Wenn du Spiele Programmierer werden willst, mußt du zuerst Programmieren
    lernen, gebe dich doch erst mal mit kleinen Resultaten aus Test-Programmen zufrieden,
    als gleich ein Diablo und Co Ergebniss beim Testen zu erzielen!

    ((((Ungeduld ist des Programmierers schlimmster Feind))))

    Wenn ich dich nieder machen wollte, hätte ich nicht Beispiele gepostet,
    sondern wäre mir nen Bier trinken gegangen, da ich dein Ergeitz verstehe,
    bin ich auch weiterhin bereit zu helfen, aber wenn ich einen Code sehe
    der aus dem Fleischwolf kommt, gebe ich harte Kritik daran.

    In diesem Sinne
    Micha



  • Was kann ich denn besser dran machen???

    PS: Ich kann doch schon die Standart sachen programmieren 🙂



  • Versuch doch mal, dein Raumschiff als eine Klasse zu implementieren. Dazu gehört, das die Bitmap und die Position des Raumschiffs nicht in der Form definiert werden.
    Oder versuche mal, die Laserschüsse durch Kugelschüsse zu ersetzen, möglichst so, das mehrere Schüsse gleichzeitig auf dem Bildschirm zu sehen sind.


Anmelden zum Antworten