Mini intro

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

Bravo, bravissimo (avec un peu de retard, décalage horaire oblige )! Quelle collaboration, ça c'est de l'efficacité !
C'est comme un boeuf(le boeuf musical bien sûr!)
:D :P :D
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

J'avais loupé ce joli post, bravo à vous les gars, on se croirait revenu sous nos bons vieux 16 bits
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

Message par tonton »

un spectre du pacman échapé!!!!!! 8O

Code : Tout sélectionner




Declare Ondulation(x,Y,Texte.s,r,v,b) 

; ***** variables a OLIV ********* 
          ; Variables 

#HauteurSin = 25 ; Coef qui joue sur la hauteur de la sinusoide 
#LargeurSin = 50 ; Coef qui joue sur la largeur de la sinusoide 
#VitesseAngle = 1 * #PI / 50 ; vitesse de modification de l'angle de départ du texte 
#Vitesse = 50 ; Temps du Delay() qui ralentit/augmente l'animation. 
#font =1 
#font2=2 
Global angle.f, long_text_bas 
          ; **************************************** 

Global angle1,amplitude 
Global amplitude1=2 
Texte.s="PUREBASIC 4.10" 
;************************** raster palette **************************** 
Global Dim palette.l(500) 
For i = 0 To 500 
  angle.f = angle + ((2 * #PI) / 500) 
  palette(i) = RGB (Abs (Cos (angle + (4*#PI/6))* 255),Abs (Cos (angle + #PI/3)* 255), Abs (Cos (angle)* 255)) 
Next 
Vitesse.f = 8.2 ;donne scroling vert ou hori suivant 
amplitude3.f =120 ; profondeur des dents 
pas.f = 0.3 ; nombre de dent de scie 
ss=2 
; ****************************************************** 
Buffer$=Space(128) 
mciSendString_("open  5.MID type sequencer alias mid",Buffer$,128,0) 
mciSendString_("play mid",0,0,0) 


InitSprite()                                    ; Initialise les sprites 
InitKeyboard()                                  ; Initialise le clavier 

LoadFont ( #font , "Arial" ,40) 
LoadFont(#font2, "arial", 20 ,#PB_Font_Italic ) 

#sprite=1 ; on donne un numero au sprite 


depx=4                                          ; deplacement horizontal 
depy=4                                          ; deplacement vertical 
etx=0 
ety=0 
passsx=5
passsy=5
yex=2
yey=2
passsx1=8
passsy1=8
yex1=2
yey1=2
passsx2=2
passsy2=2
yex2=2
yey2=2
  

If ExamineDesktops()                            ; Liste les bureaux 
  
  Width  = DesktopWidth(0)                      ; Largeur actuelle 
  Height = DesktopHeight(0)                     ; Hauteur actuelle 
  Depth  = DesktopDepth(0)                      ; Profondeur de couleurs actuelle 
  CentreX=Width/2 
  EcranY3=Width 
  Rien$ = "BERNARD 13"                                ; Titre de l'application à B13 
  
  If OpenScreen(Width, Height, Depth, "Intro")  ; Ouvre l'écran 
    
    
    CreateSprite(#sprite,32,32) ; on cree un sprite de 32 par 32 
    StartDrawing(SpriteOutput(#sprite)) ; on va dessiner dedans !! 
    Circle(16,16,16,RGB(0,0,255)) ; un rond bleu 
    StopDrawing() ; voila notre sprite est pret !! :D 
    ; on va pouvoir l'apeler par son nom !! (#sprite) 
    xsprite_pas=10 ; ceci va determiner le sens du sprite  pour les X et sa vitesse de deplacement 
    ysprite_pas=10; ceci va determiner le sens du sprite  pour les Y et sa vitesse de deplacement 
    
    CreateImage(100, Width, Height)  ; on cree un image de la taille de l'ecran (on exagere un peu :D) 
    StartDrawing( ImageOutput(100)) ; on va dessiner dans une image reperé   "100" 
    FrontColor(RGB($0,$FF,$FF)) ; couleur d'ecriture 
    BackColor(RGB(0, 0, 0)) ; couleur de fons 
    
    DrawingFont(FontID(#font2)) 
    DrawingMode(1) 
    DrawText(0,0,Texte.s) ; on ecrit "PUREBASIC 4.10" dedans notre image 
    StopDrawing() 
    
    ; ceci va lire l'image ligne par ligne et recreer autant d'image qu'il y a de ligne !! 
    For t=0 To 100 
      GrabImage(100, t, 0, t, 250,1)  ; voila on prend un ligne et on en fait une image d'une ligne de large 1 pixel de haut 
    Next t ; on a un bon stock de ligne la :D 101 pour etre exact :) 
    
    
    
    Repeat                                      ; Boucle 
      
      ExamineKeyboard()                         ; Scanne l'état du clavier 
      
      StartDrawing(ScreenOutput())              ; Démarre le dessin dans le buffer 
      
      
      
      ; ************************ Raster  arriere plan :D *********************************** 
      artichaut = artichaut+Cos( 36)/10 
      artison =artison+Sin( 36) 
      a = Sin ((x3 + artichaut)/(500 + Sin (x3/100)*100)) * 75 + 75 
      For Y3=1 To EcranY3-1 
        artichaut = Cos ((Y3 + artison)/(300 + Cos (Y3/100)*100)) * 75 + 75 
        coul = a + artichaut 
        If coul > 500 
          coul = coul-500 
        EndIf 
        coul = palette (coul) 
        i=Y3 
        amplitude3= amplitude3+ss 
        If amplitude3>120:ss=-ss:EndIf 
        If amplitude3<-120:ss=-0.001:ss=-ss:EndIf    
        x3=(CentreX)+ Sin((angle3 + i* pas*10  )  * 0.0174533) * amplitude3 
        LineXY(x3+Sin((angle3 + i* pas*3  )  * 0.0174533) * amplitude3 ,Y3,x+500+Sin((angle3 + i* pas*5  )  * 0.0174533) * amplitude3 ,Y3,coul) 
      Next Y3 
      angle3=angle3 + Vitesse 
      ; ******************************************************************************** 
      
      
      
      
      
      
      For y1= 0 To 100 ; on va ré afficher nos 101 lignes mais en les positionant par rapport a une sinuzoide := 
        DrawingFont(FontID(#font2)) 
        angle1=angle1+1 :If angle1=360*10: angle1=0 :EndIf 
        x1+(Sin(angle1*2*#PI/50)*amplitude1) ; le X varie en fonction de Sin() 
        DrawImage( ImageID(y1), x1+y1, y1,Width,1) 
      Next y1   ; voila voila !! :D 
      
      
      
      ;--------------- simulateur d'antenne cassée -------------------- 
      recep +20         ;pas de la figne de synchro 
      If recep>Height-4   ;il elle est en bas 
        recep =2          ;on la remet en haut 
      EndIf 
      LineXY(0,recep,Width,recep,RGB(110,110,110))    ;lignes synchro 
      LineXY(0,recep-1,Width,recep-1,RGB(90,90,90))    
      LineXY(0,recep+1,Width,recep+1,RGB(90,90,90)) 
      LineXY(0,recep-2,Width,recep-2,RGB(70,70,70)) 
      LineXY(0,recep+2,Width,recep+3,RGB(70,70,70)) 
      hh=Height-200 ; determine la bande du 16/9 eme 
      vv=Width 
      For etoile =0 To 10000             ;nombre de fourmis 
        etx=Random(vv)                   ;position aleatoire des fourmis en coordonné x 
        ety=Random(hh)+100      ;position aleatoire des fourmis en coordonné y 

        cr=Random(255)+100 
        cv=Random(255)+100 
        cb=Random(255)+100 
        Plot (etx,ety,RGB(r,v,b))     ;plusieur "plot" pour donner du relief a la foumis 
        Plot (etx+1,ety,RGB(cr-20,cv-20,cb-20)) 
        Plot (etx-1,ety,RGB(cr-20,cv-20,cb-20)) 
        Plot (etx,ety+1,RGB(cr-20,cv-20,cb-20)) 
        Plot (etx,ety-1,RGB(cr-20,cv-20,cb-20)) 
        Plot (etx+1,ety+1,RGB(cr-100,cv-100,cb-100)) 
        Plot (etx-1,ety-1,RGB(cr-100,cv-100,cb-100)) 
        Plot (etx-1,ety+1,RGB(cr-100,cv-100,cb-100)) 
        Plot (etx+1,ety-1,RGB(cr-100,cv-100,cb-100)) 
      Next 
      LineXY(0,ety,Width,ety,RGB(150,150,150))  ;ligne horizontal parasite 
      LineXY(0,ety-1,Width,ety-1,RGB(120,120,120)) 
      LineXY(0,ety+1,Width,ety+1,RGB(120,120,120)) 
      
      ;---------  fin du simulateur d antenne cassée ------------------ 
      
      
      DrawText((Width/2 - TextWidth(Rien$)/2)+a, (Height/2 - TextHeight(Rien$)/2)+b, "BERNARD 13", $FFFFFF, $000000) ; Dessine 
      
      a+depx                                     ;on deplace la position du texte sur l horizontal 
      b+depy                                     ;on deplace la position du texte sur la vertical 
      If (Width/2 - TextWidth(Rien$)/2)+a>Width-TextWidth(Rien$)  ;si le texte depasse la largeure de l' écran 
        depx=-depx                                ;on inverse le pas horizontal en négatif 
      EndIf 
      If (Width/2 - TextWidth(Rien$)/2)+a<0      ;si le texte  depasse a gauche de l' écran 
        depx=-depx                                ;on inverse le pas horizontal en positif 
      EndIf 
      
      If (Height/2 - TextHeight(Rien$)/2)+b>Height-TextHeight(Rien$);si le texte depasse la hauteur de l' écran 
        depy=-depy                                 ;on inverse le pas vertical en negatif 
      EndIf 
      If (Height/2 - TextHeight(Rien$)/2)+b<0    ;si le texte  depasse en base de l' écran 
        depy=-depy                                ;on inverse le pas vertical en positif 
      EndIf 
      
      
      ;------------- routine boulles en rotation --------- 
      rot.f+0.1 
      For colon= 0 To 8           ;nombre de ligne  de boulles en rotation!! ou collone pitain je sais plus 
        For ligne =0 To 8           ;nombre de collone de boulles en rotation!! ou ligne repitain je sais pas 
          posx=(colon*50)-200             ; pfff ca me gonffle les comment... 
          posy=(ligne*50)-300 
          ix=Cos(rot) * posx - Sin(rot) * posy 
          iy=Sin(rot) * posx + Cos(rot) * posy 
          iz1=Sin(rot) * iy + Cos(rot) * 100 
          cix=1000*ix/(1000-iz1) 
          ciy=1000*(Cos(rot) * iy - Sin(rot) * 100)/(1000-iz1) 
          Circle(cix+100+Width/2,ciy+ 100+Height/2, 20 ,RGB(150,50,50)) 
          Circle(cix+102+Width/2,ciy+ 98+Height/2, 16 ,RGB(170,70,70)) 
          Circle(cix+104+Width/2,ciy+ 96+Height/2, 12 ,RGB(190,90,90)) 
          Circle(cix+107+Width/2,ciy+ 92+Height/2, 4 ,RGB(250,250,250)) 
        Next ligne 
      Next colon 
      ;-------------- fin boulles en rotation -------- 
      
        ;-------------bebut spectre------------
      
      avx+passsx*veroux
      avy+passsy*verouy
      yyex=yex*veroux
      yyey=yey*verouy
      varix=Random(100)
      variy=Random(100)
      varix1=Random(100)
      variy1=Random(100)
      varix2=Random(100)
      variy2=Random(100)
    
       If avx>Width-150 Or  avx<0 Or varix=50
       passsx=-passsx
       veroux=1
       verouy=0 
       yex=-yex
       EndIf
       If avy>Height-150 Or  avy<0 Or variy=50
       passsy=-passsy
       veroux=0
       verouy=1 
       yey=-yey
       EndIf
       avx0=avx
       avy0=avy
       yyex0=yyex
       yyey0=yyey
       coul=$0000ff
       Gosub spectre
        
        
      avx1+passsx1*veroux1
      avy1+passsy1*verouy1
      yyex1=yex1*veroux1
      yyey1=yey1*verouy1
     
     
       If avx1>Width-150 Or  avx1<0 Or varix1=50
       passsx1=-passsx1
       veroux1=1
       verouy1=0 
       yex1=-yex1
       EndIf
       If avy1>Height-150 Or  avy1<0 Or variy1=50
       passsy1=-passsy1
       veroux1=0
       verouy1=1 
       yey1=-yey1
       EndIf
        avx0=avx1
       avy0=avy1
       yyex0=yyex1
       yyey0=yyey1
       coul=$ff0000
       Gosub spectre
        
        
      avx2+passsx2*veroux2
      avy2+passsy2*verouy2
      yyex2=yex2*veroux2
      yyey2=yey2*verouy2

       If avx2>Width-150 Or  avx2<0 Or varix2=50
       passsx2=-passsx2
       veroux2=1
       verouy2=0 
       yex2=-yex2
       EndIf
       If avy2>Height-150 Or  avy2<0 Or variy2=50
       passsy2=-passsy2
       veroux2=0
       verouy2=1 
       yey2=-yey2
       EndIf
        avx0=avx2
       avy0=avy2
       yyex0=yyex2
       yyey0=yyey2
       coul=$00ff00
       Gosub spectre
        
       
      
      ;--------------fin spetcre--------------
      
           ;Moi RV et mon pixel blanc 
  
      Plot(10,10,RGB(255,255,255))        ; un point aux coordonnées 10,10 (coin en haut a gauche) de couleur rgb(255,255,255) blanc donc 
                   
      
      StopDrawing()                             ; C'est fini 
      
      
      
      ; on va tester si le sprite va sortir de l'ecran 
      ; et fabriquer un rebond par inversion de la coordonée  au  cas ou ... 
      
      x_sprite=x_sprite + xsprite_pas ; on lance l'animation de la coordonées X 
      y_sprite=y_sprite + ysprite_pas ; on lance l'animation de la coordonées Y 
      
      ; on test les sorties d'ecran 
      If  x_sprite>Width-32 Or x_sprite<0  ; si la coordonée X du sprite est superieur a la largeur de l'ecran (sortie a droite) ou plus petit que zero (sortie a gauche) 
        ; le "-32" sert a ce que la detection de la sortie se fasse a droite du Sprite 
        xsprite_pas=-xsprite_pas ; on inverse le sens des x , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des X 
        
      EndIf 
      If  y_sprite>Height-32 Or y_sprite<0  ; si la coordonée Y du sprite est superieur a la lhauteur de l'ecran (sortie en bas) ou plus petit que zero (sortie en haut) 
        ; le "-32" sert a ce que la detection de la sortie se fasse au dessous du Sprite 
        ysprite_pas=-ysprite_pas ; on inverse le sens des Y , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des Y 
        
      EndIf 
      
      DisplayTransparentSprite(#sprite,x_sprite,y_sprite) ; on affiche le Sprite aux coordonées 
      
      son=Random(1000)+500 
      
      text.s="petite demo pour Bernard 13" 
      
      xt=xt+2 :If xt>Width:xt=-500:EndIf ; le text arrive a droite ? on le remet a gauche !! 
      yt=Height-125 ; emplacement verticale de la sinuzoide 
      Ondulation(xt,yt,text.s,cr,cv,cb) ; appel de la procedure a OLIV on donne les coordonées que l'on veux, le text, et la couleur 
      
      

      
      
      
      
      FlipBuffers()                             ; Inverse les buffers 
      ClearScreen(0)                            ; Efface l'écran 
    Until KeyboardPushed(#PB_Key_Escape)        ; On s'en va!!! 
    mciSendString_("CLOSE MIDI",0,0,0) 
  EndIf 
EndIf 



End                                             ; Adios! 

        spectre:
        Circle(100+avx0, 100+avy0, 20 ,coul) 
        Box(80+avx0,100+avy0, 40, 25 ,coul) 
        Circle(88+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
        Circle(100+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
        Circle(112+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
        Box(85+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
        Box(97+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
        Box(109+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
        Circle(108+avx0, 95+avy0, 5 ,RGB(255,255,255)) 
        Circle(94+avx0, 95+avy0, 5 ,RGB(255,255,255))
        Circle(108+avx0+yyex0, 95+avy0+yyey0, 3 ,RGB(0,0,0)) 
        Circle(94+avx0+yyex0, 95+avy0+yyey0, 3 ,RGB(0,0,0)) 
        Return


Procedure Ondulation(x,Y,Texte.s,r,v,b) 
  ; procedure realisé par OLIV 
  
  StartDrawing ( ScreenOutput ()) ; Pour pouvoir utiliser les commandes des dessin 2D. 
  DrawingFont ( FontID ( #font )) ; On change la police 
  DrawingMode (1) ; On selectionne le mode pour ne pas avoir de fond derrière les lettres. 
  FrontColor ( RGB (r,v,b) ) ; On change la couleur. 
  
  angle + #VitesseAngle ; Angle de départ de la sinusoide en radian 
  If angle >= 2 * #PI 
    angle = 0 
  EndIf 
  ; On affiche toute les lettres 
  posx = 10 ; Position du caractère 
  For n = 1 To Len (Texte) ; Pour chaque lettre du texte 
    Lettre.s = Mid (Texte, n, 1) ; on récupère la lettre à la position n 
    posy = 50 + #HauteurSin * Sin (angle + posx / #LargeurSin ) ; on calcul la position en Y de la lettre 
    ; On part du centre de l'image (50) puis on ajoute un sin 
    ; #HauteurSin fait varier l'amplitude du mouvement 
    ; l'angle mis dans le sinus est d'abord composé de l'angle de départ d'affichage du texte (Angle) 
    ; puis on augmente l'angle au fur et à mesure que l'on affiche des lettres avec le coefficient #LargeurSin qui permet de faire varier la largeur de la sinusoide 
    
    DrawText (x+posx, Y+posy,Lettre) 
    posx + TextWidth (Lettre) 
  Next 
  StopDrawing () ; On signife que l'on arrête les fonctions dessin 2D. 
EndProcedure   
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Un raster de plus
Et je vous encourage à créer des structures pour bien séparer les variables de chaque effet :)

[EDIT]
J'ai ajouté une petite procédure pour que chacun puisse ajouter son nom facilement , prendre exemple sur la variable TexteRaster.

Code : Tout sélectionner

Declare Ondulation(x,Y,Texte.s,r,v,b)
; ***** variables a OLIV *********
          ; Variables

#HauteurSin = 25 ; Coef qui joue sur la hauteur de la sinusoide
#LargeurSin = 50 ; Coef qui joue sur la largeur de la sinusoide
#VitesseAngle = 1 * #PI / 50 ; vitesse de modification de l'angle de départ du texte
#Vitesse = 50 ; Temps du Delay() qui ralentit/augmente l'animation.
#font =1
#font2=2
Global angle.f, long_text_bas
          ; ****************************************

Global angle1,amplitude
Global amplitude1=2

Texte.s="PUREBASIC 4.10"
;************************** raster palette ****************************
Global Dim palette.l(500)
For i = 0 To 500
  angle.f = angle + ((2 * #PI) / 500)
  palette(i) = RGB (Abs (Cos (angle + (4*#PI/6))* 255),Abs (Cos (angle + #PI/3)* 255), Abs (Cos (angle)* 255))
Next
Vitesse.f = 8.2 ;donne scroling vert ou hori suivant
amplitude3.f =120 ; profondeur des dents
pas.f = 0.3 ; nombre de dent de scie
ss=2
; ******************************************************
Buffer$=Space(128)
mciSendString_("open  5.MID type sequencer alias mid",Buffer$,128,0)
mciSendString_("play mid",0,0,0)


InitSprite()                                    ; Initialise les sprites
InitKeyboard()                                  ; Initialise le clavier

LoadFont ( #font , "Arial" ,40)
LoadFont(#font2, "arial", 20 ,#PB_Font_Italic )

#sprite=1 ; on donne un numero au sprite


depx=4                                          ; deplacement horizontal
depy=4                                          ; deplacement vertical
etx=0
ety=0
passsx=5
passsy=5
yex=2
yey=2
 

If ExamineDesktops()                            ; Liste les bureaux
 
  Width  = DesktopWidth(0)                      ; Largeur actuelle
  Height = DesktopHeight(0)                     ; Hauteur actuelle
  Depth  = DesktopDepth(0)                      ; Profondeur de couleurs actuelle
  CentreX=Width/2
  EcranY3=Width
  Rien$ = "BERNARD 13"                                ; Titre de l'application à B13
 
  If OpenScreen(Width, Height, Depth, "Intro")  ; Ouvre l'écran
     
   
    CreateSprite(#sprite,32,32) ; on cree un sprite de 32 par 32
    StartDrawing(SpriteOutput(#sprite)) ; on va dessiner dedans !!
   
   
      Circle(88+avx, 125+avy, 5 ,RGB(0,0,0))
        Circle(100+avx, 125+avy, 5 ,RGB(0,0,0))
        Circle(112+avx, 125+avy, 5 ,RGB(0,0,0))
   
    Circle(16,16,16,RGB(0,0,255)) ; un rond bleu
    StopDrawing() ; voila notre sprite est pret !! :D
    ; on va pouvoir l'apeler par son nom !! (#sprite)
    xsprite_pas=10 ; ceci va determiner le sens du sprite  pour les X et sa vitesse de deplacement
    ysprite_pas=10; ceci va determiner le sens du sprite  pour les Y et sa vitesse de deplacement
   
    CreateImage(100, Width, Height)  ; on cree un image de la taille de l'ecran (on exagere un peu :D)
    StartDrawing( ImageOutput(100)) ; on va dessiner dans une image reperé   "100"
    FrontColor(RGB($0,$FF,$FF)) ; couleur d'ecriture
    BackColor(RGB(0, 0, 0)) ; couleur de fons
   
    DrawingFont(FontID(#font2))
    DrawingMode(1)
    DrawText(0,0,Texte.s) ; on ecrit "PUREBASIC 4.10" dedans notre image
    StopDrawing()
   
    ; ceci va lire l'image ligne par ligne et recreer autant d'image qu'il y a de ligne !!
    For t=0 To 100
      GrabImage(100, t, 0, t, 250,1)  ; voila on prend un ligne et on en fait une image d'une ligne de large 1 pixel de haut
    Next t ; on a un bon stock de ligne la :D 101 pour etre exact :)
   

;-Préparation Raster

Structure s_Raster
  CentreX.l
  CentreY.l
  Vitesse.f
  Angle.f
  Amplitude.l
  Pas.f
  Fond.l
  Sprite.l[30]
EndStructure

Structure s_Texte
  Texte.s
  depx.l
  depy.l
  x.l
  y.l
  Mx.l
  My.l
EndStructure

Declare DeplaceTexte(*T.s_Texte)
Global Raster.s_Raster
Define.s_Texte TexteRaster
With TexteRaster
\Texte = "Comtois"
\depx = 2
\depy = 2
\x = Width/2
\y = height/2
\Mx = Width
\My = height
EndWith

Raster\Fond = CreateSprite(#PB_Any,480,480)
StartDrawing(SpriteOutput(Raster\Fond))
For l=0 To 479
  Restore couleur
  For i = 0 To 479
    Read coul
    Plot(l,i,coul)
  Next i
Next l 
StopDrawing()

With Raster
  UseBuffer(\Fond)
  For i = 0 To 29
    \Sprite[i] = GrabSprite(#PB_Any, i * 8, i* 16, 240 - i * 8, 16)
  Next
  UseBuffer(-1)
  FreeSprite(\Fond)
  \CentreX = (Width  - SpriteWidth(\Sprite[0]))  / 2
  \CentreY = (Height - SpriteHeight(\Sprite[0])) / 2
  \Vitesse = 6
  \Angle = 0
  \Amplitude = 120
  \Pas = 3.8
EndWith   
   
    Repeat                                      ; Boucle
     
      ExamineKeyboard()                         ; Scanne l'état du clavier
     
      StartDrawing(ScreenOutput())              ; Démarre le dessin dans le buffer
       addecr1 = DrawingBuffer()
     
     
     
      ; ************************ Raster  arriere plan :D ***********************************
      artichaut = artichaut+Cos( 36)/10
      artison =artison+Sin( 36)
      a = Sin ((x3 + artichaut)/(500 + Sin (x3/100)*100)) * 75 + 75
      For Y3=1 To EcranY3-1
        artichaut = Cos ((Y3 + artison)/(300 + Cos (Y3/100)*100)) * 75 + 75
        coul = a + artichaut
        If coul > 500
          coul = coul-500
        EndIf
        coul = palette (coul)
        i=Y3
        amplitude3= amplitude3+ss
        If amplitude3>120:ss=-ss:EndIf
        If amplitude3<-120:ss=-0.001:ss=-ss:EndIf   
        x3=(CentreX)+ Sin((angle3 + i* pas*10  )  * 0.0174533) * amplitude3
        LineXY(x3+Sin((angle3 + i* pas*3  )  * 0.0174533) * amplitude3 ,Y3,x+500+Sin((angle3 + i* pas*5  )  * 0.0174533) * amplitude3 ,Y3,coul)
      Next Y3
      angle3=angle3 + Vitesse
      ; ********************************************************************************
     
     
     
     
     
     
      For y1= 0 To 100 ; on va ré afficher nos 101 lignes mais en les positionant par rapport a une sinuzoide :=
        DrawingFont(FontID(#font2))
        angle1=angle1+1 :If angle1=360*10: angle1=0 :EndIf
        x1+(Sin(angle1*2*#PI/50)*amplitude1) ; le X varie en fonction de Sin()
        DrawImage( ImageID(y1), x1+y1, y1,Width,1)
      Next y1   ; voila voila !! :D
     
     
     
      ;--------------- simulateur d'antenne cassée --------------------
      recep +20         ;pas de la figne de synchro
      If recep>Height-4   ;il elle est en bas
        recep =2          ;on la remet en haut
      EndIf
      LineXY(0,recep,Width,recep,RGB(110,110,110))    ;lignes synchro
      LineXY(0,recep-1,Width,recep-1,RGB(90,90,90))   
      LineXY(0,recep+1,Width,recep+1,RGB(90,90,90))
      LineXY(0,recep-2,Width,recep-2,RGB(70,70,70))
      LineXY(0,recep+2,Width,recep+3,RGB(70,70,70))
      hh=Height-200 ; determine la bande du 16/9 eme
      vv=Width
      For etoile =0 To 10000             ;nombre de fourmis
        etx=Random(vv)                   ;position aleatoire des fourmis en coordonné x
        ety=Random(hh)+100      ;position aleatoire des fourmis en coordonné y
        cr=Random(255)+100
        cv=Random(255)+100
        cb=Random(255)+100
        Plot (etx,ety,RGB(r,v,b))     ;plusieur "plot" pour donner du relief a la foumis
        Plot (etx+1,ety,RGB(cr-20,cv-20,cb-20))
        Plot (etx-1,ety,RGB(cr-20,cv-20,cb-20))
        Plot (etx,ety+1,RGB(cr-20,cv-20,cb-20))
        Plot (etx,ety-1,RGB(cr-20,cv-20,cb-20))
        Plot (etx+1,ety+1,RGB(cr-100,cv-100,cb-100))
        Plot (etx-1,ety-1,RGB(cr-100,cv-100,cb-100))
        Plot (etx-1,ety+1,RGB(cr-100,cv-100,cb-100))
        Plot (etx+1,ety-1,RGB(cr-100,cv-100,cb-100))
      Next
      LineXY(0,ety,Width,ety,RGB(150,150,150))  ;ligne horizontal parasite
      LineXY(0,ety-1,Width,ety-1,RGB(120,120,120))
      LineXY(0,ety+1,Width,ety+1,RGB(120,120,120))
     
      ;---------  fin du simulateur d antenne cassée ------------------
     
     
      DrawText((Width/2 - TextWidth(Rien$)/2)+a, (Height/2 - TextHeight(Rien$)/2)+b, "BERNARD 13", $FFFFFF, $000000) ; Dessine
     
      a+depx                                     ;on deplace la position du texte sur l horizontal
      b+depy                                     ;on deplace la position du texte sur la vertical
      If (Width/2 - TextWidth(Rien$)/2)+a>Width-TextWidth(Rien$)  ;si le texte depasse la largeure de l' écran
        depx=-depx                                ;on inverse le pas horizontal en négatif
      EndIf
      If (Width/2 - TextWidth(Rien$)/2)+a<0      ;si le texte  depasse a gauche de l' écran
        depx=-depx                                ;on inverse le pas horizontal en positif
      EndIf
     
      If (Height/2 - TextHeight(Rien$)/2)+b>Height-TextHeight(Rien$);si le texte depasse la hauteur de l' écran
        depy=-depy                                 ;on inverse le pas vertical en negatif
      EndIf
      If (Height/2 - TextHeight(Rien$)/2)+b<0    ;si le texte  depasse en base de l' écran
        depy=-depy                                ;on inverse le pas vertical en positif
      EndIf
     
     
      ;------------- routine boulles en rotation ---------
      rot.f+0.1
      For colon= 0 To 8           ;nombre de ligne  de boulles en rotation!! ou collone pitain je sais plus
        For ligne =0 To 8           ;nombre de collone de boulles en rotation!! ou ligne repitain je sais pas
          posx=(colon*50)-200             ; pfff ca me gonffle les comment...
          posy=(ligne*50)-300
          ix=Cos(rot) * posx - Sin(rot) * posy
          iy=Sin(rot) * posx + Cos(rot) * posy
          iz1=Sin(rot) * iy + Cos(rot) * 100
          cix=1000*ix/(1000-iz1)
          ciy=1000*(Cos(rot) * iy - Sin(rot) * 100)/(1000-iz1)
          Circle(cix+100+Width/2,ciy+ 100+Height/2, 20 ,RGB(150,50,50))
          Circle(cix+102+Width/2,ciy+ 98+Height/2, 16 ,RGB(170,70,70))
          Circle(cix+104+Width/2,ciy+ 96+Height/2, 12 ,RGB(190,90,90))
          Circle(cix+107+Width/2,ciy+ 92+Height/2, 4 ,RGB(250,250,250))
        Next ligne
      Next colon
      ;-------------- fin boulles en rotation --------
     
     
      ;-------------bebut spectre------------
     
      avx+passsx*veroux
      avy+passsy*verouy
      yyex=yex*veroux
      yyey=yey*verouy
      varix=Random(100)
      variy=Random(100)
       If avx>Width-150 Or  avx<0 Or varix=50
       passsx=-passsx
       veroux=1
       verouy=0
       yex=-yex
       EndIf
       If avy>Height-150 Or  avy<0 Or variy=50
       passsy=-passsy
       veroux=0
       verouy=1
       yey=-yey
       EndIf
        Circle(100+avx, 100+avy, 20 ,RGB(20,250,50))
        Box(80+avx,100+avy, 40, 25 ,RGB(20,250,50))
        Circle(88+avx, 122+avy, 3 ,RGB(0,0,0))
        Circle(100+avx, 122+avy, 3 ,RGB(0,0,0))
        Circle(112+avx, 122+avy, 3 ,RGB(0,0,0))
        Box(85+avx,122+avy, 6, 3,RGB(0,0,0))
        Box(97+avx,122+avy, 6, 3,RGB(0,0,0))
        Box(109+avx,122+avy, 6, 3,RGB(0,0,0))
        Circle(108+avx, 95+avy, 5 ,RGB(255,255,255))
        Circle(94+avx, 95+avy, 5 ,RGB(255,255,255))
        Circle(108+avx+yyex, 95+avy+yyey, 3 ,RGB(0,0,0))
        Circle(94+avx+yyex, 95+avy+yyey, 3 ,RGB(0,0,0))
     
      ;--------------fin spetcre--------------
       
     
      ;Moi RV et mon pixel blanc
       
      Plot(10,10,RGB(255,255,255))        ; un point aux coordonnées 10,10 (coin en haut a gauche) de couleur rgb(255,255,255) blanc donc
     
     
      ;-Texte Raster
      DeplaceTexte(@TexteRaster)
       
      StopDrawing()                             ; C'est fini
     


     
      ; on va tester si le sprite va sortir de l'ecran
      ; et fabriquer un rebond par inversion de la coordonée  au  cas ou ...
     
      x_sprite=x_sprite + xsprite_pas ; on lance l'animation de la coordonées X
      y_sprite=y_sprite + ysprite_pas ; on lance l'animation de la coordonées Y
     
      ; on test les sorties d'ecran
      If  x_sprite>Width-32 Or x_sprite<0  ; si la coordonée X du sprite est superieur a la largeur de l'ecran (sortie a droite) ou plus petit que zero (sortie a gauche)
        ; le "-32" sert a ce que la detection de la sortie se fasse a droite du Sprite
        xsprite_pas=-xsprite_pas ; on inverse le sens des x , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des X
       
      EndIf
      If  y_sprite>Height-32 Or y_sprite<0  ; si la coordonée Y du sprite est superieur a la lhauteur de l'ecran (sortie en bas) ou plus petit que zero (sortie en haut)
        ; le "-32" sert a ce que la detection de la sortie se fasse au dessous du Sprite
        ysprite_pas=-ysprite_pas ; on inverse le sens des Y , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des Y
       
      EndIf
     
      DisplayTransparentSprite(#sprite,x_sprite,y_sprite) ; on affiche le Sprite aux coordonées
     
      son=Random(1000)+500
     
      text.s="petite demo pour Bernard 13"
     
      xt=xt+2 :If xt>Width:xt=-500:EndIf ; le text arrive a droite ? on le remet a gauche !!
      yt=Height-125 ; emplacement verticale de la sinuzoide
      Ondulation(xt,yt,text.s,cr,cv,cb) ; appel de la procedure a OLIV on donne les coordonées que l'on veux, le text, et la couleur
     
     
      ;-Raster
      With Raster
      For i = 0 To 29
        DisplaySprite(\Sprite[i], \CentreX + i * 4, \CentreY + Sin((\Angle + i * \Pas * 2)  * 0.0174533) * \Amplitude)
      Next i
      \Angle + \Vitesse
      EndWith
  
      FlipBuffers()                             ; Inverse les buffers
      ClearScreen(0)                            ; Efface l'écran
    Until KeyboardPushed(#PB_Key_Escape)        ; On s'en va!!!
    mciSendString_("CLOSE MIDI",0,0,0)
  EndIf
EndIf



End                                             ; Adios!


Procedure Ondulation(x,Y,Texte.s,r,v,b)
  ; procedure realisé par OLIV
 
  StartDrawing ( ScreenOutput ()) ; Pour pouvoir utiliser les commandes des dessin 2D.
  DrawingFont ( FontID ( #font )) ; On change la police
  DrawingMode (1) ; On selectionne le mode pour ne pas avoir de fond derrière les lettres.
  FrontColor ( RGB (r,v,b) ) ; On change la couleur.
 
  angle + #VitesseAngle ; Angle de départ de la sinusoide en radian
  If angle >= 2 * #PI
    angle = 0
  EndIf
  ; On affiche toute les lettres
  posx = 10 ; Position du caractère
  For n = 1 To Len (Texte) ; Pour chaque lettre du texte
    Lettre.s = Mid (Texte, n, 1) ; on récupère la lettre à la position n
    posy = 50 + #HauteurSin * Sin (angle + posx / #LargeurSin ) ; on calcul la position en Y de la lettre
    ; On part du centre de l'image (50) puis on ajoute un sin
    ; #HauteurSin fait varier l'amplitude du mouvement
    ; l'angle mis dans le sinus est d'abord composé de l'angle de départ d'affichage du texte (Angle)
    ; puis on augmente l'angle au fur et à mesure que l'on affiche des lettres avec le coefficient #LargeurSin qui permet de faire varier la largeur de la sinusoide
   
    DrawText (x+posx, Y+posy,Lettre)
    posx + TextWidth (Lettre)
  Next
  StopDrawing () ; On signife que l'on arrête les fonctions dessin 2D.
EndProcedure

Procedure DeplaceTexte(*T.s_Texte)
  With *T
  \x+\depx                                     ;on deplace la position du texte sur l horizontal
  \y+\depy                                     ;on deplace la position du texte sur la vertical
  
  If \x + TextWidth(\Texte)>\Mx  ;si le texte depasse la largeure de l' écran
    \x=\Mx - TextWidth(\Texte)
    \depx=-\depx                                ;on inverse le pas horizontal en négatif
  ElseIf \x<0      ;si le texte  depasse a gauche de l' écran
    \x=0
    \depx=-\depx                                ;on inverse le pas horizontal en positif
  EndIf
 
  If \y + TextHeight(\Texte)>\My;si le texte depasse la hauteur de l' écran
    \y=\My - TextHeight(\Texte)
    \depy=-\depy                                 ;on inverse le pas vertical en negatif
  ElseIf \y<0    ;si le texte  depasse en base de l' écran
    \y=0
    \depy=-\depy                                ;on inverse le pas vertical en positif
  EndIf
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawText(\x, \y, \Texte, $FFFF00, $000000) ; Dessine
  EndWith
EndProcedure

 
DataSection
couleur :
Data.l $13, $30, $50, $70, $8E, $AE, $CF, $EC 
Data.l $FF, $EB, $CF, $AF, $8E, $71, $50, $30 
Data.l $0, $30914, $61632, $92454, $D3373, $104193, $144FB5, $185CD2 
Data.l $1A65E7, $185CD2, $144FB4, $114193, $D3373, $A2554, $51632, $30A15 
Data.l $1D2D, $314B, $4569, $5785, $6BA3, $7EC1, $90DC, $9CEE 
Data.l $90DB, $7FC2, $6BA3, $5785, $4569, $314B, $1D2C, $D12 
Data.l $62518, $B3E27, $F5837, $136F46, $178755, $1CA165, $1FB673, $22C67D 
Data.l $20B773, $1CA166, $178755, $136F46, $F5837, $B3F28, $62518, $30F0A 
Data.l $152516, $233E25, $315735, $3F6D43, $4D8652, $5B9F62, $67B56F, $70C478 
Data.l $67B56E, $5BA062, $4D8752, $3E6D43, $325635, $243E26, $152417, $80F0A 
Data.l $152209, $24390F, $324F15, $3F651A, $4E7C20, $5C9226, $69A62C, $72B42F 
Data.l $69A62C, $5C9226, $4E7C20, $40641A, $324F15, $24390E, $152209, $90E04 
Data.l $22230B, $393A13, $50511A, $666621, $7C7E29, $939631, $A7AA38, $B5B83C 
Data.l $A7AA37, $939631, $7C7E2A, $656621, $50521B, $393A13, $22230B, $E0E05 
Data.l $423411, $5E4919, $785D1F, $927226, $AD872D, $C89C34, $DFAE3B, $EFBB3F 
Data.l $DEAE3B, $C79C34, $AD872D, $927227, $785D1F, $5D4A18, $423412, $271E0A 
Data.l $251A12, $3E2C1E, $573C2A, $6E4D35, $875F41, $A0704D, $B68058, $C58A5F 
Data.l $B58057, $A0704D, $875F41, $6E4D35, $573D29, $3E2B1E, $251A12, $F0A07 
Data.l $211513, $372321, $4E302D, $633D39, $784C46, $8F5953, $A3665F, $B06E66 
Data.l $A3655E, $8F5A53, $794B46, $623D39, $4E312D, $372220, $211514, $D0808 
Data.l $C0609, $1D0F14, $311921, $44232F, $562C3B, $693649, $7D4056, $8E4961 
Data.l $9A4F6A, $8E4962, $7D4056, $693648, $562C3B, $44232F, $311921, $1D0F14 
Data.l $1D101B, $311B2D, $44263F, $573050, $6B3B62, $7E4673, $8F4F83, $9B568E 
Data.l $8F5083, $7E4673, $6A3B61, $573050, $45263E, $301B2D, $1D101A, $C070B 
Data.l $C0912, $1E142C, $31214A, $452F69, $583C84, $6D49A3, $8157C0, $9262DA 
Data.l $9E6BED, $9262DB, $8157C0, $6D4AA2, $583C85, $462F69, $32224B, $1E152C 
Data.l $211D42, $2E2A5D, $3B3676, $484190, $564EAB, $635AC5, $6E63DC, $766BEC 
Data.l $6E64DC, $6259C6, $554EAB, $48418F, $3B3676, $2F2A5C, $211D41, $141227 
Data.l $18003F, $220058, $2C0070, $350089, $3F00A3, $4900BD, $5100D2, $5700E1 
Data.l $5100D1, $4800BC, $3F00A3, $350089, $2C0070, $220059, $18003E, $E0025 
Data.l $23003E, $320059, $3F0071, $4D008A, $5C00A3, $6A00BD, $7600D3, $7F00E2 
Data.l $7700D2, $6A00BD, $5C00A4, $4D0089, $400071, $320058, $23003F, $150025 
Data.l $220029, $310039, $3E0049, $4B0059, $59006A, $66007A, $720088, $7B0092 
Data.l $730088, $67007A, $59006A, $4A0059, $3E0049, $300039, $220028, $140018 
Data.l $22031C, $310328, $3D0433, $4B053E, $59064A, $670755, $73085F, $7B0966 
Data.l $73085F, $670855, $590649, $4A053E, $3D0433, $300428, $22021C, $140111 
Data.l $220511, $300718, $3E081E, $4A0B25, $590D2C, $670E33, $721038, $7B113D 
Data.l $721039, $670E33, $590C2C, $4A0A25, $3E091F, $300718, $220510, $14030A 
Data.l $29130E, $3A1B13, $4B2219, $5A291F, $6C3125, $7C382A, $8B3E2F, $954332 
Data.l $8B3F2F, $7C382A, $6C3025, $5A291E, $4A2219, $3B1A14, $2A130E, $190B08 
Data.l $E0800, $221400, $382100, $4F2F00, $643B00, $7A4800, $915500, $A56100 
Data.l $B36900, $A56000, $925600, $7B4800, $643B00, $4F2F00, $382100, $221300 
Data.l $120D00, $2C2100, $4A3800, $684E00, $836300, $A17A00, $BF9000, $D9A400 
Data.l $EBB200, $D9A400, $BF9100, $A17A00, $836400, $684E00, $4A3900, $2C2200 
Data.l $D0D00, $1D1F00, $323400, $464900, $595C00, $6C7100, $808500, $929700 
Data.l $9EA400, $919700, $808600, $6C7100, $585B00, $464800, $323300, $1E1F00 
Data.l $1B2C00, $273E00, $314F00, $3B6000, $477300, $528500, $5C9400, $629F00 
Data.l $5B9400, $518500, $477300, $3C6100, $315000, $263E00, $1B2C00, $101A00 
Data.l $50E00, $B2100, $133700, $1A4D00, $216200, $287800, $308F00, $36A200 
Data.l $3BB000, $37A200, $308E00, $297900, $216200, $1A4E00, $133800, $B2100 
Data.l $93722, $D4D31, $11633F, $15794C, $198F5A, $1DA669, $20B975, $22C67D 
Data.l $20B975, $1CA568, $18905B, $15784C, $11633E, $D4E30, $93723, $62114 
Data.l $4344, $5F62, $7A7D, $9497, $B0B4, $CCD0, $E3E8, $F4F9 
Data.l $E3E8, $CCD0, $B1B5, $9597, $7A7D, $6062, $4344, $2829 
Data.l $2B42, $3E5E, $4E77, $5F90, $71AC, $82C7, $91DD, $9CEE 
Data.l $92DE, $83C7, $71AD, $5F91, $4E77, $3D5D, $2B41, $1A27
Data.l $20812, $4132C, $81F48, $B2C66, $F3881, $12469E, $1552BC, $185DD5 
Data.l $1A65E7, $185DD5, $1552BB, $12459F, $F3881, $B2D66, $82049, $5132C 
Data.l $40011, $8002A, $D0046, $120063, $17007C, $1C0099, $2200B5, $2600CE 
Data.l $2900DF, $2500CE, $2100B5, $1C0099, $17007C, $120063, $D0046, $80029 
EndDataSection
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

Message par tonton »

bon, j ajoute le pacman a l' arache :roll:

Code : Tout sélectionner





Declare Ondulation(x,Y,Texte.s,r,v,b) 

; ***** variables a OLIV ********* 
          ; Variables 

#HauteurSin = 25 ; Coef qui joue sur la hauteur de la sinusoide 
#LargeurSin = 50 ; Coef qui joue sur la largeur de la sinusoide 
#VitesseAngle = 1 * #PI / 50 ; vitesse de modification de l'angle de départ du texte 
#Vitesse = 50 ; Temps du Delay() qui ralentit/augmente l'animation. 
#font =1 
#font2=2 
Global angle.f, long_text_bas 
          ; **************************************** 

Global angle1,amplitude 
Global amplitude1=2 
Texte.s="PUREBASIC 4.10" 
;************************** raster palette **************************** 
Global Dim palette.l(500) 
For i = 0 To 500 
    angle8.f = angle8 + ((2 * #PI) / 500) 
    palette(i) = RGB (Abs (Cos (angle8 + (4*#PI/6))* 255),Abs (Cos (angle8 + #PI/3)* 255), Abs (Cos (angle8)* 255)) 
Next 
Vitesse.f = 8.2 ;donne scroling vert ou hori suivant 
amplitude3.f =120 ; profondeur des dents 
pas.f = 0.3 ; nombre de dent de scie 
ss=2 
; ****************************************************** 
Buffer$=Space(128) 
mciSendString_("open  5.MID type sequencer alias mid",Buffer$,128,0) 
mciSendString_("play mid",0,0,0) 


InitSprite()                                    ; Initialise les sprites 
InitKeyboard()                                  ; Initialise le clavier 

LoadFont ( #font , "Arial" ,40) 
LoadFont(#font2, "arial", 20 ,#PB_Font_Italic ) 

#sprite=1 ; on donne un numero au sprite 
#sprite_raster=1000 

depx=4                                          ; deplacement horizontal 
depy=4                                          ; deplacement vertical 
etx=0 
ety=0 
passsx=5
passsy=5
yex=2
yey=2
passsx1=6
passsy1=6
yex1=2
yey1=2
passsx2=2
passsy2=2
yex2=2
yey2=2
bpas=1
  

If ExamineDesktops()                            ; Liste les bureaux 
    
    Width  = DesktopWidth(0)                      ; Largeur actuelle 
    Height = DesktopHeight(0)                     ; Hauteur actuelle 
    Depth  = DesktopDepth(0)                      ; Profondeur de couleurs actuelle 
    CentreX=Width/2 
    EcranY3=Width 
    Rien$ = "BERNARD 13"                                ; Titre de l'application à B13 
    
    If OpenScreen(Width, Height, Depth, "Intro")  ; Ouvre l'écran 
        
        
      
        
        
        
        
        
        
        
        CreateSprite(#sprite,32,32) ; on cree un sprite de 32 par 32 
        StartDrawing(SpriteOutput(#sprite)) ; on va dessiner dedans !! 
        Circle(16,16,16,RGB(0,0,255)) ; un rond bleu 
        StopDrawing() ; voila notre sprite est pret !! :D 
        ; on va pouvoir l'apeler par son nom !! (#sprite) 
        xsprite_pas=10 ; ceci va determiner le sens du sprite  pour les X et sa vitesse de deplacement 
        ysprite_pas=10; ceci va determiner le sens du sprite  pour les Y et sa vitesse de deplacement 
        
        CreateImage(100, Width, Height)  ; on cree un image de la taille de l'ecran (on exagere un peu :D) 
        StartDrawing( ImageOutput(100)) ; on va dessiner dans une image reperé   "100" 
        FrontColor(RGB($0,$FF,$FF)) ; couleur d'ecriture 
        BackColor(RGB(0, 0, 0)) ; couleur de fons 
        
        DrawingFont(FontID(#font2)) 
        DrawingMode(1) 
        DrawText(0,0,Texte.s) ; on ecrit "PUREBASIC 4.10" dedans notre image 
        StopDrawing() 
        
        
        
        ; ceci va lire l'image ligne par ligne et recreer autant d'image qu'il y a de ligne !! 
        For t=0 To 100 
            GrabImage(100, t, 0, t, 250,1)  ; voila on prend un ligne et on en fait une image d'une ligne de large 1 pixel de haut 
        Next t ; on a un bon stock de ligne la :D 101 pour etre exact :) 
        
        
        
        ; *********** Raster a Comtois ****************** 
        ClearScreen(RGB(0,0,0)) 
        StartDrawing(ScreenOutput()) 
        For l=0 To 479 
            Restore Couleur 
            For i = 0 To 479 
                Read coul 
                Plot(l,i,coul) 
            Next i 
        Next l 
        StopDrawing() 
        For i = 0 To 30 
            GrabSprite(#sprite_raster+i , i * 8, i* 16, 240 - i * 8, 16) 
        Next 
        CentreX5 = (Width  - SpriteWidth(1))  / 2 
        CentreY5 = (Height - SpriteHeight(1)) / 2 
        
        Vitesse5.f = 1.3 
        angle5.f = 0 
        amplitude5 = 120 
        pas5.f = 3.8 
        ; ******************************************* 
        
        
        Repeat                                      ; Boucle 
            
            ExamineKeyboard()                         ; Scanne l'état du clavier 
            
            ; *********** Raster a Comtois ****************** 
            For i = 0 To 30 
                DisplaySprite(#sprite_raster+i, CentreX5 + i * 4+ ( CentreX5-Width/6 ), CentreY5 + Sin((angle5 + i * pas5 * 2)  * 0.0174533) * amplitude5) 
                 DisplaySprite(#sprite_raster+i, CentreX5 + i * 4-500, CentreY5 + Sin((angle5 + i * pas5 * 2)  * 0.0174533) * amplitude5) 
            Next i 
            ; ******************************************* 
            
            
            StartDrawing(ScreenOutput())              ; Démarre le dessin dans le buffer 
            
          
            angle5 + Vitesse5 
            
              
            
            
            
            
            ; ************************ Raster  arriere plan :D *********************************** 
            artichaut = artichaut+Cos( 36)/10 
            artison =artison+Sin( 36) 
            a = Sin ((x3 + artichaut)/(500 + Sin (x3/100)*100)) * 75 + 75 
            For Y3=1 To EcranY3-1 
                artichaut = Cos ((Y3 + artison)/(300 + Cos (Y3/100)*100)) * 75 + 75 
                coul = a + artichaut 
                If coul > 500 
                    coul = coul-500 
                EndIf 
                coul = palette (coul) 
                i=Y3 
                amplitude3= amplitude3+ss 
                If amplitude3>120:ss=-ss:EndIf 
                If amplitude3<-120:ss=-0.001:ss=-ss:EndIf    
                x3=(CentreX)+ Sin((angle3 + i* pas*10  )  * 0.0174533) * amplitude3 
                LineXY(x3+Sin((angle3 + i* pas*3  )  * 0.0174533) * amplitude3 ,Y3,x+500+Sin((angle3 + i* pas*5  )  * 0.0174533) * amplitude3 ,Y3,coul) 
            Next Y3 
            angle3=angle3 + Vitesse 
            ; ******************************************************************************** 
            
            
            
            
            
            
            For y1= 0 To 100 ; on va ré afficher nos 101 lignes mais en les positionant par rapport a une sinuzoide := 
                DrawingFont(FontID(#font2)) 
                angle1=angle1+1 :If angle1=360*10: angle1=0 :EndIf 
                x1+(Sin(angle1*2*#PI/50)*amplitude1) ; le X varie en fonction de Sin() 
                DrawImage( ImageID(y1), x1+y1, y1,Width,1) 
            Next y1   ; voila voila !! :D 
            
            
            
            ;--------------- simulateur d'antenne cassée -------------------- 
            recep +20         ;pas de la figne de synchro 
            If recep>Height-4   ;il elle est en bas 
                recep =2          ;on la remet en haut 
            EndIf 
            LineXY(0,recep,Width,recep,RGB(110,110,110))    ;lignes synchro 
            LineXY(0,recep-1,Width,recep-1,RGB(90,90,90))    
            LineXY(0,recep+1,Width,recep+1,RGB(90,90,90)) 
            LineXY(0,recep-2,Width,recep-2,RGB(70,70,70)) 
            LineXY(0,recep+2,Width,recep+3,RGB(70,70,70)) 
            hh=Width-100 
            vv=Height-200 ; determine la bande du 16/9 eme 
            For etoile =0 To 10000             ;nombre de fourmis 
                etx=Random(hh)+50                   ;position aleatoire des fourmis en coordonné x 
                ety=Random(vv)+100     ;position aleatoire des fourmis en coordonné y 
                cr=Random(255)+100 
                cv=Random(255)+100 
                cb=Random(255)+100 
                Plot (etx,ety,RGB(r,v,b))     ;plusieur "plot" pour donner du relief a la foumis 
                Plot (etx+1,ety,RGB(cr-20,cv-20,cb-20)) 
                Plot (etx-1,ety,RGB(cr-20,cv-20,cb-20)) 
                Plot (etx,ety+1,RGB(cr-20,cv-20,cb-20)) 
                Plot (etx,ety-1,RGB(cr-20,cv-20,cb-20)) 
                Plot (etx+1,ety+1,RGB(cr-100,cv-100,cb-100)) 
                Plot (etx-1,ety-1,RGB(cr-100,cv-100,cb-100)) 
                Plot (etx-1,ety+1,RGB(cr-100,cv-100,cb-100)) 
                Plot (etx+1,ety-1,RGB(cr-100,cv-100,cb-100)) 
            Next 
            LineXY(0,ety,Width,ety,RGB(150,150,150))  ;ligne horizontal parasite 
            LineXY(0,ety-1,Width,ety-1,RGB(120,120,120)) 
            LineXY(0,ety+1,Width,ety+1,RGB(120,120,120)) 
            
            ;---------  fin du simulateur d antenne cassée ------------------ 
            
            
            DrawText((Width/2 - TextWidth(Rien$)/2)+a, (Height/2 - TextHeight(Rien$)/2)+b, "BERNARD 13", $FFFFFF, $000000) ; Dessine 
            
            a+depx                                     ;on deplace la position du texte sur l horizontal 
            b+depy                                     ;on deplace la position du texte sur la vertical 
            If (Width/2 - TextWidth(Rien$)/2)+a>Width-TextWidth(Rien$)  ;si le texte depasse la largeure de l' écran 
                depx=-depx                                ;on inverse le pas horizontal en négatif 
            EndIf 
            If (Width/2 - TextWidth(Rien$)/2)+a<0      ;si le texte  depasse a gauche de l' écran 
                depx=-depx                                ;on inverse le pas horizontal en positif 
            EndIf 
            
            If (Height/2 - TextHeight(Rien$)/2)+b>Height-TextHeight(Rien$);si le texte depasse la hauteur de l' écran 
                depy=-depy                                 ;on inverse le pas vertical en negatif 
            EndIf 
            If (Height/2 - TextHeight(Rien$)/2)+b<0    ;si le texte  depasse en base de l' écran 
                depy=-depy                                ;on inverse le pas vertical en positif 
            EndIf 
            
            
            ;------------- routine boulles en rotation --------- 
            rot.f+0.1 
            For colon= 0 To 8           ;nombre de ligne  de boulles en rotation!! ou collone pitain je sais plus 
                For ligne =0 To 8           ;nombre de collone de boulles en rotation!! ou ligne repitain je sais pas 
                    posx=(colon*50)-200             ; pfff ca me gonffle les comment... 
                    posy=(ligne*50)-300 
                    ix=Cos(rot) * posx - Sin(rot) * posy 
                    iy=Sin(rot) * posx + Cos(rot) * posy 
                    iz1=Sin(rot) * iy + Cos(rot) * 100 
                    cix=1000*ix/(1000-iz1) 
                    ciy=1000*(Cos(rot) * iy - Sin(rot) * 100)/(1000-iz1) 
                    Circle(cix+100+Width/2,ciy+ 100+Height/2, 20 ,RGB(150,50,50)) 
                    Circle(cix+102+Width/2,ciy+ 98+Height/2, 16 ,RGB(170,70,70)) 
                    Circle(cix+104+Width/2,ciy+ 96+Height/2, 12 ,RGB(190,90,90)) 
                    Circle(cix+107+Width/2,ciy+ 92+Height/2, 4 ,RGB(250,250,250)) 
                Next ligne 
            Next colon 
            ;-------------- fin boulles en rotation -------- 
            
            ;-------------bebut spectre------------ 
            
            avx+passsx*veroux 
            avy+passsy*verouy 
            yyex=yex*veroux 
            yyey=yey*verouy 
            varix=Random(100) 
            variy=Random(100) 
            varix1=Random(100) 
            variy1=Random(100) 
            varix2=Random(100) 
            variy2=Random(100) 
            
            If avx>Width-150 Or  avx<0 Or varix=50 
                passsx=-passsx 
                veroux=1 
                verouy=0 
                yex=-yex 
            EndIf 
            If avy>Height-150 Or  avy<0 Or variy=50 
                passsy=-passsy 
                veroux=0 
                verouy=1 
                yey=-yey 
            EndIf 
            avx0=avx 
            avy0=avy 
            yyex0=yyex 
            yyey0=yyey 
            coul=$0000FF 
            Gosub spectre 
            
            
            avx1+passsx1*veroux1 
            avy1+passsy1*verouy1 
            yyex1=yex1*veroux1 
            yyey1=yey1*verouy1 
            
            
            If avx1>Width-150 Or  avx1<0 Or varix1=50 
                passsx1=-passsx1 
                veroux1=1 
                verouy1=0 
                yex1=-yex1 
            EndIf 
            If avy1>Height-150 Or  avy1<0 Or variy1=50 
                passsy1=-passsy1 
                veroux1=0 
                verouy1=1 
                yey1=-yey1 
            EndIf 
            avx0=avx1 
            avy0=avy1 
            yyex0=yyex1 
            yyey0=yyey1 
            coul=$FF0000 
            Gosub spectre 
            
            
            avx2+passsx2*veroux2 
            avy2+passsy2*verouy2 
            yyex2=yex2*veroux2 
            yyey2=yey2*verouy2 
            
            If avx2>Width-150 Or  avx2<0 Or varix2=50 
                passsx2=-passsx2 
                veroux2=1 
                verouy2=0 
                yex2=-yex2 
            EndIf 
            If avy2>Height-150 Or  avy2<0 Or variy2=50 
                passsy2=-passsy2 
                veroux2=0 
                verouy2=1 
                yey2=-yey2 
            EndIf 
            avx0=avx2 
            avy0=avy2 
            yyex0=yyex2 
            yyey0=yyey2 
            coul=$00FF00 
            Gosub spectre 
            
            
            
            ;--------------fin spetcre-------------- 
            ;debut pacman
       Circle(100+deppac, 100, 25 ,RGB(250,255,00)) 
          bo+bpas
          deppac+5
           If deppac>1300
           deppac=0
           EndIf
          If bo>10 Or bo<0
           bpas=-bpas
            EndIf
            
             If bo=0
           bo1=0: bo2=0: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
           EndIf
          
          If bo=1
           bo1=1: bo2=0: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
           EndIf
            If bo=2
           bo1=1: bo2=1: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
           EndIf
            If bo=3
           bo1=1: bo2=1: bo3=1: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
           EndIf
            If bo=4
           bo1=1: bo2=1: bo3=1: bo4=1: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
           EndIf
            If bo=5
           bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
           EndIf
            If bo=6
           bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=0: bo8=0: bo9=0: bo10=0
           EndIf
            If bo=7
           bo1=1: bo2=1: bo3=1: bo4=1: bo5=1 :bo6=1: bo7=1: bo8=0: bo9=0: bo10=0
           EndIf
            If bo=8
           bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=0: bo10=0
           EndIf
            If bo=9
           bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=1: bo10=0
           EndIf
            If bo=10
           bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=1: bo10=0
           EndIf
           
        
          LineXY(100*bo1+deppac,100*bo1,125*bo1+deppac,100*bo1,RGB(0,0,0)) 
          LineXY(100*bo1+deppac,100*bo1,125*bo1+deppac,101*bo1,RGB(0,0,0)) 
          LineXY(100*bo2+deppac,100*bo2,125*bo2+deppac,99*bo2,RGB(0,0,0)) 
          LineXY(100*bo2+deppac,100*bo2,125*bo2+deppac,102*bo2,RGB(0,0,0)) 
          LineXY(100*bo3+deppac,100*bo3,125*bo3+deppac,98*bo3,RGB(0,0,0)) 
          LineXY(100*bo3+deppac,100*bo3,125*bo3+deppac,103*bo3,RGB(0,0,0)) 
          LineXY(100*bo4+deppac,100*bo4,125*bo4+deppac,97*bo4,RGB(0,0,0)) 
          LineXY(100*bo4+deppac,100*bo4,125*bo4+deppac,104*bo4,RGB(0,0,0)) 
          LineXY(100*bo5+deppac,100*bo5,125*bo5+deppac,96*bo5,RGB(0,0,0)) 
          LineXY(100*bo5+deppac,100*bo5,125*bo5+deppac,105*bo5,RGB(0,0,0)) 
          LineXY(100*bo6+deppac,100*bo6,125*bo6+deppac,95*bo6,RGB(0,0,0)) 
          LineXY(100*bo6+deppac,100*bo6,125*bo6+deppac,106*bo6,RGB(0,0,0)) 
          LineXY(100*bo7+deppac,100*bo7,125*bo7+deppac,94*bo7,RGB(0,0,0)) 
          LineXY(100*bo7+deppac,100*bo7,125*bo7+deppac,107*bo7,RGB(0,0,0)) 
          LineXY(100*bo8+deppac,100*bo8,125*bo8+deppac,93*bo8,RGB(0,0,0)) 
          LineXY(100*bo8+deppac,100*bo8,125*bo8+deppac,108*bo8,RGB(0,0,0)) 
          LineXY(100*bo9+deppac,100*bo9,125*bo9+deppac,92*bo9,RGB(0,0,0)) 
          LineXY(100*bo9+deppac,100*bo9,125*bo9+deppac,109*bo9,RGB(0,0,0)) 
          LineXY(100*bo10+deppac,100*bo10,125*bo10+deppac,91*bo10,RGB(0,0,0)) 
          LineXY(100*bo10+deppac,100*bo10,125*bo10+deppac,110*bo10,RGB(0,0,0)) 
          
          ;fin pacman
            
            ;Moi RV et mon pixel blanc 
            
            Plot(10,10,RGB(255,255,255))        ; un point aux coordonnées 10,10 (coin en haut a gauche) de couleur rgb(255,255,255) blanc donc 
            
            
            StopDrawing()                             ; C'est fini 
            
            
            
            ; on va tester si le sprite va sortir de l'ecran 
            ; et fabriquer un rebond par inversion de la coordonée  au  cas ou ... 
            
            x_sprite=x_sprite + xsprite_pas ; on lance l'animation de la coordonées X 
            y_sprite=y_sprite + ysprite_pas ; on lance l'animation de la coordonées Y 
            
            ; on test les sorties d'ecran 
            If  x_sprite>Width-32 Or x_sprite<0  ; si la coordonée X du sprite est superieur a la largeur de l'ecran (sortie a droite) ou plus petit que zero (sortie a gauche) 
                ; le "-32" sert a ce que la detection de la sortie se fasse a droite du Sprite 
                xsprite_pas=-xsprite_pas ; on inverse le sens des x , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des X 
                
            EndIf 
            If  y_sprite>Height-32 Or y_sprite<0  ; si la coordonée Y du sprite est superieur a la lhauteur de l'ecran (sortie en bas) ou plus petit que zero (sortie en haut) 
                ; le "-32" sert a ce que la detection de la sortie se fasse au dessous du Sprite 
                ysprite_pas=-ysprite_pas ; on inverse le sens des Y , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des Y 
                
            EndIf 
            
            DisplayTransparentSprite(#sprite,x_sprite,y_sprite) ; on affiche le Sprite aux coordonées 
            
            
            
            
            son=Random(1000)+500 
            
            text.s="petite demo pour Bernard 13" 
            
            xt=xt+2 :If xt>Width:xt=-500:EndIf ; le text arrive a droite ? on le remet a gauche !! 
            yt=Height-125 ; emplacement verticale de la sinuzoide 
            Ondulation(xt,yt,text.s,cr,cv,cb) ; appel de la procedure a OLIV on donne les coordonées que l'on veux, le text, et la couleur 
            
          
            
            
            
            
            
            
            FlipBuffers()                             ; Inverse les buffers 
            ClearScreen(0)                            ; Efface l'écran 
        Until KeyboardPushed(#PB_Key_Escape)        ; On s'en va!!! 
        mciSendString_("CLOSE MIDI",0,0,0) 
    EndIf 
EndIf 



End                                             ; Adios! 

spectre: 
Circle(100+avx0, 100+avy0, 20 ,coul) 
Box(80+avx0,100+avy0, 40, 25 ,coul) 
Circle(88+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
Circle(100+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
Circle(112+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
Box(85+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
Box(97+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
Box(109+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
Circle(108+avx0, 95+avy0, 5 ,RGB(255,255,255)) 
Circle(94+avx0, 95+avy0, 5 ,RGB(255,255,255)) 
Circle(108+avx0+yyex0, 95+avy0+yyey0, 3 ,RGB(0,0,0)) 
Circle(94+avx0+yyex0, 95+avy0+yyey0, 3 ,RGB(0,0,0)) 
Return 


Procedure Ondulation(x,Y,Texte.s,r,v,b) 
    ; procedure realisé par OLIV 
    
    StartDrawing ( ScreenOutput ()) ; Pour pouvoir utiliser les commandes des dessin 2D. 
    DrawingFont ( FontID ( #font )) ; On change la police 
    DrawingMode (1) ; On selectionne le mode pour ne pas avoir de fond derrière les lettres. 
    FrontColor ( RGB (r,v,b) ) ; On change la couleur. 
    
    angle + #VitesseAngle ; Angle de départ de la sinusoide en radian 
    If angle >= 2 * #PI 
        angle = 0 
    EndIf 
    ; On affiche toute les lettres 
    posx = 10 ; Position du caractère 
    For n = 1 To Len (Texte) ; Pour chaque lettre du texte 
        Lettre.s = Mid (Texte, n, 1) ; on récupère la lettre à la position n 
        posy = 50 + #HauteurSin * Sin (angle + posx / #LargeurSin ) ; on calcul la position en Y de la lettre 
        ; On part du centre de l'image (50) puis on ajoute un sin 
        ; #HauteurSin fait varier l'amplitude du mouvement 
        ; l'angle mis dans le sinus est d'abord composé de l'angle de départ d'affichage du texte (Angle) 
        ; puis on augmente l'angle au fur et à mesure que l'on affiche des lettres avec le coefficient #LargeurSin qui permet de faire varier la largeur de la sinusoide 
        
        DrawText (x+posx, Y+posy,Lettre) 
        posx + TextWidth (Lettre) 
    Next 
    StopDrawing () ; On signife que l'on arrête les fonctions dessin 2D. 
EndProcedure    

DataSection 
Couleur : 
Data.l $13, $30, $50, $70, $8E, $AE, $CF, $EC 
Data.l $FF, $EB, $CF, $AF, $8E, $71, $50, $30 
Data.l $0, $30914, $61632, $92454, $D3373, $104193, $144FB5, $185CD2 
Data.l $1A65E7, $185CD2, $144FB4, $114193, $D3373, $A2554, $51632, $30A15 
Data.l $1D2D, $314B, $4569, $5785, $6BA3, $7EC1, $90DC, $9CEE 
Data.l $90DB, $7FC2, $6BA3, $5785, $4569, $314B, $1D2C, $D12 
Data.l $62518, $B3E27, $F5837, $136F46, $178755, $1CA165, $1FB673, $22C67D 
Data.l $20B773, $1CA166, $178755, $136F46, $F5837, $B3F28, $62518, $30F0A 
Data.l $152516, $233E25, $315735, $3F6D43, $4D8652, $5B9F62, $67B56F, $70C478 
Data.l $67B56E, $5BA062, $4D8752, $3E6D43, $325635, $243E26, $152417, $80F0A 
Data.l $152209, $24390F, $324F15, $3F651A, $4E7C20, $5C9226, $69A62C, $72B42F 
Data.l $69A62C, $5C9226, $4E7C20, $40641A, $324F15, $24390E, $152209, $90E04 
Data.l $22230B, $393A13, $50511A, $666621, $7C7E29, $939631, $A7AA38, $B5B83C 
Data.l $A7AA37, $939631, $7C7E2A, $656621, $50521B, $393A13, $22230B, $E0E05 
Data.l $423411, $5E4919, $785D1F, $927226, $AD872D, $C89C34, $DFAE3B, $EFBB3F 
Data.l $DEAE3B, $C79C34, $AD872D, $927227, $785D1F, $5D4A18, $423412, $271E0A 
Data.l $251A12, $3E2C1E, $573C2A, $6E4D35, $875F41, $A0704D, $B68058, $C58A5F 
Data.l $B58057, $A0704D, $875F41, $6E4D35, $573D29, $3E2B1E, $251A12, $F0A07 
Data.l $211513, $372321, $4E302D, $633D39, $784C46, $8F5953, $A3665F, $B06E66 
Data.l $A3655E, $8F5A53, $794B46, $623D39, $4E312D, $372220, $211514, $D0808 
Data.l $C0609, $1D0F14, $311921, $44232F, $562C3B, $693649, $7D4056, $8E4961 
Data.l $9A4F6A, $8E4962, $7D4056, $693648, $562C3B, $44232F, $311921, $1D0F14 
Data.l $1D101B, $311B2D, $44263F, $573050, $6B3B62, $7E4673, $8F4F83, $9B568E 
Data.l $8F5083, $7E4673, $6A3B61, $573050, $45263E, $301B2D, $1D101A, $C070B 
Data.l $C0912, $1E142C, $31214A, $452F69, $583C84, $6D49A3, $8157C0, $9262DA 
Data.l $9E6BED, $9262DB, $8157C0, $6D4AA2, $583C85, $462F69, $32224B, $1E152C 
Data.l $211D42, $2E2A5D, $3B3676, $484190, $564EAB, $635AC5, $6E63DC, $766BEC 
Data.l $6E64DC, $6259C6, $554EAB, $48418F, $3B3676, $2F2A5C, $211D41, $141227 
Data.l $18003F, $220058, $2C0070, $350089, $3F00A3, $4900BD, $5100D2, $5700E1 
Data.l $5100D1, $4800BC, $3F00A3, $350089, $2C0070, $220059, $18003E, $E0025 
Data.l $23003E, $320059, $3F0071, $4D008A, $5C00A3, $6A00BD, $7600D3, $7F00E2 
Data.l $7700D2, $6A00BD, $5C00A4, $4D0089, $400071, $320058, $23003F, $150025 
Data.l $220029, $310039, $3E0049, $4B0059, $59006A, $66007A, $720088, $7B0092 
Data.l $730088, $67007A, $59006A, $4A0059, $3E0049, $300039, $220028, $140018 
Data.l $22031C, $310328, $3D0433, $4B053E, $59064A, $670755, $73085F, $7B0966 
Data.l $73085F, $670855, $590649, $4A053E, $3D0433, $300428, $22021C, $140111 
Data.l $220511, $300718, $3E081E, $4A0B25, $590D2C, $670E33, $721038, $7B113D 
Data.l $721039, $670E33, $590C2C, $4A0A25, $3E091F, $300718, $220510, $14030A 
Data.l $29130E, $3A1B13, $4B2219, $5A291F, $6C3125, $7C382A, $8B3E2F, $954332 
Data.l $8B3F2F, $7C382A, $6C3025, $5A291E, $4A2219, $3B1A14, $2A130E, $190B08 
Data.l $E0800, $221400, $382100, $4F2F00, $643B00, $7A4800, $915500, $A56100 
Data.l $B36900, $A56000, $925600, $7B4800, $643B00, $4F2F00, $382100, $221300 
Data.l $120D00, $2C2100, $4A3800, $684E00, $836300, $A17A00, $BF9000, $D9A400 
Data.l $EBB200, $D9A400, $BF9100, $A17A00, $836400, $684E00, $4A3900, $2C2200 
Data.l $D0D00, $1D1F00, $323400, $464900, $595C00, $6C7100, $808500, $929700 
Data.l $9EA400, $919700, $808600, $6C7100, $585B00, $464800, $323300, $1E1F00 
Data.l $1B2C00, $273E00, $314F00, $3B6000, $477300, $528500, $5C9400, $629F00 
Data.l $5B9400, $518500, $477300, $3C6100, $315000, $263E00, $1B2C00, $101A00 
Data.l $50E00, $B2100, $133700, $1A4D00, $216200, $287800, $308F00, $36A200 
Data.l $3BB000, $37A200, $308E00, $297900, $216200, $1A4E00, $133800, $B2100 
Data.l $93722, $D4D31, $11633F, $15794C, $198F5A, $1DA669, $20B975, $22C67D 
Data.l $20B975, $1CA568, $18905B, $15784C, $11633E, $D4E30, $93723, $62114 
Data.l $4344, $5F62, $7A7D, $9497, $B0B4, $CCD0, $E3E8, $F4F9 
Data.l $E3E8, $CCD0, $B1B5, $9597, $7A7D, $6062, $4344, $2829 
Data.l $2B42, $3E5E, $4E77, $5F90, $71AC, $82C7, $91DD, $9CEE 
Data.l $92DE, $83C7, $71AD, $5F91, $4E77, $3D5D, $2B41, $1A27 
Data.l $20812, $4132C, $81F48, $B2C66, $F3881, $12469E, $1552BC, $185DD5 
Data.l $1A65E7, $185DD5, $1552BB, $12459F, $F3881, $B2D66, $82049, $5132C 
Data.l $40011, $8002A, $D0046, $120063, $17007C, $1C0099, $2200B5, $2600CE 
Data.l $2900DF, $2500CE, $2100B5, $1C0099, $17007C, $120063, $D0046, $80029 
EndDataSection 


Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bon arretez maintenant :D

j'essaie de mettre un peu d'orde la dedans :lol:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Dobro a écrit :j'essaie de mettre un peu d'orde la dedans :lol:
Profite s'en pour ajouter EnableExplicit et lancer le programme avec le débogueur :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

comtois a écrit :
Dobro a écrit :j'essaie de mettre un peu d'orde la dedans :lol:
Profite s'en pour ajouter EnableExplicit et lancer le programme avec le débogueur :)
houla , ben un autre jour hein :lol:

j'ai deja nettoyé un peut mes variables et ajouté des Structures
j'ai meme mis les Boules en Rotation en Sprite

faudrai faire de meme avec les Packmans ....

j'ai un beau Star Field en attente ...

Code : Tout sélectionner


Structure oliv
    angle.f
    long_text_bas.l 
    xt.l
    yt.l
    text.s
    cr.w
    cv.w
    cb.w 
EndStructure
Global Dim oliv.oliv(1)
Declare Ondulation(x,Y,Texte.s,r,v,b)
; ***** variables a OLIV *********
          ; Variables

#HauteurSin = 25 ; Coef qui joue sur la hauteur de la sinusoide
#LargeurSin = 50 ; Coef qui joue sur la largeur de la sinusoide
#VitesseAngle = 1 * #PI / 50 ; vitesse de modification de l'angle de départ du texte
#Vitesse = 50 ; Temps du Delay() qui ralentit/augmente l'animation.
#font =1
#font2=2

 ; ****************************************

Structure dobro_fumee
    angle.l
    amplitude.f
    Texte.s
    pas.f
    i.f
    Vitesse.f
    a.f
    artichaut.f
    artison.f
    ss.f 
    coul.w
    x.l
EndStructure
Dim dobro_fumee.dobro_fumee(1)

;************************** raster fumee palette ****************************
Global Dim palette.l(500)
For i = 0 To 500
    angle88 = angle88 + ((2 * #PI) / 500) 
    palette(i) = RGB (Abs (Cos (angle88+ (4*#PI/6))* 255),Abs (Cos (angle88 + #PI/3)* 255), Abs (Cos (angle88)* 255))
Next
dobro_fumee(1)\Vitesse.f = 8.2 ;donne scrolling vert ou hori suivant
dobro_fumee(1)\amplitude.f =120 ; profondeur des dents
dobro_fumee(1)\pas.f = 0.3 ; nombre de dent de scie
dobro_fumee(1)\ss.f=5
; ******************************************************

Structure dobro_titre 
    angle.l
    x.l
    amplitude.l
EndStructure
Dim dobro_titre.dobro_titre(1)

dobro_titre(1)\angle=0
dobro_titre(1)\amplitude=2
dobro_titre(1)\x=0

Structure balle_bleue
    x.l
    Y.l
    xpas.l
    ypas.l
EndStructure
Dim  balle_bleue. balle_bleue(1)



; **************************** Raster a Comtois **************************
        ;-Préparation Raster
        
Structure s_Raster
    CentreX.l
    CentreY.l
    Vitesse.f
    angle.f
    amplitude.l
    pas.f
    Fond.l
    Sprite.l[30]
EndStructure
        
Structure s_Texte
    Texte.s
    depx.l
    depy.l
    x.l
    Y.l
    mx.l
    my.l
EndStructure
; ****************************************************************


Global angle1,amplitude
Global amplitude1=2
Texte.s="PUREBASIC 4.10"

Buffer$=Space(128)
mciSendString_("open  5.MID type sequencer alias mid",Buffer$,128,0)
mciSendString_("play mid",0,0,0)


InitSprite()                                    ; Initialise les sprites
InitKeyboard()                                  ; Initialise le clavier

LoadFont ( #font , "Arial" ,40)
LoadFont(#font2, "arial", 20 ,#PB_Font_Italic )

#sprite_balle_bleue=1 ; on donne un numero au sprite
#sprite_raster=1000
#sprite_tonton=2000
depx=4                                          ; deplacement horizontal
depy=4                                          ; deplacement vertical
etx=0
ety=0
passsx=5
passsy=5
yex=2
yey=2
passsx1=6
passsy1=6
yex1=2
yey1=2
passsx2=2
passsy2=2
yex2=2
yey2=2
bpas=1
 

If ExamineDesktops()                            ; Liste les bureaux
    
    Width  = DesktopWidth(0)                      ; Largeur actuelle
    Height = DesktopHeight(0)                    ; Hauteur actuelle 
    Depth  = DesktopDepth(0)                      ; Profondeur de couleurs actuelle
    CentreX=Width/2 
    Rien$ = "BERNARD 13"                                ; Titre de l'application à B13
    
    ; *********** Creation de la balle Bleue **************************
    ;- creation balle bleue
    If OpenScreen(Width, Height, Depth, "Intro")  ; Ouvre l'écran  
        CreateSprite(#sprite_balle_bleue,32,32) ; on cree un sprite de 32 par 32
        StartDrawing(SpriteOutput(#sprite_balle_bleue)) ; on va dessiner dedans !!
        Circle(16,16,16,RGB(0,0,255)) ; un rond bleu
        StopDrawing() ; voila notre sprite est pret !! :D
        ; on va pouvoir l'apeler par son nom !! (#sprite)
        balle_bleue(1)\xpas=10 ; ceci va determiner le sens du sprite  pour les X et sa vitesse de deplacement
        balle_bleue(1)\ypas=10; ceci va determiner le sens du sprite  pour les Y et sa vitesse de deplacement
        ; **********************************************************
        
        ;-creation boules a Tonton
        ; ************ creation d'un boule pour les boules a tonton *****************
        CreateSprite(#sprite_tonton,64,64) ; on cree un sprite de 32 par 32
        StartDrawing(SpriteOutput(#sprite_tonton)) ; on va dessiner dedans !!
        Circle(32,32, 20 ,RGB(150,50,50))
        Circle(32,32, 16 ,RGB(170,70,70))
        Circle(32,32, 12 ,RGB(190,90,90))
        Circle(32,32, 4 ,RGB(250,250,250))
        StopDrawing() ; voila notre sprite est pret !! :D
        ; *******************************************************
        
        
        
        
        
        
        ;- creation image pour le titre
            ; *********** Creation de l'image pour le titre **************************
        CreateImage(100, 250, 100)  ; on cree un image 
        StartDrawing( ImageOutput(100)) ; on va dessiner dans une image reperé   "100"
        FrontColor(RGB($0,$FF,$FF)) ; couleur d'ecriture
        BackColor(RGB(0, 0, 0)) ; couleur de fons
        
        DrawingFont(FontID(#font2))
        DrawingMode(1)
        DrawText(0,0,Texte.s) ; on ecrit "PUREBASIC 4.10" dedans notre image
        StopDrawing() 
        
        ; ceci va lire l'image ligne par ligne et recreer autant d'image qu'il y a de ligne !!
        For t=0 To 100
            GrabImage(100, t, 0, t, 250,1)  ; voila on prend un ligne et on en fait une image d'une ligne de large 1 pixel de haut
        Next t ; on a un bon stock de ligne la :D 101 pour etre exact :) 
          ; ******************************************************************
        
        ;- préparation Raster a Comtois
        ; ****************** Raster a Comtois ********************** 
        Declare DeplaceTexte(*T.s_Texte)
        Global Raster.s_Raster
        Define.s_Texte TexteRaster
        With TexteRaster
            \Texte = "Comtois"
            \depx = 2
            \depy = 2
            \x = Width/2
            \Y = Height/2
            \mx = Width
            \my = Height
        EndWith
        
        Raster\Fond = CreateSprite(#PB_Any,480,480)
        StartDrawing(SpriteOutput(Raster\Fond))
        For l=0 To 479
            Restore Couleur
            For i = 0 To 479
                Read coul
                Plot(l,i,coul)
            Next i
        Next l
        StopDrawing()
        
        With Raster
            UseBuffer(\Fond)
            For i = 0 To 29
                \Sprite[i] = GrabSprite(#PB_Any, i * 8, i* 16, 240 - i * 8, 16)
            Next
            UseBuffer(-1)
            FreeSprite(\Fond)
            \CentreX = (Width  - SpriteWidth(\Sprite[0]))  / 2
            \CentreY = (Height - SpriteHeight(\Sprite[0])) / 2
            \Vitesse = 6
            \angle = 0
            \amplitude = 120
            \pas = 3.8
        EndWith     
        ; ***************************************************
        
         
        Repeat                                      ; Boucle 
            ExamineKeyboard()                         ; Scanne l'état du clavier  
            StartDrawing(ScreenOutput())              ; Démarre le dessin dans le buffer 
            
            angle5 + Vitesse5
            
              
            ;-affiche Fumee
            ; ************************ Raster Fumée arriere plan :D ***********************************
            dobro_fumee(1)\artichaut = dobro_fumee(1)\artichaut+Cos( 36)/10
           dobro_fumee(1)\artison =dobro_fumee(1)\artison+Sin( 36)
            dobro_fumee(1)\a = Sin (( dobro_fumee(1)\x + dobro_fumee(1)\artichaut)/(500 + Sin (dobro_fumee(1)\x/100)*100)) * 75 + 75
            For Y=1 To Height-1 
                dobro_fumee(1)\artichaut = Cos ((Y + dobro_fumee(1)\artison)/(300 + Cos (Y/100)*100)) * 75 + 75
               dobro_fumee(1)\coul  = dobro_fumee(1)\a + dobro_fumee(1)\artichaut
                If dobro_fumee(1)\coul  > 500
                  dobro_fumee(1)\coul =dobro_fumee(1)\coul -500
                EndIf
                dobro_fumee(1)\coul =palette (dobro_fumee(1)\coul) 
                dobro_fumee(1)\i=Y
                dobro_fumee(1)\amplitude= dobro_fumee(1)\amplitude+dobro_fumee(1)\ss
                If dobro_fumee(1)\amplitude>120:dobro_fumee(1)\ss=-dobro_fumee(1)\ss:EndIf
                If dobro_fumee(1)\amplitude<-120:dobro_fumee(1)\ss=-0.001:dobro_fumee(1)\ss=-dobro_fumee(1)\ss:EndIf   
                dobro_fumee(1)\x=(CentreX-200)+ Sin((dobro_fumee(1)\angle + dobro_fumee(1)\i* dobro_fumee(1)\pas*10  )  * 0.0174533) * dobro_fumee(1)\amplitude
                LineXY(dobro_fumee(1)\x+Sin((dobro_fumee(1)\angle +dobro_fumee(1)\i* dobro_fumee(1)\pas*3  )  * 0.0174533) * dobro_fumee(1)\amplitude ,Y,dobro_fumee(1)\x+500+Sin((dobro_fumee(1)\angle + dobro_fumee(1)\i* dobro_fumee(1)\pas*5  )  * 0.0174533) * dobro_fumee(1)\amplitude ,Y,dobro_fumee(1)\coul)
            Next Y
            dobro_fumee(1)\angle=dobro_fumee(1)\angle + dobro_fumee(1)\Vitesse
            ; ********************************************************************************
             
         ;-affiche Titre
            ; ********************** Titre ************************************************
            For y1= 0 To 100 ; on va ré afficher nos 101 lignes mais en les positionant par rapport a une sinuzoide :=
                DrawingFont(FontID(#font2))
                dobro_titre(1)\angle=dobro_titre(1)\angle+1 :If dobro_titre(1)\angle=360*10: dobro_titre(1)\angle=0 :EndIf
                dobro_titre(1)\x+(Sin(dobro_titre(1)\angle*2*#PI/50)*dobro_titre(1)\amplitude) ; le X varie en fonction de Sin()
                DrawImage( ImageID(y1), dobro_titre(1)\x+y1, y1,Width,1)
            Next y1   ; voila voila !! :D
            ; ********************************************************************
            
            
            ;-affiche simulateur d'antenne cassée --------------------
            recep +20         ;pas de la figne de synchro
            If recep>Height-4   ;il elle est en bas
                recep =2          ;on la remet en haut
            EndIf
            LineXY(0,recep,Width,recep,RGB(110,110,110))    ;lignes synchro
            LineXY(0,recep-1,Width,recep-1,RGB(90,90,90))   
            LineXY(0,recep+1,Width,recep+1,RGB(90,90,90))
            LineXY(0,recep-2,Width,recep-2,RGB(70,70,70))
            LineXY(0,recep+2,Width,recep+3,RGB(70,70,70))
            hh=Width-100
            vv=Height-200 ; determine la bande du 16/9 eme
            For etoile =0 To 10000             ;nombre de fourmis
                etx=Random(hh)+50                   ;position aleatoire des fourmis en coordonné x
                ety=Random(vv)+100     ;position aleatoire des fourmis en coordonné y
                cr=Random(255)+100
                cv=Random(255)+100
                cb=Random(255)+100 
                Plot (etx,ety,RGB(r,v,b))     ;plusieur "plot" pour donner du relief a la foumis
                Plot (etx+1,ety,RGB(cr-20,cv-20,cb-20))
                Plot (etx-1,ety,RGB(cr-20,cv-20,cb-20))
                Plot (etx,ety+1,RGB(cr-20,cv-20,cb-20))
                Plot (etx,ety-1,RGB(cr-20,cv-20,cb-20))
                Plot (etx+1,ety+1,RGB(cr-100,cv-100,cb-100))
                Plot (etx-1,ety-1,RGB(cr-100,cv-100,cb-100))
                Plot (etx-1,ety+1,RGB(cr-100,cv-100,cb-100))
                Plot (etx+1,ety-1,RGB(cr-100,cv-100,cb-100))
            Next
            LineXY(0,ety,Width,ety,RGB(150,150,150))  ;ligne horizontal parasite
            LineXY(0,ety-1,Width,ety-1,RGB(120,120,120))
            LineXY(0,ety+1,Width,ety+1,RGB(120,120,120))
            
            ;---------  fin du simulateur d antenne cassée ------------------
            
            
            
            ;-affiche le text Bernard 13
            DrawText((Width/2 - TextWidth(Rien$)/2)+a, (Height/2 - TextHeight(Rien$)/2)+b, "BERNARD 13", $FFFFFF, $000000) ; Dessine
            
            a+depx                                     ;on deplace la position du texte sur l horizontal
            b+depy                                     ;on deplace la position du texte sur la vertical
            If (Width/2 - TextWidth(Rien$)/2)+a>Width-TextWidth(Rien$)  ;si le texte depasse la largeure de l' écran
                depx=-depx                                ;on inverse le pas horizontal en négatif
            EndIf
            If (Width/2 - TextWidth(Rien$)/2)+a<0      ;si le texte  depasse a gauche de l' écran
                depx=-depx                                ;on inverse le pas horizontal en positif
            EndIf
            
            If (Height/2 - TextHeight(Rien$)/2)+b>Height-TextHeight(Rien$);si le texte depasse la hauteur de l' écran
                depy=-depy                                 ;on inverse le pas vertical en negatif
            EndIf
            If (Height/2 - TextHeight(Rien$)/2)+b<0    ;si le texte  depasse en base de l' écran
                depy=-depy                                ;on inverse le pas vertical en positif
            EndIf
            
            
        
            
            ;-------------bebut spectre------------
            
            avx+passsx*veroux
            avy+passsy*verouy
            yyex=yex*veroux
            yyey=yey*verouy
            varix=Random(100)
            variy=Random(100)
            varix1=Random(100)
            variy1=Random(100)
            varix2=Random(100)
            variy2=Random(100)
            
            If avx>Width-150 Or  avx<0 Or varix=50
                passsx=-passsx
                veroux=1
                verouy=0
                yex=-yex
            EndIf
            If avy>Height-150 Or  avy<0 Or variy=50
                passsy=-passsy
                veroux=0
                verouy=1
                yey=-yey
            EndIf
            avx0=avx
            avy0=avy
            yyex0=yyex
            yyey0=yyey
            coul=$0000FF
            Gosub spectre
            
            
            avx1+passsx1*veroux1
            avy1+passsy1*verouy1
            yyex1=yex1*veroux1
            yyey1=yey1*verouy1
            
            
            If avx1>Width-150 Or  avx1<0 Or varix1=50
                passsx1=-passsx1
                veroux1=1
                verouy1=0
                yex1=-yex1
            EndIf
            If avy1>Height-150 Or  avy1<0 Or variy1=50
                passsy1=-passsy1
                veroux1=0
                verouy1=1
                yey1=-yey1
            EndIf
            avx0=avx1
            avy0=avy1
            yyex0=yyex1
            yyey0=yyey1
            coul=$FF0000
            Gosub spectre
            
            
            avx2+passsx2*veroux2
            avy2+passsy2*verouy2
            yyex2=yex2*veroux2
            yyey2=yey2*verouy2
            
            If avx2>Width-150 Or  avx2<0 Or varix2=50
                passsx2=-passsx2
                veroux2=1
                verouy2=0
                yex2=-yex2
            EndIf
            If avy2>Height-150 Or  avy2<0 Or variy2=50
                passsy2=-passsy2
                veroux2=0
                verouy2=1
                yey2=-yey2
            EndIf
            avx0=avx2
            avy0=avy2
            yyex0=yyex2
            yyey0=yyey2
            coul=$00FF00
            Gosub spectre
            
            
            
            ;--------------fin spetcre--------------
            ;debut pacman
            Circle(100+deppac, 100, 25 ,RGB(250,255,00))
            bo+bpas
            deppac+5
            If deppac>1300
                deppac=0
            EndIf
            If bo>10 Or bo<0
                bpas=-bpas
            EndIf
            
            If bo=0
                bo1=0: bo2=0: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
            EndIf
            
            If bo=1
                bo1=1: bo2=0: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
            EndIf
            If bo=2
                bo1=1: bo2=1: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
            EndIf
            If bo=3
                bo1=1: bo2=1: bo3=1: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
            EndIf
            If bo=4
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
            EndIf
            If bo=5
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0
            EndIf
            If bo=6
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=0: bo8=0: bo9=0: bo10=0
            EndIf
            If bo=7
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1 :bo6=1: bo7=1: bo8=0: bo9=0: bo10=0
            EndIf
            If bo=8
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=0: bo10=0
            EndIf
            If bo=9
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=1: bo10=0
            EndIf
            If bo=10
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=1: bo10=0
            EndIf
            
            
            LineXY(100*bo1+deppac,100*bo1,125*bo1+deppac,100*bo1,RGB(0,0,0))
            LineXY(100*bo1+deppac,100*bo1,125*bo1+deppac,101*bo1,RGB(0,0,0))
            LineXY(100*bo2+deppac,100*bo2,125*bo2+deppac,99*bo2,RGB(0,0,0))
            LineXY(100*bo2+deppac,100*bo2,125*bo2+deppac,102*bo2,RGB(0,0,0))
            LineXY(100*bo3+deppac,100*bo3,125*bo3+deppac,98*bo3,RGB(0,0,0))
            LineXY(100*bo3+deppac,100*bo3,125*bo3+deppac,103*bo3,RGB(0,0,0))
            LineXY(100*bo4+deppac,100*bo4,125*bo4+deppac,97*bo4,RGB(0,0,0))
            LineXY(100*bo4+deppac,100*bo4,125*bo4+deppac,104*bo4,RGB(0,0,0))
            LineXY(100*bo5+deppac,100*bo5,125*bo5+deppac,96*bo5,RGB(0,0,0))
            LineXY(100*bo5+deppac,100*bo5,125*bo5+deppac,105*bo5,RGB(0,0,0))
            LineXY(100*bo6+deppac,100*bo6,125*bo6+deppac,95*bo6,RGB(0,0,0))
            LineXY(100*bo6+deppac,100*bo6,125*bo6+deppac,106*bo6,RGB(0,0,0))
            LineXY(100*bo7+deppac,100*bo7,125*bo7+deppac,94*bo7,RGB(0,0,0))
            LineXY(100*bo7+deppac,100*bo7,125*bo7+deppac,107*bo7,RGB(0,0,0))
            LineXY(100*bo8+deppac,100*bo8,125*bo8+deppac,93*bo8,RGB(0,0,0))
            LineXY(100*bo8+deppac,100*bo8,125*bo8+deppac,108*bo8,RGB(0,0,0))
            LineXY(100*bo9+deppac,100*bo9,125*bo9+deppac,92*bo9,RGB(0,0,0))
            LineXY(100*bo9+deppac,100*bo9,125*bo9+deppac,109*bo9,RGB(0,0,0))
            LineXY(100*bo10+deppac,100*bo10,125*bo10+deppac,91*bo10,RGB(0,0,0))
            LineXY(100*bo10+deppac,100*bo10,125*bo10+deppac,110*bo10,RGB(0,0,0))
            
            ;fin pacman
            
            ;Moi RV et mon pixel blanc
            
            Plot(10,10,RGB(255,255,255))        ; un point aux coordonnées 10,10 (coin en haut a gauche) de couleur rgb(255,255,255) blanc donc
            
            
            StopDrawing()                             ; C'est fini
            
            
            
            ; on va tester si le sprite va sortir de l'ecran
            ; et fabriquer un rebond par inversion de la coordonée  au  cas ou ...
            
            balle_bleue(1)\x=balle_bleue(1)\x + balle_bleue(1)\xpas ; on lance l'animation de la coordonées X
            balle_bleue(1)\Y=balle_bleue(1)\Y + balle_bleue(1)\ypas ; on lance l'animation de la coordonées Y
            
            ; on test les sorties d'ecran
            If  balle_bleue(1)\x>Width-32 Or balle_bleue(1)\x<0  ; si la coordonée X du sprite est superieur a la largeur de l'ecran (sortie a droite) ou plus petit que zero (sortie a gauche)
                ; le "-32" sert a ce que la detection de la sortie se fasse a droite du Sprite
                balle_bleue(1)\xpas=-balle_bleue(1)\xpas ; on inverse le sens des x , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des X 
            EndIf
            If  balle_bleue(1)\Y>Height-32 Or balle_bleue(1)\Y<0  ; si la coordonée Y du sprite est superieur a la lhauteur de l'ecran (sortie en bas) ou plus petit que zero (sortie en haut)
                ; le "-32" sert a ce que la detection de la sortie se fasse au dessous du Sprite
                balle_bleue(1)\ypas=-balle_bleue(1)\ypas ; on inverse le sens des Y , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des Y 
            EndIf
            
            DisplayTransparentSprite(#sprite_balle_bleue,balle_bleue(1)\x,balle_bleue(1)\Y) ; on affiche le Sprite aux coordonées 
            
            son=Random(1000)+500
            
            oliv(1)\text.s="petite demo pour Bernard 13" 
            oliv(1)\xt= oliv(1)\xt+2 :If  oliv(1)\xt>Width: oliv(1)\xt=-500:EndIf ; le text arrive a droite ? on le remet a gauche !!
            oliv(1)\yt=Height-125 ; emplacement verticale de la sinuzoide
            oliv(1)\cr=Random(255)+100
            ;oliv(1)\cv=Random(255)+100
            oliv(1)\cb=Random(255)+100 
            Ondulation( oliv(1)\xt, oliv(1)\yt, oliv(1)\text.s, oliv(1)\cr, oliv(1)\cv, oliv(1)\cb) ; appel de la procedure a OLIV on donne les coordonées que l'on veux, le text, et la couleur
            
            
            
            
            
            ;-affiche Raster
            With Raster
                For i = 0 To 29
                    DisplaySprite(\Sprite[i], 10 + i * 4, \CentreY + Sin((\angle + i * \pas * 2)  * 0.0174533) * \amplitude)
                      DisplaySprite(\Sprite[i], Width-240 + i * 4, \CentreY + Sin((\angle + i * \pas * 2)  * 0.0174533) * \amplitude)
                Next i
                \angle + \Vitesse
            EndWith 
            
            ;------------- routine boulles en rotation ---------
            rot.f+0.1
            For colon= 0 To 8           ;nombre de ligne  de boulles en rotation!! ou collone pitain je sais plus
                For ligne =0 To 8           ;nombre de collone de boulles en rotation!! ou ligne repitain je sais pas
                    posx=(colon*50)-200             ; pfff ca me gonffle les comment...
                    posy=(ligne*50)-300
                    ix=Cos(rot) * posx - Sin(rot) * posy
                    iy=Sin(rot) * posx + Cos(rot) * posy
                    iz1=Sin(rot) * iy + Cos(rot) * 100
                    cix=1000*ix/(1000-iz1)
                    ciy=1000*(Cos(rot) * iy - Sin(rot) * 100)/(1000-iz1) 
                    DisplayTransparentSprite(#sprite_tonton,cix+100+Width/2,ciy+ 100+Height/2)
                   
                Next ligne
            Next colon
            ;-------------- fin boulles en rotation -------- 
            
            FlipBuffers()                             ; Inverse les buffers
            ClearScreen(0)                            ; Efface l'écran
        Until KeyboardPushed(#PB_Key_Escape)        ; On s'en va!!!
        mciSendString_("CLOSE MIDI",0,0,0)
    EndIf
EndIf



End                                             ; Adios!

spectre:
Circle(100+avx0, 100+avy0, 20 ,coul)
Box(80+avx0,100+avy0, 40, 25 ,coul)
Circle(88+avx0, 122+avy0, 3 ,RGB(0,0,0))
Circle(100+avx0, 122+avy0, 3 ,RGB(0,0,0))
Circle(112+avx0, 122+avy0, 3 ,RGB(0,0,0))
Box(85+avx0,122+avy0, 6, 3,RGB(0,0,0))
Box(97+avx0,122+avy0, 6, 3,RGB(0,0,0))
Box(109+avx0,122+avy0, 6, 3,RGB(0,0,0))
Circle(108+avx0, 95+avy0, 5 ,RGB(255,255,255))
Circle(94+avx0, 95+avy0, 5 ,RGB(255,255,255))
Circle(108+avx0+yyex0, 95+avy0+yyey0, 3 ,RGB(0,0,0))
Circle(94+avx0+yyex0, 95+avy0+yyey0, 3 ,RGB(0,0,0))
Return


Procedure Ondulation(x,Y,Texte.s,r,v,b)
    ; procedure realisé par OLIV
 
    StartDrawing ( ScreenOutput ()) ; Pour pouvoir utiliser les commandes des dessin 2D.
    DrawingFont ( FontID ( #font )) ; On change la police
    DrawingMode (1) ; On selectionne le mode pour ne pas avoir de fond derrière les lettres.
    FrontColor ( RGB (r,v,b) ) ; On change la couleur.
    
    oliv(1)\angle + #VitesseAngle ; Angle de départ de la sinusoide en radian
    If  oliv(1)\angle >= 2 * #PI
         oliv(1)\angle = 0
    EndIf
    ; On affiche toute les lettres
    posx = 10 ; Position du caractère
    For n = 1 To Len (Texte) ; Pour chaque lettre du texte
        Lettre.s = Mid (Texte, n, 1) ; on récupère la lettre à la position n
        posy = 50 + #HauteurSin * Sin ( oliv(1)\angle + posx / #LargeurSin ) ; on calcul la position en Y de la lettre
        ; On part du centre de l'image (50) puis on ajoute un sin
        ; #HauteurSin fait varier l'amplitude du mouvement
        ; l'angle mis dans le sinus est d'abord composé de l'angle de départ d'affichage du texte (Angle)
        ; puis on augmente l'angle au fur et à mesure que l'on affiche des lettres avec le coefficient #LargeurSin qui permet de faire varier la largeur de la sinusoide
        
        DrawText (x+posx, Y+posy,Lettre)
        posx + TextWidth (Lettre)
    Next
    StopDrawing () ; On signife que l'on arrête les fonctions dessin 2D.
EndProcedure   

DataSection
Couleur :
Data.l $13, $30, $50, $70, $8E, $AE, $CF, $EC
Data.l $FF, $EB, $CF, $AF, $8E, $71, $50, $30
Data.l $0, $30914, $61632, $92454, $D3373, $104193, $144FB5, $185CD2
Data.l $1A65E7, $185CD2, $144FB4, $114193, $D3373, $A2554, $51632, $30A15
Data.l $1D2D, $314B, $4569, $5785, $6BA3, $7EC1, $90DC, $9CEE
Data.l $90DB, $7FC2, $6BA3, $5785, $4569, $314B, $1D2C, $D12
Data.l $62518, $B3E27, $F5837, $136F46, $178755, $1CA165, $1FB673, $22C67D
Data.l $20B773, $1CA166, $178755, $136F46, $F5837, $B3F28, $62518, $30F0A
Data.l $152516, $233E25, $315735, $3F6D43, $4D8652, $5B9F62, $67B56F, $70C478
Data.l $67B56E, $5BA062, $4D8752, $3E6D43, $325635, $243E26, $152417, $80F0A
Data.l $152209, $24390F, $324F15, $3F651A, $4E7C20, $5C9226, $69A62C, $72B42F
Data.l $69A62C, $5C9226, $4E7C20, $40641A, $324F15, $24390E, $152209, $90E04
Data.l $22230B, $393A13, $50511A, $666621, $7C7E29, $939631, $A7AA38, $B5B83C
Data.l $A7AA37, $939631, $7C7E2A, $656621, $50521B, $393A13, $22230B, $E0E05
Data.l $423411, $5E4919, $785D1F, $927226, $AD872D, $C89C34, $DFAE3B, $EFBB3F
Data.l $DEAE3B, $C79C34, $AD872D, $927227, $785D1F, $5D4A18, $423412, $271E0A
Data.l $251A12, $3E2C1E, $573C2A, $6E4D35, $875F41, $A0704D, $B68058, $C58A5F
Data.l $B58057, $A0704D, $875F41, $6E4D35, $573D29, $3E2B1E, $251A12, $F0A07
Data.l $211513, $372321, $4E302D, $633D39, $784C46, $8F5953, $A3665F, $B06E66
Data.l $A3655E, $8F5A53, $794B46, $623D39, $4E312D, $372220, $211514, $D0808
Data.l $C0609, $1D0F14, $311921, $44232F, $562C3B, $693649, $7D4056, $8E4961
Data.l $9A4F6A, $8E4962, $7D4056, $693648, $562C3B, $44232F, $311921, $1D0F14
Data.l $1D101B, $311B2D, $44263F, $573050, $6B3B62, $7E4673, $8F4F83, $9B568E
Data.l $8F5083, $7E4673, $6A3B61, $573050, $45263E, $301B2D, $1D101A, $C070B
Data.l $C0912, $1E142C, $31214A, $452F69, $583C84, $6D49A3, $8157C0, $9262DA
Data.l $9E6BED, $9262DB, $8157C0, $6D4AA2, $583C85, $462F69, $32224B, $1E152C
Data.l $211D42, $2E2A5D, $3B3676, $484190, $564EAB, $635AC5, $6E63DC, $766BEC
Data.l $6E64DC, $6259C6, $554EAB, $48418F, $3B3676, $2F2A5C, $211D41, $141227
Data.l $18003F, $220058, $2C0070, $350089, $3F00A3, $4900BD, $5100D2, $5700E1
Data.l $5100D1, $4800BC, $3F00A3, $350089, $2C0070, $220059, $18003E, $E0025
Data.l $23003E, $320059, $3F0071, $4D008A, $5C00A3, $6A00BD, $7600D3, $7F00E2
Data.l $7700D2, $6A00BD, $5C00A4, $4D0089, $400071, $320058, $23003F, $150025
Data.l $220029, $310039, $3E0049, $4B0059, $59006A, $66007A, $720088, $7B0092
Data.l $730088, $67007A, $59006A, $4A0059, $3E0049, $300039, $220028, $140018
Data.l $22031C, $310328, $3D0433, $4B053E, $59064A, $670755, $73085F, $7B0966
Data.l $73085F, $670855, $590649, $4A053E, $3D0433, $300428, $22021C, $140111
Data.l $220511, $300718, $3E081E, $4A0B25, $590D2C, $670E33, $721038, $7B113D
Data.l $721039, $670E33, $590C2C, $4A0A25, $3E091F, $300718, $220510, $14030A
Data.l $29130E, $3A1B13, $4B2219, $5A291F, $6C3125, $7C382A, $8B3E2F, $954332
Data.l $8B3F2F, $7C382A, $6C3025, $5A291E, $4A2219, $3B1A14, $2A130E, $190B08
Data.l $E0800, $221400, $382100, $4F2F00, $643B00, $7A4800, $915500, $A56100
Data.l $B36900, $A56000, $925600, $7B4800, $643B00, $4F2F00, $382100, $221300
Data.l $120D00, $2C2100, $4A3800, $684E00, $836300, $A17A00, $BF9000, $D9A400
Data.l $EBB200, $D9A400, $BF9100, $A17A00, $836400, $684E00, $4A3900, $2C2200
Data.l $D0D00, $1D1F00, $323400, $464900, $595C00, $6C7100, $808500, $929700
Data.l $9EA400, $919700, $808600, $6C7100, $585B00, $464800, $323300, $1E1F00
Data.l $1B2C00, $273E00, $314F00, $3B6000, $477300, $528500, $5C9400, $629F00
Data.l $5B9400, $518500, $477300, $3C6100, $315000, $263E00, $1B2C00, $101A00
Data.l $50E00, $B2100, $133700, $1A4D00, $216200, $287800, $308F00, $36A200
Data.l $3BB000, $37A200, $308E00, $297900, $216200, $1A4E00, $133800, $B2100
Data.l $93722, $D4D31, $11633F, $15794C, $198F5A, $1DA669, $20B975, $22C67D
Data.l $20B975, $1CA568, $18905B, $15784C, $11633E, $D4E30, $93723, $62114
Data.l $4344, $5F62, $7A7D, $9497, $B0B4, $CCD0, $E3E8, $F4F9
Data.l $E3E8, $CCD0, $B1B5, $9597, $7A7D, $6062, $4344, $2829
Data.l $2B42, $3E5E, $4E77, $5F90, $71AC, $82C7, $91DD, $9CEE
Data.l $92DE, $83C7, $71AD, $5F91, $4E77, $3D5D, $2B41, $1A27
Data.l $20812, $4132C, $81F48, $B2C66, $F3881, $12469E, $1552BC, $185DD5
Data.l $1A65E7, $185DD5, $1552BB, $12459F, $F3881, $B2D66, $82049, $5132C
Data.l $40011, $8002A, $D0046, $120063, $17007C, $1C0099, $2200B5, $2600CE
Data.l $2900DF, $2500CE, $2100B5, $1C0099, $17007C, $120063, $D0046, $80029
EndDataSection 
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

Message par tonton »

ha de retour! :)

pour ceux qui connaissent la console Vectrex.
j ai ajouté le vaisseau de "mine storm" pilotable avec les fleches

Code : Tout sélectionner


Structure oliv 
    angle.f 
    long_text_bas.l 
    xt.l 
    yt.l 
    text.s 
    cr.w 
    cv.w 
    cb.w 
EndStructure 
Global Dim oliv.oliv(1) 
Declare Ondulation(x,Y,Texte.s,r,v,b) 
; ***** variables a OLIV ********* 
          ; Variables 

#HauteurSin = 25 ; Coef qui joue sur la hauteur de la sinusoide 
#LargeurSin = 50 ; Coef qui joue sur la largeur de la sinusoide 
#VitesseAngle = 1 * #PI / 50 ; vitesse de modification de l'angle de départ du texte 
#Vitesse = 50 ; Temps du Delay() qui ralentit/augmente l'animation. 
#font =1 
#font2=2 

 ; **************************************** 

Structure dobro_fumee 
    angle.l 
    amplitude.f 
    Texte.s 
    pas.f 
    i.f 
    Vitesse.f 
    a.f 
    artichaut.f 
    artison.f 
    ss.f 
    coul.w 
    x.l 
EndStructure 
Dim dobro_fumee.dobro_fumee(1) 

;************************** raster fumee palette **************************** 
Global Dim palette.l(500) 
For i = 0 To 500 
    angle88 = angle88 + ((2 * #PI) / 500) 
    palette(i) = RGB (Abs (Cos (angle88+ (4*#PI/6))* 255),Abs (Cos (angle88 + #PI/3)* 255), Abs (Cos (angle88)* 255)) 
Next 
dobro_fumee(1)\Vitesse.f = 8.2 ;donne scrolling vert ou hori suivant 
dobro_fumee(1)\amplitude.f =120 ; profondeur des dents 
dobro_fumee(1)\pas.f = 0.3 ; nombre de dent de scie 
dobro_fumee(1)\ss.f=5 
; ****************************************************** 

Structure dobro_titre 
    angle.l 
    x.l 
    amplitude.l 
EndStructure 
Dim dobro_titre.dobro_titre(1) 

dobro_titre(1)\angle=0 
dobro_titre(1)\amplitude=2 
dobro_titre(1)\x=0 

Structure balle_bleue 
    x.l 
    Y.l 
    xpas.l 
    ypas.l 
EndStructure 
Dim  balle_bleue. balle_bleue(1) 



; **************************** Raster a Comtois ************************** 
        ;-Préparation Raster 
        
Structure s_Raster 
    CentreX.l 
    CentreY.l 
    Vitesse.f 
    angle.f 
    amplitude.l 
    pas.f 
    Fond.l 
    Sprite.l[30] 
EndStructure 
        
Structure s_Texte 
    Texte.s 
    depx.l 
    depy.l 
    x.l 
    Y.l 
    mx.l 
    my.l 
EndStructure 
; **************************************************************** 


Global angle1,amplitude 
Global amplitude1=2 
Texte.s="PUREBASIC 4.10" 

Buffer$=Space(128) 
mciSendString_("open  5.MID type sequencer alias mid",Buffer$,128,0) 
mciSendString_("play mid",0,0,0) 


InitSprite()                                    ; Initialise les sprites 
InitKeyboard()                                  ; Initialise le clavier 

LoadFont ( #font , "Arial" ,40) 
LoadFont(#font2, "arial", 20 ,#PB_Font_Italic ) 

#sprite_balle_bleue=1 ; on donne un numero au sprite 
#sprite_raster=1000 
#sprite_tonton=2000 
depx=4                                          ; deplacement horizontal 
depy=4                                          ; deplacement vertical 
etx=0 
ety=0 
passsx=5 
passsy=5 
yex=2 
yey=2 
passsx1=6 
passsy1=6 
yex1=2 
yey1=2 
passsx2=2 
passsy2=2 
yex2=2 
yey2=2 
bpas=1 
rotm.f
depmx.f
depmy.f
depmx1.f
depmy1.f
acc.f=0
depmx=200
depmy=200
  

If ExamineDesktops()                            ; Liste les bureaux 
    
    Width  = DesktopWidth(0)                      ; Largeur actuelle 
    Height = DesktopHeight(0)                    ; Hauteur actuelle 
    Depth  = DesktopDepth(0)                      ; Profondeur de couleurs actuelle 
    CentreX=Width/2 
    Rien$ = "BERNARD 13"                                ; Titre de l'application à B13 
    
    ; *********** Creation de la balle Bleue ************************** 
    ;- creation balle bleue 
    If OpenScreen(Width, Height, Depth, "Intro")  ; Ouvre l'écran  
        CreateSprite(#sprite_balle_bleue,64,64) ; on cree un sprite de 32 par 32 
        StartDrawing(SpriteOutput(#sprite_balle_bleue)) ; on va dessiner dedans !! 
        Circle(32,32,32,RGB(0,0,155)) ; un rond bleu 
         Circle(33,31,25,RGB(0,0,180)) ; un rond bleu 
          Circle(34,30,20,RGB(0,0,200)) ; un rond bleu 
           Circle(36,28,17,RGB(0,0,225)) ; un rond bleu 
            Circle(38,26,15,RGB(0,0,245)) ; un rond bleu 
             Circle(40,24,10,RGB(0,0,255)) ; un rond bleu 
              Circle(42,22,4,RGB(255,255,255)) ; un rond bleu 
        StopDrawing() ; voila notre sprite est pret !! :D 
        ; on va pouvoir l'apeler par son nom !! (#sprite) 
        balle_bleue(1)\xpas=10 ; ceci va determiner le sens du sprite  pour les X et sa vitesse de deplacement 
        balle_bleue(1)\ypas=10; ceci va determiner le sens du sprite  pour les Y et sa vitesse de deplacement 
        ; ********************************************************** 
        
        ;-creation boules a Tonton 
        ; ************ creation d'un boule pour les boules a tonton ***************** 
        CreateSprite(#sprite_tonton,64,64) ; on cree un sprite de 32 par 32 
        StartDrawing(SpriteOutput(#sprite_tonton)) ; on va dessiner dedans !! 
        Circle(32,32, 20 ,RGB(150,50,50)) 
        Circle(32,32, 16 ,RGB(170,70,70)) 
        Circle(32,32, 12 ,RGB(190,90,90)) 
        Circle(32,32, 4 ,RGB(250,250,250)) 
        StopDrawing() ; voila notre sprite est pret !! :D 
        ; ******************************************************* 
        
        
        
        
        
        
        ;- creation image pour le titre 
            ; *********** Creation de l'image pour le titre ************************** 
        CreateImage(100, 250, 100)  ; on cree un image 
        StartDrawing( ImageOutput(100)) ; on va dessiner dans une image reperé   "100" 
        FrontColor(RGB($0,$FF,$FF)) ; couleur d'ecriture 
        BackColor(RGB(0, 0, 0)) ; couleur de fons 
        
        DrawingFont(FontID(#font2)) 
        DrawingMode(1) 
        DrawText(0,0,Texte.s) ; on ecrit "PUREBASIC 4.10" dedans notre image 
        StopDrawing() 
        
        ; ceci va lire l'image ligne par ligne et recreer autant d'image qu'il y a de ligne !! 
        For t=0 To 100 
            GrabImage(100, t, 0, t, 250,1)  ; voila on prend un ligne et on en fait une image d'une ligne de large 1 pixel de haut 
        Next t ; on a un bon stock de ligne la :D 101 pour etre exact :) 
          ; ****************************************************************** 
        
        ;- préparation Raster a Comtois 
        ; ****************** Raster a Comtois ********************** 
        Declare DeplaceTexte(*T.s_Texte) 
        Global Raster.s_Raster 
        Define.s_Texte TexteRaster 
        With TexteRaster 
            \Texte = "Comtois" 
            \depx = 2 
            \depy = 2 
            \x = Width/2 
            \Y = Height/2 
            \mx = Width 
            \my = Height 
        EndWith 
        
        Raster\Fond = CreateSprite(#PB_Any,480,480) 
        StartDrawing(SpriteOutput(Raster\Fond)) 
        For l=0 To 479 
            Restore Couleur 
            For i = 0 To 479 
                Read coul 
                Plot(l,i,coul) 
            Next i 
        Next l 
        StopDrawing() 
        
        With Raster 
            UseBuffer(\Fond) 
            For i = 0 To 29 
                \Sprite[i] = GrabSprite(#PB_Any, i * 8, i* 16, 240 - i * 8, 16) 
            Next 
            UseBuffer(-1) 
            FreeSprite(\Fond) 
            \CentreX = (Width  - SpriteWidth(\Sprite[0]))  / 2 
            \CentreY = (Height - SpriteHeight(\Sprite[0])) / 2 
            \Vitesse = 6 
            \angle = 0 
            \amplitude = 120 
            \pas = 3.8 
        EndWith      
        ; *************************************************** 
        
          
        Repeat                                      ; Boucle 
            ExamineKeyboard()                         ; Scanne l'état du clavier  
            StartDrawing(ScreenOutput())              ; Démarre le dessin dans le buffer 
            
            angle5 + Vitesse5 
            
              
            ;-affiche Fumee 
            ; ************************ Raster Fumée arriere plan :D *********************************** 
            dobro_fumee(1)\artichaut = dobro_fumee(1)\artichaut+Cos( 36)/10 
           dobro_fumee(1)\artison =dobro_fumee(1)\artison+Sin( 36) 
            dobro_fumee(1)\a = Sin (( dobro_fumee(1)\x + dobro_fumee(1)\artichaut)/(500 + Sin (dobro_fumee(1)\x/100)*100)) * 75 + 75 
            For Y=1 To Height-1 
                dobro_fumee(1)\artichaut = Cos ((Y + dobro_fumee(1)\artison)/(300 + Cos (Y/100)*100)) * 75 + 75 
               dobro_fumee(1)\coul  = dobro_fumee(1)\a + dobro_fumee(1)\artichaut 
                If dobro_fumee(1)\coul  > 500 
                  dobro_fumee(1)\coul =dobro_fumee(1)\coul -500 
                EndIf 
                dobro_fumee(1)\coul =palette (dobro_fumee(1)\coul) 
                dobro_fumee(1)\i=Y 
                dobro_fumee(1)\amplitude= dobro_fumee(1)\amplitude+dobro_fumee(1)\ss 
                If dobro_fumee(1)\amplitude>120:dobro_fumee(1)\ss=-dobro_fumee(1)\ss:EndIf 
                If dobro_fumee(1)\amplitude<-120:dobro_fumee(1)\ss=-0.001:dobro_fumee(1)\ss=-dobro_fumee(1)\ss:EndIf    
                dobro_fumee(1)\x=(CentreX-200)+ Sin((dobro_fumee(1)\angle + dobro_fumee(1)\i* dobro_fumee(1)\pas*10  )  * 0.0174533) * dobro_fumee(1)\amplitude 
                LineXY(dobro_fumee(1)\x+Sin((dobro_fumee(1)\angle +dobro_fumee(1)\i* dobro_fumee(1)\pas*3  )  * 0.0174533) * dobro_fumee(1)\amplitude ,Y,dobro_fumee(1)\x+500+Sin((dobro_fumee(1)\angle + dobro_fumee(1)\i* dobro_fumee(1)\pas*5  )  * 0.0174533) * dobro_fumee(1)\amplitude ,Y,dobro_fumee(1)\coul) 
            Next Y 
            dobro_fumee(1)\angle=dobro_fumee(1)\angle + dobro_fumee(1)\Vitesse 
            ; ******************************************************************************** 
              
         ;-affiche Titre 
            ; ********************** Titre ************************************************ 
            For y1= 0 To 100 ; on va ré afficher nos 101 lignes mais en les positionant par rapport a une sinuzoide := 
                DrawingFont(FontID(#font2)) 
                dobro_titre(1)\angle=dobro_titre(1)\angle+1 :If dobro_titre(1)\angle=360*10: dobro_titre(1)\angle=0 :EndIf 
                dobro_titre(1)\x+(Sin(dobro_titre(1)\angle*2*#PI/50)*dobro_titre(1)\amplitude) ; le X varie en fonction de Sin() 
                DrawImage( ImageID(y1), dobro_titre(1)\x+y1, y1,Width,1) 
            Next y1   ; voila voila !! :D 
            ; ******************************************************************** 
            
            
            ;-affiche simulateur d'antenne cassée -------------------- 
            recep +20         ;pas de la figne de synchro 
            If recep>Height-4   ;il elle est en bas 
                recep =2          ;on la remet en haut 
            EndIf 
            LineXY(0,recep,Width,recep,RGB(110,110,110))    ;lignes synchro 
            LineXY(0,recep-1,Width,recep-1,RGB(90,90,90))    
            LineXY(0,recep+1,Width,recep+1,RGB(90,90,90)) 
            LineXY(0,recep-2,Width,recep-2,RGB(70,70,70)) 
            LineXY(0,recep+2,Width,recep+3,RGB(70,70,70)) 
            hh=Width-100 
            vv=Height-200 ; determine la bande du 16/9 eme 
            For etoile =0 To 10000             ;nombre de fourmis 
                etx=Random(hh)+50                   ;position aleatoire des fourmis en coordonné x 
                ety=Random(vv)+100     ;position aleatoire des fourmis en coordonné y 
                cr=Random(255)+100 
                cv=Random(255)+100 
                cb=Random(255)+100 
                Plot (etx,ety,RGB(r,v,b))     ;plusieur "plot" pour donner du relief a la foumis 
                Plot (etx+1,ety,RGB(cr-20,cv-20,cb-20)) 
                Plot (etx-1,ety,RGB(cr-20,cv-20,cb-20)) 
                Plot (etx,ety+1,RGB(cr-20,cv-20,cb-20)) 
                Plot (etx,ety-1,RGB(cr-20,cv-20,cb-20)) 
                Plot (etx+1,ety+1,RGB(cr-100,cv-100,cb-100)) 
                Plot (etx-1,ety-1,RGB(cr-100,cv-100,cb-100)) 
                Plot (etx-1,ety+1,RGB(cr-100,cv-100,cb-100)) 
                Plot (etx+1,ety-1,RGB(cr-100,cv-100,cb-100)) 
            Next 
            LineXY(0,ety,Width,ety,RGB(150,150,150))  ;ligne horizontal parasite 
            LineXY(0,ety-1,Width,ety-1,RGB(120,120,120)) 
            LineXY(0,ety+1,Width,ety+1,RGB(120,120,120)) 
            
            ;---------  fin du simulateur d antenne cassée ------------------ 
            
            
            
            ;-affiche le text Bernard 13 
            DrawText((Width/2 - TextWidth(Rien$)/2)+a, (Height/2 - TextHeight(Rien$)/2)+b, "BERNARD 13", $FFFFFF, $000000) ; Dessine 
            
            a+depx                                     ;on deplace la position du texte sur l horizontal 
            b+depy                                     ;on deplace la position du texte sur la vertical 
            If (Width/2 - TextWidth(Rien$)/2)+a>Width-TextWidth(Rien$)  ;si le texte depasse la largeure de l' écran 
                depx=-depx                                ;on inverse le pas horizontal en négatif 
            EndIf 
            If (Width/2 - TextWidth(Rien$)/2)+a<0      ;si le texte  depasse a gauche de l' écran 
                depx=-depx                                ;on inverse le pas horizontal en positif 
            EndIf 
            
            If (Height/2 - TextHeight(Rien$)/2)+b>Height-TextHeight(Rien$);si le texte depasse la hauteur de l' écran 
                depy=-depy                                 ;on inverse le pas vertical en negatif 
            EndIf 
            If (Height/2 - TextHeight(Rien$)/2)+b<0    ;si le texte  depasse en base de l' écran 
                depy=-depy                                ;on inverse le pas vertical en positif 
            EndIf 
            
            
        
            
            ;-------------bebut spectre------------ 
            
            avx+passsx*veroux 
            avy+passsy*verouy 
            yyex=yex*veroux 
            yyey=yey*verouy 
            varix=Random(100) 
            variy=Random(100) 
            varix1=Random(100) 
            variy1=Random(100) 
            varix2=Random(100) 
            variy2=Random(100) 
            
            If avx>Width-150 Or  avx<0 Or varix=50 
                passsx=-passsx 
                veroux=1 
                verouy=0 
                yex=-yex 
            EndIf 
            If avy>Height-150 Or  avy<0 Or variy=50 
                passsy=-passsy 
                veroux=0 
                verouy=1 
                yey=-yey 
            EndIf 
            avx0=avx 
            avy0=avy 
            yyex0=yyex 
            yyey0=yyey 
            coul=$0000FF 
            Gosub spectre 
            
            
            avx1+passsx1*veroux1 
            avy1+passsy1*verouy1 
            yyex1=yex1*veroux1 
            yyey1=yey1*verouy1 
            
            
            If avx1>Width-150 Or  avx1<0 Or varix1=50 
                passsx1=-passsx1 
                veroux1=1 
                verouy1=0 
                yex1=-yex1 
            EndIf 
            If avy1>Height-150 Or  avy1<0 Or variy1=50 
                passsy1=-passsy1 
                veroux1=0 
                verouy1=1 
                yey1=-yey1 
            EndIf 
            avx0=avx1 
            avy0=avy1 
            yyex0=yyex1 
            yyey0=yyey1 
            coul=$FF0000 
            Gosub spectre 
            
            
            avx2+passsx2*veroux2 
            avy2+passsy2*verouy2 
            yyex2=yex2*veroux2 
            yyey2=yey2*verouy2 
            
            If avx2>Width-150 Or  avx2<0 Or varix2=50 
                passsx2=-passsx2 
                veroux2=1 
                verouy2=0 
                yex2=-yex2 
            EndIf 
            If avy2>Height-150 Or  avy2<0 Or variy2=50 
                passsy2=-passsy2 
                veroux2=0 
                verouy2=1 
                yey2=-yey2 
            EndIf 
            avx0=avx2 
            avy0=avy2 
            yyex0=yyex2 
            yyey0=yyey2 
            coul=$00FF00 
            Gosub spectre 
            
            
            
            ;--------------fin spetcre-------------- 
            ;debut pacman 
            Circle(100+deppac, 100, 25 ,RGB(250,255,00)) 
            bo+bpas 
            deppac+5 
            If deppac>1300 
                deppac=0 
            EndIf 
            If bo>10 Or bo<0 
                bpas=-bpas 
            EndIf 
            
            If bo=0 
                bo1=0: bo2=0: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0 
            EndIf 
            
            If bo=1 
                bo1=1: bo2=0: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0 
            EndIf 
            If bo=2 
                bo1=1: bo2=1: bo3=0: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0 
            EndIf 
            If bo=3 
                bo1=1: bo2=1: bo3=1: bo4=0: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0 
            EndIf 
            If bo=4 
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=0: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0 
            EndIf 
            If bo=5 
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=0: bo7=0: bo8=0: bo9=0: bo10=0 
            EndIf 
            If bo=6 
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=0: bo8=0: bo9=0: bo10=0 
            EndIf 
            If bo=7 
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1 :bo6=1: bo7=1: bo8=0: bo9=0: bo10=0 
            EndIf 
            If bo=8 
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=0: bo10=0 
            EndIf 
            If bo=9 
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=1: bo10=0 
            EndIf 
            If bo=10 
                bo1=1: bo2=1: bo3=1: bo4=1: bo5=1: bo6=1: bo7=1: bo8=1: bo9=1: bo10=0 
            EndIf 
            
            
            LineXY(100*bo1+deppac,100*bo1,125*bo1+deppac,100*bo1,RGB(0,0,0)) 
            LineXY(100*bo1+deppac,100*bo1,125*bo1+deppac,101*bo1,RGB(0,0,0)) 
            LineXY(100*bo2+deppac,100*bo2,125*bo2+deppac,99*bo2,RGB(0,0,0)) 
            LineXY(100*bo2+deppac,100*bo2,125*bo2+deppac,102*bo2,RGB(0,0,0)) 
            LineXY(100*bo3+deppac,100*bo3,125*bo3+deppac,98*bo3,RGB(0,0,0)) 
            LineXY(100*bo3+deppac,100*bo3,125*bo3+deppac,103*bo3,RGB(0,0,0)) 
            LineXY(100*bo4+deppac,100*bo4,125*bo4+deppac,97*bo4,RGB(0,0,0)) 
            LineXY(100*bo4+deppac,100*bo4,125*bo4+deppac,104*bo4,RGB(0,0,0)) 
            LineXY(100*bo5+deppac,100*bo5,125*bo5+deppac,96*bo5,RGB(0,0,0)) 
            LineXY(100*bo5+deppac,100*bo5,125*bo5+deppac,105*bo5,RGB(0,0,0)) 
            LineXY(100*bo6+deppac,100*bo6,125*bo6+deppac,95*bo6,RGB(0,0,0)) 
            LineXY(100*bo6+deppac,100*bo6,125*bo6+deppac,106*bo6,RGB(0,0,0)) 
            LineXY(100*bo7+deppac,100*bo7,125*bo7+deppac,94*bo7,RGB(0,0,0)) 
            LineXY(100*bo7+deppac,100*bo7,125*bo7+deppac,107*bo7,RGB(0,0,0)) 
            LineXY(100*bo8+deppac,100*bo8,125*bo8+deppac,93*bo8,RGB(0,0,0)) 
            LineXY(100*bo8+deppac,100*bo8,125*bo8+deppac,108*bo8,RGB(0,0,0)) 
            LineXY(100*bo9+deppac,100*bo9,125*bo9+deppac,92*bo9,RGB(0,0,0)) 
            LineXY(100*bo9+deppac,100*bo9,125*bo9+deppac,109*bo9,RGB(0,0,0)) 
            LineXY(100*bo10+deppac,100*bo10,125*bo10+deppac,91*bo10,RGB(0,0,0)) 
            LineXY(100*bo10+deppac,100*bo10,125*bo10+deppac,110*bo10,RGB(0,0,0)) 
            
            ;fin pacman 
             ;--------------------- mine storm
        
               posxm1=0
               posym1=15
               posxm2=10
               posym2=-15
               posxm3=0
               posym3=-10
               posxm4=-10
               posym4=-15
               
               posxm5=0
               posym5=-12
               posxm6=0
               posym6=-40
               posxm7=-5
               posym7=-38
               posxm8=5
               posym8=-38
               cosrot.f=Cos(rotm)
               sinrot.f=Sin(rotm)
                    ixm1=cosrot * posxm1 - sinrot * posym1 
                    iym1=sinrot * posxm1 + cosrot * posym1 
                    ixm2=cosrot * posxm2 - sinrot * posym2 
                    iym2=sinrot * posxm2 + cosrot * posym2 
                    ixm3=cosrot * posxm3 - sinrot * posym3 
                    iym3=sinrot * posxm3 + cosrot * posym3 
                    ixm4=cosrot * posxm4 - sinrot * posym4 
                    iym4=sinrot * posxm4 + cosrot * posym4 
                       If depmx>Width
                       depmx=0
                       EndIf
                       If depmy>Height
                       depmy=0
                       EndIf
                       If depmx<0
                       depmx=Width
                       EndIf
                       If depmy<0
                       depmy=Height
                       EndIf
                       LineXY(ixm1+depmx,iym1+depmy,ixm2+depmx,iym2+depmy,RGB(255,255,255))  
                       LineXY(ixm2+depmx,iym2+depmy,ixm3+depmx,iym3+depmy,RGB(255,255,255)) 
                       LineXY(ixm3+depmx,iym3+depmy,ixm4+depmx,iym4+depmy,RGB(255,255,255)) 
                       LineXY(ixm4+depmx,iym4+depmy,ixm1+depmx,iym1+depmy,RGB(255,255,255))  
                       If push0=1 
                      If Random(1)=1
                     ixm5=cosrot * posxm5 - sinrot * posym5
                    iym5=sinrot* posxm5 + cosrot * posym5 
                    ixm6=cosrot * posxm6 - sinrot * posym6 
                    iym6=sinrot * posxm6 + cosrot * posym6 
                    ixm7=cosrot * posxm7 - sinrot * posym7 
                    iym7=sinrot * posxm7 + cosrot * posym7 
                    ixm8=cosrot * posxm8 - sinrot * posym8 
                    iym8=sinrot * posxm8 + cosrot * posym8    
                   LineXY(ixm5+depmx,iym5+depmy,ixm6+depmx,iym6+depmy,RGB(255,255,255))  
                   LineXY(ixm5+depmx,iym5+depmy,ixm7+depmx,iym7+depmy,RGB(255,255,255)) 
                     LineXY(ixm5+depmx,iym5+depmy,ixm8+depmx,iym8+depmy,RGB(255,255,255)) 
                     EndIf
                     EndIf
                  ;---------- fin mine storm ---------------------      
            
            ;Moi RV et mon pixel blanc 
            
            Plot(10,10,RGB(255,255,255))        ; un point aux coordonnées 10,10 (coin en haut a gauche) de couleur rgb(255,255,255) blanc donc 
            
            
            StopDrawing()                             ; C'est fini 
            
            
            
            ; on va tester si le sprite va sortir de l'ecran 
            ; et fabriquer un rebond par inversion de la coordonée  au  cas ou ... 
            
            balle_bleue(1)\x=balle_bleue(1)\x + balle_bleue(1)\xpas ; on lance l'animation de la coordonées X 
            balle_bleue(1)\Y=balle_bleue(1)\Y + balle_bleue(1)\ypas ; on lance l'animation de la coordonées Y 
            
            ; on test les sorties d'ecran 
            If  balle_bleue(1)\x>Width-32 Or balle_bleue(1)\x<0  ; si la coordonée X du sprite est superieur a la largeur de l'ecran (sortie a droite) ou plus petit que zero (sortie a gauche) 
                ; le "-32" sert a ce que la detection de la sortie se fasse a droite du Sprite 
                balle_bleue(1)\xpas=-balle_bleue(1)\xpas ; on inverse le sens des x , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des X 
            EndIf 
            If  balle_bleue(1)\Y>Height-32 Or balle_bleue(1)\Y<0  ; si la coordonée Y du sprite est superieur a la lhauteur de l'ecran (sortie en bas) ou plus petit que zero (sortie en haut) 
                ; le "-32" sert a ce que la detection de la sortie se fasse au dessous du Sprite 
                balle_bleue(1)\ypas=-balle_bleue(1)\ypas ; on inverse le sens des Y , ce qui aura pour consequence de faire aller le Sprite dans l'autre sens des Y 
            EndIf 
            
            DisplayTransparentSprite(#sprite_balle_bleue,balle_bleue(1)\x,balle_bleue(1)\Y) ; on affiche le Sprite aux coordonées 
            
            son=Random(1000)+500 
            
            oliv(1)\text.s="petite demo pour Bernard 13" 
            oliv(1)\xt= oliv(1)\xt+2 :If  oliv(1)\xt>Width: oliv(1)\xt=-500:EndIf ; le text arrive a droite ? on le remet a gauche !! 
            oliv(1)\yt=Height-125 ; emplacement verticale de la sinuzoide 
            oliv(1)\cr=Random(255)+100 
            ;oliv(1)\cv=Random(255)+100 
            oliv(1)\cb=Random(255)+100 
            Ondulation( oliv(1)\xt, oliv(1)\yt, oliv(1)\text.s, oliv(1)\cr, oliv(1)\cv, oliv(1)\cb) ; appel de la procedure a OLIV on donne les coordonées que l'on veux, le text, et la couleur 
            
            
            
            
            
            ;-affiche Raster 
            With Raster 
                For i = 0 To 29 
                    DisplaySprite(\Sprite[i], 10 + i * 4, \CentreY + Sin((\angle + i * \pas * 2)  * 0.0174533) * \amplitude) 
                      DisplaySprite(\Sprite[i], Width-240 + i * 4, \CentreY + Sin((\angle + i * \pas * 2)  * 0.0174533) * \amplitude) 
                Next i 
                \angle + \Vitesse 
            EndWith 
            
            ;------------- routine boulles en rotation --------- 
            rot.f+0.1 
            For colon= 0 To 8           ;nombre de ligne  de boulles en rotation!! ou collone pitain je sais plus 
                For ligne =0 To 8           ;nombre de collone de boulles en rotation!! ou ligne repitain je sais pas 
                    posx=(colon*50)-200             ; pfff ca me gonffle les comment... 
                    posy=(ligne*50)-300 
                    ix=Cos(rot) * posx - Sin(rot) * posy 
                    iy=Sin(rot) * posx + Cos(rot) * posy 
                    iz1=Sin(rot) * iy + Cos(rot) * 100 
                    cix=1000*ix/(1000-iz1) 
                    ciy=1000*(Cos(rot) * iy - Sin(rot) * 100)/(1000-iz1) 
                    DisplayTransparentSprite(#sprite_tonton,cix+100+Width/2,ciy+ 100+Height/2) 
                    
                Next ligne 
            Next colon 
            ;-------------- fin boulles en rotation -------- 
            
            FlipBuffers()                             ; Inverse les buffers 
            ClearScreen(0)                            ; Efface l'écran 
            
            
              ; -----------clavier mine storm ----------------   
            ExamineKeyboard()
             If  KeyboardPushed(#PB_Key_Left)
              rotm-0.1
              EndIf
             If  KeyboardPushed( #PB_Key_Right)
             rotm+0.1
              EndIf
            If  KeyboardPushed( #PB_Key_Up)
             acc+0.05
            If acc>5
          acc=5
          EndIf
         depmx=depmx-Sin(rotm)*acc*acc
         depmy=depmy+Cos(rotm)*acc*acc
          rotm1.f=rotm
          push0=1
          Else
      acc-0.05
       depmx=depmx-Sin(rotm1)*acc*acc
    depmy=depmy+Cos(rotm1)*acc*acc
         push0=0
         EndIf
     If acc<0
     acc=0
     EndIf
        ;--------- fin clavier mine storm ----------------
            
        Until KeyboardPushed(#PB_Key_Escape)        ; On s'en va!!! 
        mciSendString_("CLOSE MIDI",0,0,0) 
    EndIf 
EndIf 



End                                             ; Adios! 

spectre: 
Circle(100+avx0, 100+avy0, 20 ,coul) 
Box(80+avx0,100+avy0, 40, 25 ,coul) 
Circle(88+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
Circle(100+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
Circle(112+avx0, 122+avy0, 3 ,RGB(0,0,0)) 
Box(85+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
Box(97+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
Box(109+avx0,122+avy0, 6, 3,RGB(0,0,0)) 
Circle(108+avx0, 95+avy0, 5 ,RGB(255,255,255)) 
Circle(94+avx0, 95+avy0, 5 ,RGB(255,255,255)) 
Circle(108+avx0+yyex0, 95+avy0+yyey0, 3 ,RGB(0,0,0)) 
Circle(94+avx0+yyex0, 95+avy0+yyey0, 3 ,RGB(0,0,0)) 
Return 


Procedure Ondulation(x,Y,Texte.s,r,v,b) 
    ; procedure realisé par OLIV 
  
    StartDrawing ( ScreenOutput ()) ; Pour pouvoir utiliser les commandes des dessin 2D. 
    DrawingFont ( FontID ( #font )) ; On change la police 
    DrawingMode (1) ; On selectionne le mode pour ne pas avoir de fond derrière les lettres. 
    FrontColor ( RGB (r,v,b) ) ; On change la couleur. 
    
    oliv(1)\angle + #VitesseAngle ; Angle de départ de la sinusoide en radian 
    If  oliv(1)\angle >= 2 * #PI 
         oliv(1)\angle = 0 
    EndIf 
    ; On affiche toute les lettres 
    posx = 10 ; Position du caractère 
    For n = 1 To Len (Texte) ; Pour chaque lettre du texte 
        Lettre.s = Mid (Texte, n, 1) ; on récupère la lettre à la position n 
        posy = 50 + #HauteurSin * Sin ( oliv(1)\angle + posx / #LargeurSin ) ; on calcul la position en Y de la lettre 
        ; On part du centre de l'image (50) puis on ajoute un sin 
        ; #HauteurSin fait varier l'amplitude du mouvement 
        ; l'angle mis dans le sinus est d'abord composé de l'angle de départ d'affichage du texte (Angle) 
        ; puis on augmente l'angle au fur et à mesure que l'on affiche des lettres avec le coefficient #LargeurSin qui permet de faire varier la largeur de la sinusoide 
        
        DrawText (x+posx, Y+posy,Lettre) 
        posx + TextWidth (Lettre) 
    Next 
    StopDrawing () ; On signife que l'on arrête les fonctions dessin 2D. 
EndProcedure    

DataSection 
Couleur : 
Data.l $13, $30, $50, $70, $8E, $AE, $CF, $EC 
Data.l $FF, $EB, $CF, $AF, $8E, $71, $50, $30 
Data.l $0, $30914, $61632, $92454, $D3373, $104193, $144FB5, $185CD2 
Data.l $1A65E7, $185CD2, $144FB4, $114193, $D3373, $A2554, $51632, $30A15 
Data.l $1D2D, $314B, $4569, $5785, $6BA3, $7EC1, $90DC, $9CEE 
Data.l $90DB, $7FC2, $6BA3, $5785, $4569, $314B, $1D2C, $D12 
Data.l $62518, $B3E27, $F5837, $136F46, $178755, $1CA165, $1FB673, $22C67D 
Data.l $20B773, $1CA166, $178755, $136F46, $F5837, $B3F28, $62518, $30F0A 
Data.l $152516, $233E25, $315735, $3F6D43, $4D8652, $5B9F62, $67B56F, $70C478 
Data.l $67B56E, $5BA062, $4D8752, $3E6D43, $325635, $243E26, $152417, $80F0A 
Data.l $152209, $24390F, $324F15, $3F651A, $4E7C20, $5C9226, $69A62C, $72B42F 
Data.l $69A62C, $5C9226, $4E7C20, $40641A, $324F15, $24390E, $152209, $90E04 
Data.l $22230B, $393A13, $50511A, $666621, $7C7E29, $939631, $A7AA38, $B5B83C 
Data.l $A7AA37, $939631, $7C7E2A, $656621, $50521B, $393A13, $22230B, $E0E05 
Data.l $423411, $5E4919, $785D1F, $927226, $AD872D, $C89C34, $DFAE3B, $EFBB3F 
Data.l $DEAE3B, $C79C34, $AD872D, $927227, $785D1F, $5D4A18, $423412, $271E0A 
Data.l $251A12, $3E2C1E, $573C2A, $6E4D35, $875F41, $A0704D, $B68058, $C58A5F 
Data.l $B58057, $A0704D, $875F41, $6E4D35, $573D29, $3E2B1E, $251A12, $F0A07 
Data.l $211513, $372321, $4E302D, $633D39, $784C46, $8F5953, $A3665F, $B06E66 
Data.l $A3655E, $8F5A53, $794B46, $623D39, $4E312D, $372220, $211514, $D0808 
Data.l $C0609, $1D0F14, $311921, $44232F, $562C3B, $693649, $7D4056, $8E4961 
Data.l $9A4F6A, $8E4962, $7D4056, $693648, $562C3B, $44232F, $311921, $1D0F14 
Data.l $1D101B, $311B2D, $44263F, $573050, $6B3B62, $7E4673, $8F4F83, $9B568E 
Data.l $8F5083, $7E4673, $6A3B61, $573050, $45263E, $301B2D, $1D101A, $C070B 
Data.l $C0912, $1E142C, $31214A, $452F69, $583C84, $6D49A3, $8157C0, $9262DA 
Data.l $9E6BED, $9262DB, $8157C0, $6D4AA2, $583C85, $462F69, $32224B, $1E152C 
Data.l $211D42, $2E2A5D, $3B3676, $484190, $564EAB, $635AC5, $6E63DC, $766BEC 
Data.l $6E64DC, $6259C6, $554EAB, $48418F, $3B3676, $2F2A5C, $211D41, $141227 
Data.l $18003F, $220058, $2C0070, $350089, $3F00A3, $4900BD, $5100D2, $5700E1 
Data.l $5100D1, $4800BC, $3F00A3, $350089, $2C0070, $220059, $18003E, $E0025 
Data.l $23003E, $320059, $3F0071, $4D008A, $5C00A3, $6A00BD, $7600D3, $7F00E2 
Data.l $7700D2, $6A00BD, $5C00A4, $4D0089, $400071, $320058, $23003F, $150025 
Data.l $220029, $310039, $3E0049, $4B0059, $59006A, $66007A, $720088, $7B0092 
Data.l $730088, $67007A, $59006A, $4A0059, $3E0049, $300039, $220028, $140018 
Data.l $22031C, $310328, $3D0433, $4B053E, $59064A, $670755, $73085F, $7B0966 
Data.l $73085F, $670855, $590649, $4A053E, $3D0433, $300428, $22021C, $140111 
Data.l $220511, $300718, $3E081E, $4A0B25, $590D2C, $670E33, $721038, $7B113D 
Data.l $721039, $670E33, $590C2C, $4A0A25, $3E091F, $300718, $220510, $14030A 
Data.l $29130E, $3A1B13, $4B2219, $5A291F, $6C3125, $7C382A, $8B3E2F, $954332 
Data.l $8B3F2F, $7C382A, $6C3025, $5A291E, $4A2219, $3B1A14, $2A130E, $190B08 
Data.l $E0800, $221400, $382100, $4F2F00, $643B00, $7A4800, $915500, $A56100 
Data.l $B36900, $A56000, $925600, $7B4800, $643B00, $4F2F00, $382100, $221300 
Data.l $120D00, $2C2100, $4A3800, $684E00, $836300, $A17A00, $BF9000, $D9A400 
Data.l $EBB200, $D9A400, $BF9100, $A17A00, $836400, $684E00, $4A3900, $2C2200 
Data.l $D0D00, $1D1F00, $323400, $464900, $595C00, $6C7100, $808500, $929700 
Data.l $9EA400, $919700, $808600, $6C7100, $585B00, $464800, $323300, $1E1F00 
Data.l $1B2C00, $273E00, $314F00, $3B6000, $477300, $528500, $5C9400, $629F00 
Data.l $5B9400, $518500, $477300, $3C6100, $315000, $263E00, $1B2C00, $101A00 
Data.l $50E00, $B2100, $133700, $1A4D00, $216200, $287800, $308F00, $36A200 
Data.l $3BB000, $37A200, $308E00, $297900, $216200, $1A4E00, $133800, $B2100 
Data.l $93722, $D4D31, $11633F, $15794C, $198F5A, $1DA669, $20B975, $22C67D 
Data.l $20B975, $1CA568, $18905B, $15784C, $11633E, $D4E30, $93723, $62114 
Data.l $4344, $5F62, $7A7D, $9497, $B0B4, $CCD0, $E3E8, $F4F9 
Data.l $E3E8, $CCD0, $B1B5, $9597, $7A7D, $6062, $4344, $2829 
Data.l $2B42, $3E5E, $4E77, $5F90, $71AC, $82C7, $91DD, $9CEE 
Data.l $92DE, $83C7, $71AD, $5F91, $4E77, $3D5D, $2B41, $1A27 
Data.l $20812, $4132C, $81F48, $B2C66, $F3881, $12469E, $1552BC, $185DD5 
Data.l $1A65E7, $185DD5, $1552BB, $12459F, $F3881, $B2D66, $82049, $5132C 
Data.l $40011, $8002A, $D0046, $120063, $17007C, $1C0099, $2200B5, $2600CE 
Data.l $2900DF, $2500CE, $2100B5, $1C0099, $17007C, $120063, $D0046, $80029 
EndDataSection 
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

waou ! elle est toute belle ma boule bleue !! :D

c'est du grand n'importe quoi cette demo :lol:
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

Message par tonton »

je la trouvais un peu petite et fadasse :lol: .
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

J'adore quand vous délirez comme ça ! :D

Super ! et chapeau à toute l'équipe :wink:
RV
Messages : 209
Inscription : sam. 18/nov./2006 15:16

Message par RV »

Merci! :wink: :lol:
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

a ouai c'est delire de voir des assemblage de plusieurs personnes sa fait du n'importe qui fait delirer bravo aussi :wink: .



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Un effet "tunnel" au milieu de l'écran? :wink:
Répondre