Grafik flagge

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Cool

Beitrag von Danilo »

Green Snake hat geschrieben:geht das auch so, dass die seite rechts und links fest sind? sich also ur der inhalt verformt?
Ja, geht schon.

Hier mal ein einstellbares Beispiel:

Code: Alles auswählen

;
; by Danilo, 18.04.2005
;
If InitSprite()=0 Or InitKeyboard()=0
  MessageRequester("ERROR","Cant initialize screen !",#MB_ICONERROR):End
EndIf

#w  = 1024;1280
#h  =  768;1024
#sn = "sinus"

; hier einstellen:
#wellen      = 1
#wellenhoehe = 20
#speed       = 0.1


#PI = 3.141592


If OpenScreen(#w,#h,32,#sn)=0
 If OpenScreen(#w,#h,24,#sn)=0
  If OpenScreen(#w,#h,16,#sn)=0
   If OpenScreen(#w,#h,08,#sn)=0
     MessageRequester("ERROR","Cant open screen !",#MB_ICONERROR):End
EndIf:EndIf:EndIf:EndIf

If CreateSprite(1,500,300)=0      : #geladen = 0
;If LoadSprite(1,"danilo.bmp")=0 : #geladen = 1
  CloseScreen()
  MessageRequester("ERROR","Cant load sprite !",#MB_ICONERROR):End
EndIf

CompilerIf #geladen=0
  If StartDrawing(SpriteOutput(1))
    Box(0,0,500,100,$080808)
    Box(0,100,500,100,$0000FF)
    Box(0,200,500,100,$00FFFF)
    StopDrawing()
  EndIf
CompilerEndIf

sw = SpriteWidth(1)
sh = SpriteHeight(1)

factor.f = #wellen*#PI/(sw*0.5)

oldtime = ElapsedMilliseconds()+20

Repeat
  ExamineKeyboard()
  While oldtime > ElapsedMilliseconds():Delay(1):Wend
  oldtime = ElapsedMilliseconds()+20
  FlipBuffers(0)
  If IsScreenActive()
    ClearScreen($FF,$88,$33)
    
    y.f + #speed
    If y > 2*#PI : y = 0 : EndIf

    x = #w/2-sw/2
    offset_y.f = Sin(y)*#wellenhoehe  ; offset_y hinzugefgt fr feststehende "flagge"
    For a = 0 To sw
      a2.f + 2*#PI/sw
      ClipSprite(1,a,0,1,sh)
      DisplaySprite(1,x,(#h/2-sh/2)-offset_y.f+Sin(y+factor*a)*#wellenhoehe) ; offset_y hinzugefgt
      x+1
    Next a
  EndIf
Until KeyboardPushed(#PB_KEY_ESCAPE)
Am Anfang des Sources hast Du 3 Konstanten:
#wellen gibt an wieviele Wellen es sein sollen (1,2,3,4,5,..).
#wellenhoehe gibt den Ausschlag der Welle an.
#speed gibt die Geschwindigkeit der Wellenbewegung an.

Mehr brauchst Du eigentlich nicht.

Hoffe das hilft.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Genau

Beitrag von Green Snake »

super, genau das meinte ich, danke dir
-.-"
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

Danilo hast Du noch mehr solche Snippets rumliegen? ;)
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Gamer hat geschrieben:Danilo hast Du noch mehr solche Snippets rumliegen? ;)
Die werden angefertigt wenn danach gefragt wird und ich
grad Lust habe.
Das "C++ forever!" hatte ich zufällig selbst einen Tag vorher
gemacht, da ich da schon zu müde war etwas Vernünftiges zu
machen - also so ein Mini-Langeweile-Schnipsel aus Spaß. :)
Der Rest war dann auf Anfrage, aber das waren ja auch immer
nur minimale Änderungen von der ersten Standard-Version.

Wenn Du also Hilfe bei etwas brauchst oder etwas bestimmtes
suchst: einfach im Forum fragen.

Irgendwer antwortet meistens schon... ;)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten