Hintergrund animieren :) TBitmap->Canvas
-
Ag3nt schrieb:
Hier das Beispiel schaut euch mal den Hintergrund an wie der so schön scrollt das will ich auch für meinen Shooter haben
http://bcb.24day.de/BCBGame.zipKleiner Tip: Da gibt es den Quelltext dazu. Warum guckst du dir den nicht einfach mal an?
MfG Aoeke
-
Weil ich grad den Teil nicht verstehe @Aoeke
Danke @MORL ich werde den Code gleich mal testen
-
Ag3nt schrieb:
Weil ich grad den Teil nicht verstehe @Aoeke
Dann frag konkret, indem du den Code hier aufdröselst!
-
Dann frag konkret, indem du den Code hier aufdröselst
Sag ihm das nicht, sonst wird der Post auch wieder etlich lang und er wurde
bereits gepostet, zudem habe ich nochmal ein Dokumentierten Code gepostet
und er, wie er sagt jetzt klar kommt.Nun bin ich mal gespannt auf das Ergebniss, und ob er auch Klassen für z.B.
die Gegner erstellt, oder zumindest Strukturen.
Wie ich das in einem "dieser Art" Postings erwähnt habe.gruß Micha
-
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.rarPS: 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.rarPS: 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.