Seite 5 von 5

Verfasst: 28.03.2009 22:01
von Kaeru Gaman
was bekommst du denn mit LoadSprite nicht hin...

Verfasst: 28.03.2009 22:04
von Bisonte
dafür musst du nichtmal was ändern und es ist immer noch ohne Sprites.

In die Enumeration müsste nur

Code: Alles auswählen

#Player
eingefügt werden... dann das Bild mit

Code: Alles auswählen

LoadImage(#Player,"runner.bmp")
Laden... und am ende nur noch anstelle der weissen Box mit Drawimage() Zeichnen lassen

Verfasst: 29.03.2009 03:35
von TeamBaba
Ok bin jetzt dank Bisonte dabei bzw. habe die Map jetzt mit Hilfe eines Bildes Gemacht.

Bild

Quelltext auch mit der Hilfe von Bisonte mit Procedure , was ich jetzt auch gerafft habe.
Kann man irgendwie machen das man eine Map auswählen kann am anfang so eine art Menü, dass ganz simple aussieht ..... ?

Verfasst: 29.03.2009 17:20
von Crawler
Kaeru Gaman hat geschrieben:"kleiner als" ist besser, notfalls "kleiner gleich", "gleich" ist völlig unsicher.
Okay, sehe ich natürlich ein, hab nicht daran gedacht, dass man mit veränderter Schrittweite auch mal nicht auf Null kommen kann.
"Hängenbleiben" im echten Wortsinne kann der "Ball" nicht, man kann immer noch rückwärts weggehen.
an dieser Stelle ein OR zu setzen ist absolut sinnlos, da kann man gleich die komplette Abfrage weglassen.
Daran hab ich gestern abend auch nicht gedacht, dass man mit meiner Version quasi im Halbversatz durchs Wandende renne kann.
und dass die Wände dicker sein sollten als der "Ball" hatte ich gestern schon mal geschrieben.
Schlicht und einfach übersehen...
und irgendwelchen Code vorzukauen hätte ich ebenfalls schon gestern Mittag machen können, wenn ich das für sinnvoll gehalten hätte.
Ich hab auch keinen Code vorgekaut, denn alles, was ich zusammengestellt habe, stand so schon im Thread. Ich habe nur angenommen, dass der Threadersteller durch die Art und Weise der Einrückung an eine strukturierteren Programmiestil herangeführt wird.
aber egal, dann mach DU halt weiter......
Es geht doch nicht darum, jemand anderem die Position streitig zu machen oder aus einem Thread "herauszudrängen". Ich dachte, ich könnte eine sinnvolle Ergänzung bieten...

Verfasst: 29.03.2009 18:11
von Kaeru Gaman
ja ok, sorry....
ich war gestern wegen einigem Anderen ziemlich angepisst, deswegen hab ich hier etwas dünnhäutig reagiert...


... was mich jetzt wirklich mal interessieren würde, warum Baba so ein problem mit Sprites hat, aber nicht mit Images.
ich hätt ja spontan auf ein Ladeproblem getippt, das hätte dan aber ja mit Images genau so auftreten müssen.

Verfasst: 29.03.2009 18:45
von Max_der_Held
Hm.. ja eigendlich.. aber ich denke, er hat halt bisher noch nichts größeres mit sprites gemacht..?..
ziemlich angepisst
OH.. wiso des?.. :|

@Baba: wegen pointbenutzen.. mal angenommen, du willst später nen hintergrund (bild) laden:
paff, point tot..

normalerweise macht man sowas mit Tile-Raster bzw. normalem Raster, wenn du mal grafiken hernehmen willst, anstatt box/lines, oder Leute?

Oder du prüfst einfach alle Wände ab, ob sie mit spieler kollidieren WERDEN, wenn er sich bewegt, und verhindest es, wenn ja.

Code: Alles auswählen

   KugelneuX = KugelX + KugelBEwegX 
if keyboard (up)
      if kugelneuX +Kugelneubreite > würfelX and kugelneuX < WürfelX + Würfelbreite 
         ; Kollision auf X-ebene.. das gleiche halt noch mit Y.
      endif
   endif 
aber für nen Einsteiger hast'es echt gut gehalten, finde ich XD ;)

(auch, wenn ich ungern an Wänden hängenbleibe...)


ps: die roten quoffels: unbegehbar,
die grünen= begehbar... nur mal als Beispiel.

Ist aber nur ein Vorschlag. man kanns auch komplizierter lösen,
indem man schaut, ob alle DIREKT um den spieler liegenden würfel denn mit ihm kollidieren.. dafür braucht man dann auch raster, bei großen karten..

aber egal.. k.a.

Rasterbeispiel:

Code: Alles auswählen

   ; -------------------------------------------------------------------------------------------------------------
   ; demo raster -> Basiswissen..
   ; -------------------------------------------------------------------------------------------------------------
   ; -------------------------------------------------------------------------------------------------------------
   ; enumerations 
   ; -------------------------------------------------------------------------------------------------------------
   
      Enumeration  ; sprites 
         #sprite_back 
         #sprite_wand 
      EndEnumeration 
      #rasterbreite           = 15
      #spielfeld_rasterbreite = 100 ; wie viele Felder nach rechts das spielfeld haben soll
      #spielfeld_rasterhohe   = 100 ; wie viele Felder nach unten
      
   ; -------------------------------------------------------------------------------------------------------------
   ; structures 
   ; -------------------------------------------------------------------------------------------------------------
   
      Structure boden
         grafik.i
         Iswand.i
      EndStructure 
   
   ; -------------------------------------------------------------------------------------------------------------
   ; globals 
   ; -------------------------------------------------------------------------------------------------------------
   
      Global Dim boden. boden (#spielfeld_rasterbreite,#spielfeld_rasterhohe ) ; das Spielfeld


   ; -------------------------------------------------------------------------------------------------------------
   ; Init Stuff
   ; -------------------------------------------------------------------------------------------------------------
      
      InitSprite        ()
      InitKeyboard      ()
      OpenScreen        ( 1024 , 768 ,32 , "test max_aigner@gemusoft )")
      
   ; -------------------------------------------------------------------------------------------------------------
   ; sprites erstellen
   ; -------------------------------------------------------------------------------------------------------------
   
      TransparentSpriteColor ( -1 , 0 )
      
      CreateSprite       ( #sprite_back,#rasterbreite,#rasterbreite)           ; sprite erstellen...
         
         If StartDrawing ( SpriteOutput( #sprite_back )) ; drauf zeichnen
            
            Box          ( 0 , 0 , #rasterbreite , #rasterbreite , RGB( 0,222,22))  ; grün für  brav=begehbar
            StopDrawing  ()                               ; fertich
            
         EndIf 
         
      CreateSprite        ( #sprite_wand,#rasterbreite,#rasterbreite)
         
         If StartDrawing  ( SpriteOutput( #sprite_wand ))
            
            Box           ( 0 , 0 , #rasterbreite , #rasterbreite , RGB( 222,0,0))  ; rot für mauer = böse.
            StopDrawing   ( )
            
         EndIf 
   
   ; -------------------------------------------------------------------------------------------------------------
   ; boden erstellen
   ; -------------------------------------------------------------------------------------------------------------
   
       For x = 0 To 60
            For y = 0 To 50
                If Random(30)  = 0                                       ; jede 3. platte wird ungegehbar.
                   breiteweite = Random(20)                              ; maximal die 20 folgenden Rasterteie nach rechts sollen auch wände werden können
                   
                   For z = 1 To breiteweite                              ; wir wollen ja breite wände haben -> die Wand- nachbarn auch zur Mauer machen.
                      If x+z <= #spielfeld_rasterbreite                  ; wenn die wandteile im Spielfeld sind 
                         boden( x+z , y )   \ grafik   = #sprite_wand    ; das bild ist die Wand.
                         boden( x+z , y )   \ Iswand   = 1               ; sie wird unbegehbar.
                      EndIf 
                   Next 
                   
                Else 
                   If boden(x , y ) \grafik < 1                          ; also, wenn es noch nichts ist, auch keine Mauer -> boden erstellen
                      boden( x , y )   \ grafik   = #sprite_back         ; das bild ist der Hintergrund
                      boden( x , y )   \ Iswand   = 0                    ; sie wird begehbar, standardmäßig sowieso 0, aber der Sauberkeit halber setzen wirs hier auch =0.
                   EndIf 
                EndIf 
            Next 
         Next
         
   ; -------------------------------------------------------------------------------------------------------------
   ; repeat: Anzeigen
   ; -------------------------------------------------------------------------------------------------------------
   
   
   Repeat 
   
      ExamineKeyboard      ()
      FlipBuffers          ()
      ClearScreen          (0)
      
      ; boden anzeigen
      
         For x = 0 To 60
            For y = 0 To 50
                If IsSprite ( boden(x,y)\grafik ) ; also, wenn eine grafik geladen wurde -> die bodenplatte also existiert (man kann auch einfach ein "exist" für jede bodenplatte machen.. hier egal. 
                   DisplayTransparentSprite( boden(x,y)\grafik , x *#rasterbreite, y * #rasterbreite)
                EndIf 
            Next 
         Next 
         
   Until KeyboardReleased ( #PB_Key_Escape )