Blit in 2 rects (sidescroll)



  • Hallo, ich wollte ein Image via SDL horizontal scrollen lassen. Bei erreichen des Bildrandes soll natürlich alles was <0 oder > ScrW am anderen Ende wieder rauskommen.
    Hierzu wollte ich das rect des Imagaes aufteilen, und alles was eben <0 ist in ein ZWEITES rect blitten. Irgendwie bleibt das 2te rect aber leider leer, unsichtbar oder wird ins Nirvana geblittet.
    Da ich aufgrund meiner Cholerik jetzt den gesamten Code gelöscht habe, muß ich noch mal von vorne anfangen.
    Meine Fragen: ist der Weg richtig, das Originalimage aufzuteilen und in 2 verschiedene rects zu blitten?

    2te Frage zu OOP: Macht es Sinn einer Klasse (bsp Player) gleich das Image als Member zu geben, oder sollte alles was Grafik ist auch in eine dementsprechende GrafikKlasse?



  • Ok, das Blitten klappt wie erwartet. Die x,y Koordinaten eines rect's waren vermutlich Schuld. Also nehme ich an, daß ist "der richtige" Weg. (zum. für mich).

    Interessant fände ich noch eine Antwort auf meine 2te Frage. Ich weiß, Grafik und Logik soll man trennen, aber Objektorientiert sollte doch auch heißen: ein Objekt bringt alles mit, was es darstellt...?!



  • es hat sich bisher als am meisten praktikabel erwiesen, alles was ein bild sein soll in eine sprite klasse zu verpacken, die dann von allen anderen klassen verwendet wird (z.b. player).


  • Mod

    wenn du es wirklich OOP machen willst, wuerde es bedeuten dass nicht ein einziges objekt gibt, sondern viele generische aus denen du das wichtige zusammenbaust was ein jeweiliges objekt braucht.

    deinem "player" ist es doch ziemlich egal welche daten die graphik hat, er braucht nur eine referenz auf ein graphikobjekt dass die daten kapselt.

    das graphikobjekt wiederrum braucht nicht alle details, es weiss vielleicht welches mesh welches material hat (und vielleicht ein paar flags z.b. sichtbar, collidierbar, bewegbar, etc.)

    ein material weis wiederrum nur dass es ein paar farbeigenschaften und ein paar texturen hat.

    etc.

    dein "player" hat also zwar alles noetige, aber nur durch einen zeiger der auf den graphikteil referenziert.

    dieser graphikteil ist dann das was das rendering verwenden um, wie du schon sagtest, getrennt von der logik arbeiten zu koennen.

    stell dir vor du hast einen player der noch eine waffe bekommen soll, diese waffe hat nen schaldaempfer... oder eine die zweihaendig ist... oder nur ne axt die er wirft... oder dein player ist ploetzlich ein wagen in dem der vorherige 'player' sitzt..
    du willst nicht jedesmal unmengen von resourcen hin und her schieben und dann im logik code extra die ganze rendering hierarchy abbilden mit dem das laeuft (also texturen, materialien etc).



  • Das habe ich schon getan,... mir gings nur um eine eventuelle klare Trennung zu -> Grafic only hin 😉


Anmelden zum Antworten