Seite 2 von 3

Verfasst: 02.01.2005 18:32
von Franky
@Janiboy:
Danke für die Blumen, wenn du aber anfängst alles nur zusammen zu fragen:


www.rentacoder.com


Gibt nämlich auch Leute, die besseres zu tun haben /:->

Verfasst: 02.01.2005 18:38
von Janiboy
Zum Beispiel die folgende Frage konnte mir persönlich diese Hilfe nicht beantworten: Wie setzt man Einzelbilder so zusammen, dass sie einen Bewegungsablauf ergeben?

Verfasst: 02.01.2005 18:55
von PMV
...
Aber die Grundlage für 2D Programme /:->

so was müsste eigentlich sehr schnell raus zu finden sein ... oder ein bischen logisches Denken, aber als Anfänger weis ich jetzt nicht, ob man da so einfach drauf kommt ...

Nun ja, die Frage ist ganz einfach zu Beantworten, wie du das machst, ist dann wohl ne andere Frage, aber das schafste schon.

Um einen Bewegungsablauf (Animation) zu erziehlen, muss man diese nur einfach nacheinander Anzeigen, das heißt erst das erste Bild, dann kurz dannach an deren Stelle das zweite Bild usw.

Code: Alles auswählen

For Num = 0 To 9 ;Laden der Sprites, 10 Sprites
  LoadSprite(Num, "Sprite"+Str(Num)+".bmp") ;Sprite0.bmp, Sprit1.bmp, usw. bis Sprite9.bmp
Next

Repeat
ClearScreen(0, 0, 0)
DisplaySprite(AniFrame, X, Y)
FlipBuffers()
Delay(200)
AniFrame + 1
If AniFrame => 9 : AniFrame = 0 : EndIf
Until KeyboardPushed(#PB_Key_Escape)
Der Code ist so zwar nicht lauffähig, aber er sollte zur verantschaulichung aussreichen :D (mal davon abgesehen das ich des eigentlich nicht machen wollte -_-), annsonsten versuch den mal zum Laufen zu bringen *gg*

Exemine- und Init-Befehle fehlen z.B. noch usw. ... :wink:

Ach ja ... und das Forum hat auch ne Suchfunktion, wenn man da richtige Suchbegriffe eingibt, dann findet man auch hin und wieder das passende :D

Ach ja ... und http://www.Purearea.net ist ein muss ... schau dich da mal um, vorallem im CodeArchive

MFG PMV

Verfasst: 02.01.2005 18:56
von Janiboy
So ein #*!% ! Dann benutz ich mal die Suchfunktion vom Forum und finde dann nix!!!
Also, beantwortet die frage wenn ihr wollt oder nicht: wie bekomm ich eine Animation hin?

Verfasst: 02.01.2005 18:59
von Danilo
Janiboy hat geschrieben:wie bekomm ich eine Animation hin?
Du machst mehrere Bilder/Frames in ein Bild rein und
benutzt dann ClipSprite um nur einen Teil darzustellen.

Alternativ kannst Du AnimSprites aus den PureTools
nehmen, siehe meine Signatur. Beispiele sind dabei.

Verfasst: 02.01.2005 19:11
von DarkDragon
Danilo hat geschrieben:Du machst mehrere Bilder/Frames in ein Bild rein und
benutzt dann ClipSprite um nur einen Teil darzustellen.
Was dir dabei klar sein muss: ClipSprite selbst stellt dein Sprite nicht dar. Erst die DisplaySprite funktionen zeigen den Ausschnitt des Sprites.

Verfasst: 02.01.2005 19:16
von Janiboy
Oh mann! Die Archive von Purearea.de mögen ja gut sein, aber es lässt sich einfach nicht öffnen. Ist nicht jemand so "gnädig" sich die mühe zu machen den richtigen Befehl in meinen code einzusetzen. Da kommen einfach immer fehler!

Code: Alles auswählen

If InitSprite()=0    
EndIf 
If InitKeyboard()=0
EndIf
If InitSprite3D()=0
EndIf 
If InitMouse()=0
EndIf  

If OpenScreen(640, 480, 16, "Mein Spiel")=0 
EndIf 

For Num = 0 To 2
If LoadSprite(1, "Hamster1.bmp" ,0)=0 
If LoadSprite(2, "Hamster2.bmp" ,0)=0
If LoadSprite(3, "Hamster3.bmp" ,0)=0

 

Repeat 
  If IsScreenActive() 
  ClearScreen(0,0,0)
  DisplaySprite(AniFrame, X, Y)   
  FlipBuffers()
  Delay(200)
  AniFrame + 1
  If AniFrame => 3 : AniFrame = 0 : EndIf

   
   DisplayTransparentSprite(1, x, y)
  
   TransparentSpriteColor(1, 255, 255, 255) 
  

   
   ExamineKeyboard()  
  
   If KeyboardPushed(#PB_Key_Left)
     x-1
   EndIf 
  
   If KeyboardPushed(#PB_Key_Right)
     x+1
   EndIf 
    
   If KeyboardPushed(#PB_Key_F5)
     x+13
   EndIf
 
   If KeyboardPushed(#PB_Key_F6)
     y-13 
     x+13
   EndIf
   
   If KeyboardPushed(#PB_Key_F7)
     RotateSprite3D(1, 180, 0)
   EndIf   
  
 EndIf 
Until KeyboardPushed(#PB_KEY_ESCAPE)
[EDIT Danilo] Code-Tags gesetzt

Verfasst: 02.01.2005 19:26
von PMV
Lösch die Zeile

Code: Alles auswählen

For Num = 0 To 2 
Und Tausche das hier drunter mit den 3 Ladenzeilen aus deinem Code:

Code: Alles auswählen

If LoadSprite(0, "Hamster1.bmp" ,0)=0 
EndIf
If LoadSprite(1, "Hamster2.bmp" ,0)=0
EndIf
If LoadSprite(2, "Hamster3.bmp" ,0)=0
EndIf
Das hier komplet austauschen mit ...

Code: Alles auswählen

Repeat 
If IsScreenActive() 
ClearScreen(0,0,0) 
DisplaySprite(AniFrame, X, Y) 
FlipBuffers() 
Delay(200) 
AniFrame + 1 
If AniFrame => 3 : AniFrame = 0 : EndIf 


DisplayTransparentSprite(1, x, y) 

TransparentSpriteColor(1, 255, 255, 255) 



ExamineKeyboard() 

If KeyboardPushed(#PB_Key_Left)
x-1 
EndIf 

If KeyboardPushed(#PB_Key_Right) 
x+1 
EndIf 

If KeyboardPushed(#PB_Key_F5) 
x+13 
EndIf 

If KeyboardPushed(#PB_Key_F6) 
y-13 
x+13 
EndIf 

If KeyboardPushed(#PB_Key_F7) 
RotateSprite3D(1, 180, 0) 
EndIf 

EndIf 
Until KeyboardPushed(#PB_KEY_ESCAPE)
...dem:

Code: Alles auswählen

TransparentSpriteColor(0, 255, 255, 255) 
TransparentSpriteColor(1, 255, 255, 255) 
TransparentSpriteColor(2, 255, 255, 255) 

Repeat 
  If IsScreenActive() 
    ClearScreen(0,0,0) 
    DisplayTransparentSprite(AniFame, x, y) 
    FlipBuffers() 
    Delay(200) 
    AniFrame + 1 
    If AniFrame => 2 : AniFrame = 0 : EndIf 

    ExamineKeyboard() 

    If KeyboardPushed(#PB_Key_Left) 
      x-1
    EndIf
    If KeyboardPushed(#PB_Key_Right) 
      x+1 
    EndIf 
    If KeyboardPushed(#PB_Key_F5) 
      x+13 
    EndIf 
    If KeyboardPushed(#PB_Key_F6) 
      y-13 
      x+13 
    EndIf 
    If KeyboardPushed(#PB_Key_F7) 
      ;RotateSprite3D(1, 180, 0)  ; Was willst du hier mit einem Sprite-3D-Befehle? ... du hast überhaupt kein Sprite3D ... 
    EndIf 
  EndIf 
Until KeyboardPushed(#PB_KEY_ESCAPE)
MFG PMV

Verfasst: 02.01.2005 19:43
von Janiboy
Vielen dank für deine Hilfe (Auch wenns noch nicht so klappt)! Es ist mir etwas peinlich, aber ich bin eben neu: Wie bekommt man das hin, dass irgend eine farbe die man nie braucht zB türkis transparent wird?

Verfasst: 02.01.2005 20:14
von PMV
Ups -_- mir is grad aufgefallen das ...

Code: Alles auswählen

DisplayTransparentSprite(1, x, y)
falsch ist ... es müsste heißen

Code: Alles auswählen

DisplayTransparentSprite(AniFame, x, y) 
sorry
^^^habs auch grad noch schnell im Post drüber korigiert :D

Und jetzt zu deiner weiteren Frage.
TransparentSpriteColor() setzt die angegebene Farbe für ein paar Display-Befehle auf Transparent (z.B. DisplayTransparentSprite())
Das heißt du kannst damit immer nur pro Sprite 1 Farbe als Transparent definieren.
Willst du also eine bestimme Farbe als Transparent definieren, musst nur schauen, welche Farbwerte diese Farbe besitzt und diese dann mit TransparentSpriteColor() setzten.
die Farbwerte Rot = 255, Grün = 255, Blau = 255 ergeben Weiß.
Um also diese Farbe wie oben als Transparent zu definieren muss der Befehle TransparentSpriteColor(#Sprite, 255, 255, 255) aufgerufen werden. Wobei #Sprite jetzt für ein Sprite steht, welches vorher mit LoadSprite() erfolgreich geladen wurde.

Dafür gibs Tools, mit welchen du herrausfinden kannst als Anfänger, welche Farbwerte welche Farbe hat. Der Standart-PB-Editor müsst das sogar auch haben. Schau mal im Menü unter "Tools".

MFG PMV