Page 2 sur 3

Publié : sam. 21/août/2004 8:59
par Backup
super !!!


2 petite choses

1- ça manque de music (module)

2 - ton fond d'etoile est "plat" !! dommage

pour faire un fond d'etoile "profond"
tu cree des etoile de differents niveau de gris ,et suivant les couleurs tu les fait ce deplace a des vitesse differentes

ex : les plus foncés vont plus lentement que les plus clair ect ...
cela donnera l'illusion de la profondeur !!!

tu as plusieurs choix soit plusieurs plan en superposition d'image transparente qui bouge a des vitesses differente

soit des sprites "groupé" par couleurs qui avance avec des vitesse lié a leur couleurs !!

voila ça c'est la theorie , a toi la pratique !!

:lol:

sinon Bravo pour ta demo !!



voici un code (je sais plus a qui j'ai piqué ça désolé !! )

Code : Tout sélectionner

#dobro=1
#Police=1
SSum.w = 8000 ; Amount of Stars


Cspeed.f=1
CameraZ.f=0

Gosub InitStarField
;-------- Init all needed Stuff --------
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
    MessageBox_ (0,"Can't open DirectX 7 or later", "blahhhh", #MB_ICONINFORMATION|#MB_OK)
    End
EndIf
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
WindowID = OpenWindow(1, 0, 0, EcranX, EcranY ,  #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "hello") 

WindowID = WindowID(1) 
If OpenWindowedScreen(WindowID,0,0,EcranX,EcranY,1,1,1) = 0 
    MessageBox_ (0,"Could not open screen", "blahhh blaa", #MB_ICONINFORMATION|#MB_OK) 
    End 
EndIf

SetFrameRate(60) 




    

    



Repeat
   
    event=WindowEvent()
    StartDrawing( ScreenOutput()) 
    ; ici on dessine sur l'ecran avec les commande 2D
    ; on peut rajouter des sprites
     
    DrawingMode(1)
    Gosub DrawStarField
    Gosub MoveCamera
    
    StopDrawing() 
    
    
    
    
    ;DisplaySprite(#dobro, de, ysprite) 
    
    
    
    


  


FlipBuffers():; affiche l'ecran
ClearScreen(0, 0, 0) :;efface l'ecran

Until event=#PB_Event_CloseWindow 
; #### INITSTARFIELD ####
InitStarField:
; Structure of a star ...
Structure a3DStar
    x.f ; X-Coordinate
    y.f ; Y-Coordinate
    z.f ; Z-Coordinate
EndStructure

; Init Starfield ...
Dim Stars.a3DStar(SSum)
For dummy = 0 To SSum
    Stars(dummy)\x = Random(10000)-5000
    Stars(dummy)\y = Random(10000)-5000
    Stars(dummy)\z = 100 + Random(1000)
Next dummy
Return


; ### Move Camera ###
MoveCamera:
If CameraZ>1000
    Direction=-1
ElseIf CameraZ<-1000
    Direction=1
EndIf
If Direction=1 And Cspeed<20
    Cspeed=Cspeed+0.01
ElseIf Direction=-1 And Cspeed>-20
    Cspeed=Cspeed-0.01
EndIf
CameraZ=CameraZ+Cspeed
Return



; #### Draw StarField ####
DrawStarField:
For dummy = 0 To SSum
    If Stars(dummy)\z<CameraZ
        Stars(dummy)\z=CameraZ+1000
    ElseIf Stars(dummy)\z>(CameraZ+1000)
        Stars(dummy)\z=CameraZ
    EndIf
    
    SX = Stars(dummy)\x / (Stars(dummy)\z-CameraZ)*100+EcranX/2
    SY = Stars(dummy)\y / (Stars(dummy)\z-CameraZ)*100+EcranY/2
    
    If SX<EcranX And SY<EcranY And SX>0 And SY>0 
        b.f = 255-(((Stars(dummy)\z)-CameraZ)*(255./1000.))
        c=Int(b)
        rouge =Random(255)+1
        vert=Random(255)+1
        bleu=Random(255)+1
       ;Plot ( SX, SY, RGB(rouge,vert,bleu))
        
        Circle(SX, SY, 1 ,RGB(rouge,vert,bleu) )
       
        
    EndIf 
    
Next dummy
Return
et un autre !!!



Code : Tout sélectionner

#dobro=1
#Police=1
SSum.w = 8000 ; Amount of Stars


Cspeed.f=1
CameraZ.f=0


; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
WindowID = OpenWindow(1, 0, 0, EcranX, EcranY ,  #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "hello") 

WindowID = WindowID(1) 
If OpenWindowedScreen(WindowID,0,0,EcranX,EcranY,1,1,1) = 0 
    MessageBox_ (0,"Could not open screen", "blahhh blaa", #MB_ICONINFORMATION|#MB_OK) 
    End 
EndIf


SetFrameRate(60) 
xmax.w=10000 
ymax.w=10000 
zmax.w=2000 
sspeed.w=-10 
zmin.w=10 
num.w=5000 ;get slow around 2500-3000 and i have 2.66 cpu 
centerx.w=EcranX/2 
centery.w=EcranY/2 
zoom.w=60 
shade.w=0 
Dim sx(num) 
Dim sy(num) 
Dim sz(num) 
For i=0 To num 
    sx(i)=Random(xmax)-xmax/2 
    sy(i)=Random(ymax)-ymax/2 
    sz(i)=Random(zmax) 
Next i 





Repeat
   
    event=WindowEvent()
    StartDrawing( ScreenOutput()) 
    ; ici on dessine sur l'ecran avec les commande 2D
    ; on peut rajouter des sprites
    For i=0 To num 
        sz(i)=sz(i)+sspeed 
        If sz(i)<=zmin 
            sz(i)=zmax 
            sx(i)=Random(xmax)-xmax/2 
            sy(i)=Random(ymax)-ymax/2 
        EndIf 
        screenx.w=(sx(i)*zoom)/sz(i)+centerx 
        screeny.w=(-sy(i)*zoom)/sz(i)+centery 
        shade=Int(255/zmax* -sz(i)) 
        If screenx < EcranX
            If screeny < EcranY
                If screenx > 0 
                    If screeny > 0 
                        ;Plot(screenx,screeny,RGB(shade,shade,shade)) 
                        rouge=Random(255)+1
                        vert=Random(255)+1
                        bleu=Random(255)+1
                        Circle(screenx, screeny,1,RGB(rouge ,vert,bleu)) 
                    EndIf 
                EndIf 
            EndIf 
        EndIf 
    Next i 
    StopDrawing() 
    
    
    ;DisplaySprite(#dobro, de, ysprite) 
  
FlipBuffers():; affiche l'ecran
ClearScreen(0, 0, 0) :;efface l'ecran

Until event=#PB_Event_CloseWindow 





Publié : sam. 21/août/2004 12:19
par KarLKoX
Chris a écrit :
Oliv a écrit :Garzul, Karox t'as déjà donné des liens
garzul a écrit :Heu merci kaklox mais...
Est-ce que vous allez réussir à orthographier son pseudo correctement au moins une fois, dans ce post :lol:

KarLKoX
Merci ;)
Oliv a écrit :@dri : cool !!!!!!
@Dobro : et ça t'amuse :twisted: !!! :lol: :lol:
@Chris : Comme je l'ai déjà dis à dobro qui rallait (encore, il va remplacer régis) sur une lettre qui manquait, je change de Pc et de clavier, il y en a un plus sensible que l'autre, alors....EXCUSE MOI KarLKoX (vive le copier/coller)
Po grâve :)

Publié : sam. 21/août/2004 13:50
par garzul
:D Merci pour tes encouragement dobro et c'est super le code que tu ma paséé il faudrat que je l e regarde un de ses quatre en tout cas merci mais comment remédier au ptit bug avec ma démos ?

Publié : sam. 21/août/2004 15:35
par garzul
:D Qui pourrait m'aprofondir sur les cosinus et les sinus sur un cercle car j'arrive pas trop bien a assimiler sa ?

Publié : sam. 21/août/2004 19:01
par Le Soldat Inconnu

Publié : sam. 21/août/2004 19:08
par garzul
:D Merci j'avais oublié ce bon vieux forum (meme si je ne l'ai pas connu car je suis arrivée bien aprés merci régis ^^

Publié : jeu. 26/août/2004 10:25
par Psycode
Tracer un cercle par soit meme avec des point, c'est mathématique car une distance entre 2 point se calcule come ceci : racine carré de x de b - x de a au carré + y de b - y de a au carré :lol:

Publié : jeu. 26/août/2004 14:26
par Heis Spiter
Ya plus simple
Racine carré de coordonnée du premier vecteur au carré + coordonnée du second vecteur au carré. Au lieu de calcluer les coordonénes de deux vecteur dans la racine, c'est mieux de les calculer à l'exterieur, c'est plus lisible :) Et après tu fous le tout :lol:

Publié : jeu. 26/août/2004 14:39
par Chris
Encore plus simple:

Code : Tout sélectionner

Cercle = #PrendreCouvercleBoiteConserve|#PoserCouvercleSurEcran|#PrendreStyloFeutre|#TracerAutourCouvercle|#RetirerCouvercle
:10:

Publié : jeu. 26/août/2004 15:01
par Backup
voila un cercle !!!
:D

Code : Tout sélectionner




; code by Dobro http://michel.dobro.free.fr/

#dobro=1
#Police=1
#Sprite=1
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 50, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
WindowID = OpenWindow(1, 0, 0, EcranX, EcranY,  #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "hello") 
WindowID = WindowID(1) 
Result = OpenWindowedScreen(WindowID,0,0, EcranX, EcranY, 1, 0,0)
Resultat = InitMouse() 
taille_du_cercle=200 
nombre_de_point=360 ; ceci determine la resolution (nombre de points)
Repeat
    ExamineMouse() 
    Event=WaitWindowEvent()
    
    StartDrawing( ScreenOutput())  
    compt+1  
    If compt=nombre_de_point :compt=0:EndIf ; on a fait le tour ?? 
   
    x=taille_du_cercle* Cos( compt*(2*3.1415926/nombre_de_point)) + (EcranX / 2) ; la formule du cercle /360 = 360 points
    y=taille_du_cercle * Sin( compt*(2*3.1415926/nombre_de_point)) + (EcranY  / 2) ; la formule du cercle
    Box(x, y,2, 2 ,RGB(255,255,255))
    CallDebugger
    Debug compt
    StopDrawing() 
    FlipBuffers():; affiche l'ecran 
    Event=WindowEvent() 
    If MouseButton(2)
        End
    EndIf
Until Event=#PB_Event_CloseWindow  

Publié : jeu. 26/août/2004 16:09
par Le Soldat Inconnu
ou un aute :
http://perso.wanadoo.fr/lesoldatinconnu ... lissage.pb

légèrement plus barbare :jesors:

Publié : jeu. 26/août/2004 17:40
par Backup
oui ! mais 100000 de fois plus rapide et plus "pro" !! :D

ps (tu peut rester !!) :lol:

Publié : jeu. 26/août/2004 17:48
par Psycode
Juste comme ca, en trichant, j'imagine faire un quart de cercle avec juste X plot (X est a definir pour ne pas trop avoir de "faces") le tout réunis par des LineXY. Ca, c'est rapide !!!!! (les sin et cos serait pris d'une banque precalculé => CA c'est encore + + + rapide) :wink:

Publié : jeu. 26/août/2004 20:22
par Le Soldat Inconnu
et c'est moche ... no comment :mrgreen:

Publié : jeu. 26/août/2004 20:59
par Psycode
Des plot tous les 5 degrées, ca fait 180 plot et 180 lineXY + la copie des 3/4 du cercle manquant soit 720 plot et 720 lineXY.... Mouai, faut voir :x