ChaosStarfield

Programmation d'applications complexes
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

ChaosStarfield

Message par bombseb »

Salut je viens de mettre de la musique sur mon starfield avec un petit logo qui bouge en rythme (mais je fignolerais ca demain soir)

Les fichiers qui vont bien (logo + fichier ogg) sont ici : http://bombseb.free.fr/TEMP/Chaosstarfield/

le code source :

Code : Tout sélectionner

If InitSprite () = 0 
   MessageRequester ("Erreur", "Impossible d'initialiser directx", #PB_MessageRequester_Ok) 
   End 
EndIf 

; ; ---------- Mode fenetré ---------- 
; #WindowWidth    = 400 
; #WindowHeight   = 300 
; hWnd = OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Test") 
; If hwnd = 0 
;   MessageRequester ("Erreur", "Impossible d'ouvrir l'écran", #PB_MessageRequester_Ok) 
;   End 
; EndIf 
; 
; If OpenWindowedScreen(hWnd, 0, 0, #WindowWidth, #WindowHeight, 1, 0, 0) = 0 
;   MessageRequester ("Erreur", "Impossible d'ouvrir l'écran", #PB_MessageRequester_Ok) 
;   End 
; EndIf 
; ; ---------------------------------- 

; ou 

;---------- Plein écran  ---------- 
#WindowWidth    = 640 
#WindowHeight   = 480 
If OpenScreen(640, 480, 32, "Starfield") = 0 
   MessageRequester ("Erreur", "Impossible d'ouvrir l'écran", #PB_MessageRequester_Ok) 
   End 
EndIf 
;---------------------------------- 


InitKeyboard () 
ClearScreen (0,0,0) 
FlipBuffers () 
ClearScreen (0,0,0) 

; ---------- INIT ---------- 
#nb = 500
Dim x2.f(#nb) 
Dim y2.f(#nb) 
Dim decalx.f (#nb) 
Dim decaly.f (#nb) 
Dim dist.f(#nb) 
Dim col(#nb) 

For i = 1 To #nb 
  x2.f(i)   = (Random (256) - 128) 
  If x2(i) = 0 
    x2(i) = 1 
  EndIf 
  
  y2.f(i)   = (Random (256) - 128) 
  If y2(i) = 0 
    y2(i) = 1 
  EndIf 
  
  dist(i) = Random (20) 
  If dist(i) = 0 
    dist(i) = 1 
  EndIf 
  col (i) = Abs (x2(i)) + Abs (y2(i)) 
Next 


;------- init du son -------
If InitSound () = 0
  MessageRequester ("Erreur", "Impossible d'utiliser la carte son",#PB_MessageRequester_Ok) 
  End
EndIf

UseOGGSoundDecoder()

Result = CatchSound(1, ?chaos, 1182796)
If Result = 0
  MessageRequester ("Erreur", "Impossible d'ouvrir le fichier ogg",#PB_MessageRequester_Ok) 
  End
EndIf

; --- Logo ---
UseJPEGImageDecoder()

Result = CatchSprite(1, ?chaoslogo)
If result = 0
  MessageRequester ("Erreur", "Impossible d'ouvrir le logo",#PB_MessageRequester_Ok) 
  End
EndIf


Restore Chaosrythm
Read chaosbeat

PlaySound (1)
starttime = ElapsedMilliseconds()


Repeat 
  ExamineKeyboard () 
  ClearScreen(0,0,0) 
  
  
  If ElapsedMilliseconds() - starttime >= chaosbeat
    decalxbeat = Random (20) - Random (10)
    decalybeat = Random (20) - Random (10)
    Read chaosbeat
    If chaosbeat = -1
      Goto fin
    EndIf
    
    Else
    decalxbeat = decalxbeat * 0.8
    decalybeat = decalybeat * 0.8
  EndIf
  
  DisplaySprite(1, 100 + decalxbeat, 164 + decalybeat)

  
  If StartDrawing (ScreenOutput ()) 
  
  
    rx2.f = rx2 * 0.99 + (Random (10) - 5) / 1000 
    ry2.f = ry2 * 0.99 + (Random (10) - 5) / 1000 
    
    rx.f = rx * 0.99 + rx2 
    ry.f = ry * 0.99 + ry2 
  
    For i = 1 To #nb 
      
      x2.f(i) = rx * dist (i) / 3 + x2(i) * 1.005
      y2.f(i) = ry * dist (i) / 3 + y2(i) * 1.005
      
      x.f = (#WindowWidth / 2)  + x2(i) + decalx(i) * dist(i) 
      y.f = (#WindowHeight / 2) + y2(i) + decaly(i) * dist(i) 
  
      If x < 0 Or x > #WindowWidth-1 Or y < 0 Or y > #WindowHeight-1
          x2.f(i)   = (Random (256) - 128) 
          If x2(i) = 0 
            x2(i) = 1 
          EndIf 
          
          y2.f(i)   = (Random (256) - 128) 
          If y2(i) = 0 
            y2(i) = 1 
          EndIf 
          
          dist.f(i) = Random (20) 
          If dist(i) = 0 
            dist(i) = 1 
          EndIf 
          
          decalx.f (i) = -rx * dist (i) 
          decaly.f (i) = -ry * dist (i) 
          
          col (i) = Abs (x2(i)) + Abs (y2(i)) 
      Else 
          
        Plot (x,y,RGB (col(i),col(i),col(i))) 
          
      EndIf 
    Next 
    StopDrawing () 
  EndIf  
  
  FlipBuffers () 
  
  Delay (15)
Until KeyboardPushed (#PB_Key_Escape)

Fin :
StopSound (1)
End


DataSection
chaos :   IncludeBinary "chaosseb.ogg"
chaoslogo : IncludeBinary "chaosstarfieldlogo.jpg"
chaosrythm : 
      Data.l 375,609,1093,1421,2062,2359,2968,3265,3859,4171,4437,5000,5375,5984,6296,6875,7203,7812,8109,8421,9015,9359
      Data.l 9937,10281,10843,11203,11765,12109,12421,13015,13359,13921,14265,14906,15250,15812,16156,16453,17015,17390
      Data.l 17968,18296,18890,19234,19828,20093,20406,21000,21375,21984,22328,22937,23265,23828,24140,24437,25000,25343
      Data.l 25984,26328,26890,27234,27781,28078,28609,29093,29640,30171,30656,31187,31671,32171,32656,33156,33656,34156
      Data.l 34640,35125,35625,36109,36593,37109,37593,38093,38625,39109,39640,40125,40609,41140,41640,42109,42484,43093
      Data.l 43421,44031,44328,44937,45250,45859,46156,46578,47031,47375,47968,48312,48921,49234,49796,50109,50406,50968
      Data.l 51359,51921,52296,52859,53203,53734,54062,54375,54968,55359,55953,56296,56859,57234,57765,58140,58640,59031
      Data.l 59375,59968,60312,60921,61265,61828,62125,62421, -1
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Je suis devenu parano alors j'ai inspecté le code avant :mad:
mais bon y'avait rien de mal foutu :lol: (pas envi d'un crash lol)

La démo est sympa ^^
j'aime bien la musique et c'est ni trop court ni trop long
tu devrais essayer de le coder en boucle maintenant ;)

Dri :10:
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

ah oui le coder en boucle mais je ne sais pas trop comment faire car il y a une intro dans la musique, il ne faudrait pas que l'intro revienne à chaque fois ca ferais bizarre...
peut etre en faisant 2 fichiers ogg (un pour l'intro et un pour le reste) et je ferais boucler le 2eme à la rigueur
Répondre