Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

JEUX DE LUMIÈRE À LED


Information sur la source

Description

Jeux de lumière a Led piloter par la carte son (entrée analogique) et fait clignoter 3 leds RVB (une de 3*3w chez moi)
par le port LPT du Pc
 

Source

  • '========================================
  • ' Form demo pour le module WaveInBIO.bas
  • '**********
  • '
  • 'Par Proger
  • 'c'est hélas l'interface, et particulièrement les graphiques, qui sont lent...
  • Dim led As Integer
  • Dim zmin As Double
  • Dim zmax As Double
  • Dim xck As Long
  • Dim Loff As Long
  • Option Explicit
  • 'pour donner une priorité haute au process
  • '(ca garanti que l'enregistrement continue meme si l'ordinateur est subitement occupé)
  • Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
  • Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, ByVal dwPriorityClass As Long) As Long
  • Private Const HIGH_PRIORITY_CLASS = &H80
  • Private Const NORMAL_PRIORITY_CLASS = &H20
  • Private frmProcess As Long
  • 'l'affichage dynamique ou affichage calme (réduit la consommation CPU)
  • 'certaines infos sont illisibles si elles sont mises à jour trop souvent.
  • Private Const REFRESH_UPDATE = 2
  • Private RefreshCount As Long
  • 'pour le VU-metre "adouci"
  • Private KLG As Double
  • Private KIG As Double
  • Private RIG As Double
  • Private ItM As Double
  • 'pour le FFT, analyse spectrale et spectrogramme
  • Private pBuf As IPictureDisp
  • Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  • Private ColoTable(0 To 520) As Long
  • Private tFFTw As Long
  • Private tFFTh As Long
  • 'pour la gestion des parcelles de fichiers
  • Private BaseName As String 'nom de base du fichier, partie variable avec des ####
  • Private CurrName As String
  • Private DebTime As Date 'marqueur temps, utilisé pour savoir depuis combien de temps ca enregistre
  • Private TimePerP As Long 'secondes par fragments (défaut = 600, voir Form_Load)
  • Private NameIndex As Long 'compteur de fichiers
  • Private NameChOf As Long 'offset de la zone variable ####
  • Private NameChLn As Long 'longueur de la zone variable
  • Private NNM As Boolean 'petit flag pour le timer : mise à jour du nom de fichier
  • Private TimeRec As Long 'totaliseur du nombre de secondes d'enregistrement
  • Private TimeRecF As Long 'petit flag pour le timer : quand mettre à jour
  • Private Sub Form_Load()
  • Open App.Path + "\sortie.txt" For Output As #1
  • Dim Cson() As String
  • Dim i As Long
  • 'préparation interface carte son
  • Combo1.Clear
  • For i = 1 To GetInDev(Cson())
  • Combo1.AddItem Cson(i)
  • Next i
  • Combo1.Text = Cson(1)
  • 'préparation interface echantillonnage
  • Combo2.AddItem 8000
  • Combo2.AddItem 11025
  • Combo2.AddItem 16000
  • Combo2.AddItem 22050
  • Combo2.AddItem 32000
  • Combo2.AddItem 44100
  • Combo2.AddItem 48000
  • Combo2.AddItem 88200
  • Combo2.AddItem 96000
  • Combo2.ListIndex = 3
  • 'autres variables
  • TimePerP = 600
  • xck = 0
  • End Sub
  • Private Function NouvelleSession(NomFichier As String) As String
  • 'nouvelle session d'enregistrement.
  • Dim p As Long, t As Long, i As Long
  • 'vérifie l'extension
  • If LCase$(Right$(NomFichier, 4)) <> ".wav" Then
  • If InStrRev(NomFichier, ".") = Len(NomFichier) - 3 Then
  • 'mauvaise extension
  • BaseName = Mid$(BaseName, 1, Len(NomFichier) - 4) & ".wav"
  • Else
  • 'pas d'extension
  • BaseName = NomFichier & ".wav"
  • End If
  • Else
  • BaseName = NomFichier
  • End If
  • 'vérifie la présence de la zone variable ####
  • p = InStr(1, NomFichier, "#", vbBinaryCompare)
  • t = InStrRev(NomFichier, "#", , vbBinaryCompare) - p + 1
  • If p = 0 Then
  • NouvelleSession = "Nom invariant !!"
  • 'si le nom est invariant, on considère n'enregistrer que dans 1 fichier.
  • 'anti-plantage : calcul de la durée max possible avant que le fichier dépasse 2Go :
  • TimePerP = 2147483640 \ CLng(Combo2.List(Combo2.ListIndex)) * 2
  • CurrName = BaseName
  • Exit Function
  • End If
  • 'mise à jour des variables locales pour le changement de noms
  • CurrName = BaseName
  • NameChOf = p
  • NameChLn = t
  • NameIndex = 1
  • NNM = False
  • 'recherche s'il n'y a pas d'anciens fichiers avec ce format,
  • 'décale l'index automatique en conséquence.
  • Do
  • Mid(CurrName, NameChOf, NameChLn) = Format$(NameIndex, String$(NameChLn, "0"))
  • If Dir(CurrName, vbNormal) = "" Then Exit Do
  • NameIndex = NameIndex + 1
  • Loop
  • NouvelleSession = CurrName
  • End Function
  • Private Function HMS(ByVal s As Long) As String
  • 'conversion de secondes en heures:minutes:secondes sans passer par les strings...
  • 'extra-rapide :) les divisions sont en fait des rotations de bits shl/sal en asm
  • Dim i As Long, h As Long, m As Long
  • Dim osB(1 To 8) As Byte
  • osB(3) = 58 ' ":"
  • osB(6) = 58
  • m = s \ 60
  • s = s - m * 60
  • h = m \ 60
  • m = m - h * 60
  • i = s \ 10
  • osB(8) = 48 + (s - i * 10)
  • osB(7) = 48 + i
  • i = m \ 10
  • osB(5) = 48 + (m - i * 10)
  • osB(4) = 48 + i
  • i = h \ 10
  • osB(2) = 48 + (h - i * 10)
  • osB(1) = 48 + i
  • HMS = StrConv(osB(), vbUnicode)
  • End Function
  • Private Sub Check1_Click()
  • Dim uFrq As Long
  • If Check1.Value = 1 Then
  • 'augmente la priorité système
  • frmProcess = GetCurrentProcess()
  • Call SetPriorityClass(frmProcess, HIGH_PRIORITY_CLASS)
  • 'initialise l'acquisition et écoute
  • uFrq = CLng(Combo2.List(Combo2.ListIndex))
  • If Not VU_StartInput(CBool(Check5.Value), uFrq) Then '<== DEMARRAGE DE L'ECOUTE
  • Check1.Value = False
  • Exit Sub
  • End If
  • Timer1.Enabled = True
  • Combo1.Enabled = False
  • Combo2.Enabled = False
  • Check5.Enabled = False
  • Else
  • Timer1.Enabled = False
  • VU_StopInput 'stoppe proprement l'écoute
  • 'remet la priorité en normale (pratique si le programme commence à déconner)
  • frmProcess = GetCurrentProcess()
  • Call SetPriorityClass(frmProcess, NORMAL_PRIORITY_CLASS)
  • Combo1.Enabled = True
  • Combo2.Enabled = True
  • Check5.Enabled = True
  • End If
  • End Sub
  • Private Sub Check3_Click()
  • VU_DoFFT = CBool(Check3.Value)
  • End Sub
  • Private Sub Check4_Click()
  • VU_DoCut = CBool(Check4.Value)
  • End Sub
  • Private Sub Combo1_Click()
  • VU_Device = Combo1.ListIndex
  • End Sub
  • Private Sub Command1_Click()
  • Shell "sndvol32 -R -D " & Combo1.ListIndex, vbNormalFocus
  • End Sub
  • Private Sub HScroll1_Change()
  • Call HScroll1_Scroll
  • End Sub
  • Private Sub HScroll1_Scroll()
  • VU_Boost = (CDbl(HScroll1.Value)) / 20
  • Label3.Caption = Format$(VU_Boost, "#0.00") & " dB"
  • End Sub
  • Private Sub Timer1_Timer()
  • Dim dGain As Double, smG As Double
  • Dim i As Long, c As Long, p As Long, upd As Boolean
  • 'moulinette
  • upd = VU_Update() '<== PRINCIPALE FONCTION GERANT L'ACQUISITION DU SON
  • 'VU-metre
  • dGain = VU_Gain
  • 'Print #1, dGain
  • If upd Then 'les actions suivantes ne sont mise à jour que s'il y a eu un nouvel enregistrement
  • RefreshCount = RefreshCount + 1
  • p = (RefreshCount Mod REFRESH_UPDATE) = 0
  • 'mise à jour paramètres VU-metre
  • If p Then
  • 'Label1.Caption = Format$(dGain, "#00")
  • If dGain > zmax Then zmax = dGain
  • If dGain < zmin Then zmin = dGain
  • If zmax > 0 Then zmax = zmax - 10
  • If zmin < 65999 Then zmin = zmin + 10
  • Me.Caption = Str$(zmin) + " : " + Str$(zmax) + " = " + Str$(zmax - zmin)
  • 'noir=0
  • 'Rouge=1
  • 'Jaune=5
  • 'vert=4
  • 'Cyan=6
  • 'Bleu=2
  • 'Violet=3
  • 'Blanc=7
  • led = 0
  • If dGain > (zmin + (zmax - zmin) / 8) Then led = 1
  • If dGain > (zmin + 2 * (zmax - zmin) / 8) Then led = 5
  • If dGain > (zmin + 3 * (zmax - zmin) / 8) Then led = 4
  • If dGain > (zmin + 4 * (zmax - zmin) / 8) Then led = 6
  • If dGain > (zmin + 5 * (zmax - zmin) / 8) Then led = 2
  • If dGain > (zmin + 6 * (zmax - zmin) / 8) Then led = 3
  • If dGain > (zmin + 7 * (zmax - zmin) / 8) Then led = 7
  • If led = 0 Then Form1.BackColor = 0
  • If led = 1 Then Form1.BackColor = vbRed
  • If led = 5 Then Form1.BackColor = vbYellow
  • If led = 4 Then Form1.BackColor = vbGreen
  • If led = 6 Then Form1.BackColor = vbCyan
  • If led = 2 Then Form1.BackColor = vbBlue
  • If led = 3 Then Form1.BackColor = vbMagenta
  • If led = 7 Then Form1.BackColor = vbWhite
  • 'If (led = 7) Or (led = 3) Or (led = 2) Or (led = 6) Then
  • ' SaveSetting "HWPorte", "MAIN", "TX", "121"
  • ' Loff = 0
  • 'Else
  • ' If Loff < 10 Then Loff = Loff + 1
  • 'End If
  • 'If Loff = 9 Then
  • ' SaveSetting "HWPorte", "MAIN", "TX", "98"
  • 'End If
  • Out 888, led
  • End If
  • End If 'fin update
  • End Sub
  • Private Sub Form_Unload(Cancel As Integer)
  • Out 888, 0
  • End
  • End Sub
  • Private Sub Timer2_Timer()
  • If xck > 9 Then Exit Sub
  • Me.Caption = Str$(10 - xck)
  • xck = xck + 1
  • If xck = 9 Then Check1.Value = 1
  • End Sub
'========================================
' Form demo pour le module WaveInBIO.bas
'**********
'
'Par Proger

'c'est hélas l'interface, et particulièrement les graphiques, qui sont lent...
Dim led As Integer
Dim zmin As Double
Dim zmax As Double
Dim xck As Long
Dim Loff As Long
Option Explicit

'pour donner une priorité haute au process
'(ca garanti que l'enregistrement continue meme si l'ordinateur est subitement occupé)
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, ByVal dwPriorityClass As Long) As Long
Private Const HIGH_PRIORITY_CLASS = &H80
Private Const NORMAL_PRIORITY_CLASS = &H20
Private frmProcess As Long

'l'affichage dynamique ou affichage calme (réduit la consommation CPU)
'certaines infos sont illisibles si elles sont mises à jour trop souvent.
Private Const REFRESH_UPDATE = 2
Private RefreshCount As Long

'pour le VU-metre "adouci"
Private KLG As Double
Private KIG As Double
Private RIG As Double
Private ItM As Double

'pour le FFT, analyse spectrale et spectrogramme
Private pBuf As IPictureDisp
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private ColoTable(0 To 520) As Long
Private tFFTw As Long
Private tFFTh As Long

'pour la gestion des parcelles de fichiers
Private BaseName As String 'nom de base du fichier, partie variable avec des ####
Private CurrName As String
Private DebTime As Date    'marqueur temps, utilisé pour savoir depuis combien de temps ca enregistre
Private TimePerP As Long   'secondes par fragments (défaut = 600, voir Form_Load)
Private NameIndex As Long  'compteur de fichiers
Private NameChOf As Long   'offset de la zone variable ####
Private NameChLn As Long   'longueur de la zone variable
Private NNM As Boolean     'petit flag pour le timer : mise à jour du nom de fichier
Private TimeRec As Long    'totaliseur du nombre de secondes d'enregistrement
Private TimeRecF As Long   'petit flag pour le timer : quand mettre à jour
Private Sub Form_Load()
Open App.Path + "\sortie.txt" For Output As #1
Dim Cson() As String
Dim i As Long

    'préparation interface carte son
    Combo1.Clear
    For i = 1 To GetInDev(Cson())
        Combo1.AddItem Cson(i)
    Next i
    Combo1.Text = Cson(1)
    
    'préparation interface echantillonnage
    Combo2.AddItem 8000
    Combo2.AddItem 11025
    Combo2.AddItem 16000
    Combo2.AddItem 22050
    Combo2.AddItem 32000
    Combo2.AddItem 44100
    Combo2.AddItem 48000
    Combo2.AddItem 88200
    Combo2.AddItem 96000
    Combo2.ListIndex = 3


    

    'autres variables
    TimePerP = 600
    xck = 0
    


End Sub
Private Function NouvelleSession(NomFichier As String) As String
'nouvelle session d'enregistrement.
Dim p As Long, t As Long, i As Long

    'vérifie l'extension
    If LCase$(Right$(NomFichier, 4)) <> ".wav" Then
        If InStrRev(NomFichier, ".") = Len(NomFichier) - 3 Then
            'mauvaise extension
            BaseName = Mid$(BaseName, 1, Len(NomFichier) - 4) & ".wav"
        Else
            'pas d'extension
            BaseName = NomFichier & ".wav"
        End If
    Else
        BaseName = NomFichier
    End If
    
    'vérifie la présence de la zone variable ####
    p = InStr(1, NomFichier, "#", vbBinaryCompare)
    t = InStrRev(NomFichier, "#", , vbBinaryCompare) - p + 1
    If p = 0 Then
        NouvelleSession = "Nom invariant !!"
        'si le nom est invariant, on considère n'enregistrer que dans 1 fichier.
        'anti-plantage : calcul de la durée max possible avant que le fichier dépasse 2Go :
        TimePerP = 2147483640 \ CLng(Combo2.List(Combo2.ListIndex)) * 2
        CurrName = BaseName
        Exit Function
    End If
    
    'mise à jour des variables locales pour le changement de noms
    CurrName = BaseName
    NameChOf = p
    NameChLn = t
    NameIndex = 1
    NNM = False
    
    'recherche s'il n'y a pas d'anciens fichiers avec ce format,
    'décale l'index automatique en conséquence.
    Do
        Mid(CurrName, NameChOf, NameChLn) = Format$(NameIndex, String$(NameChLn, "0"))
        If Dir(CurrName, vbNormal) = "" Then Exit Do
        NameIndex = NameIndex + 1
    Loop
    
    NouvelleSession = CurrName

End Function

Private Function HMS(ByVal s As Long) As String
'conversion de secondes en heures:minutes:secondes sans passer par les strings...
'extra-rapide :) les divisions sont en fait des rotations de bits shl/sal en asm
Dim i As Long, h As Long, m As Long
Dim osB(1 To 8) As Byte

    osB(3) = 58 ' ":"
    osB(6) = 58

    m = s \ 60
    s = s - m * 60
    h = m \ 60
    m = m - h * 60
    
    i = s \ 10
    osB(8) = 48 + (s - i * 10)
    osB(7) = 48 + i
    
    i = m \ 10
    osB(5) = 48 + (m - i * 10)
    osB(4) = 48 + i
    
    i = h \ 10
    osB(2) = 48 + (h - i * 10)
    osB(1) = 48 + i
        
    HMS = StrConv(osB(), vbUnicode)

End Function



Private Sub Check1_Click()
Dim uFrq As Long

    If Check1.Value = 1 Then
        'augmente la priorité système
        frmProcess = GetCurrentProcess()
        Call SetPriorityClass(frmProcess, HIGH_PRIORITY_CLASS)
        
        'initialise l'acquisition et écoute
        uFrq = CLng(Combo2.List(Combo2.ListIndex))
        If Not VU_StartInput(CBool(Check5.Value), uFrq) Then  '<== DEMARRAGE DE L'ECOUTE
            Check1.Value = False
            Exit Sub
        End If
        

        
        Timer1.Enabled = True
        Combo1.Enabled = False
        Combo2.Enabled = False
        Check5.Enabled = False
    Else

        Timer1.Enabled = False
        VU_StopInput 'stoppe proprement l'écoute
        
        'remet la priorité en normale (pratique si le programme commence à déconner)
        frmProcess = GetCurrentProcess()
        Call SetPriorityClass(frmProcess, NORMAL_PRIORITY_CLASS)
        
        Combo1.Enabled = True
        Combo2.Enabled = True
        Check5.Enabled = True
    End If
    
End Sub


Private Sub Check3_Click()

    VU_DoFFT = CBool(Check3.Value)

End Sub

Private Sub Check4_Click()

    VU_DoCut = CBool(Check4.Value)

End Sub

Private Sub Combo1_Click()
VU_Device = Combo1.ListIndex

End Sub

Private Sub Command1_Click()
    Shell "sndvol32 -R -D " & Combo1.ListIndex, vbNormalFocus
End Sub





Private Sub HScroll1_Change()
Call HScroll1_Scroll
End Sub

Private Sub HScroll1_Scroll()
    VU_Boost = (CDbl(HScroll1.Value)) / 20
    Label3.Caption = Format$(VU_Boost, "#0.00") & " dB"
End Sub



Private Sub Timer1_Timer()
Dim dGain As Double, smG As Double
Dim i As Long, c As Long, p As Long, upd As Boolean


    'moulinette
    upd = VU_Update() '<== PRINCIPALE FONCTION GERANT L'ACQUISITION DU SON

    'VU-metre
    dGain = VU_Gain
    'Print #1, dGain


    
    
If upd Then 'les actions suivantes ne sont mise à jour que s'il y a eu un nouvel enregistrement

    RefreshCount = RefreshCount + 1
    p = (RefreshCount Mod REFRESH_UPDATE) = 0

    'mise à jour paramètres VU-metre
    If p Then
    'Label1.Caption = Format$(dGain, "#00")
    If dGain > zmax Then zmax = dGain
    If dGain < zmin Then zmin = dGain
    If zmax > 0 Then zmax = zmax - 10
    If zmin < 65999 Then zmin = zmin + 10
    Me.Caption = Str$(zmin) + " : " + Str$(zmax) + "  =  " + Str$(zmax - zmin)
    'noir=0
    'Rouge=1
    'Jaune=5
    'vert=4
    'Cyan=6
    'Bleu=2
    'Violet=3
    'Blanc=7
    
    
    
    led = 0
    If dGain > (zmin + (zmax - zmin) / 8) Then led = 1
    If dGain > (zmin + 2 * (zmax - zmin) / 8) Then led = 5
    If dGain > (zmin + 3 * (zmax - zmin) / 8) Then led = 4
    If dGain > (zmin + 4 * (zmax - zmin) / 8) Then led = 6
    If dGain > (zmin + 5 * (zmax - zmin) / 8) Then led = 2
    If dGain > (zmin + 6 * (zmax - zmin) / 8) Then led = 3
    If dGain > (zmin + 7 * (zmax - zmin) / 8) Then led = 7
    
    
    If led = 0 Then Form1.BackColor = 0
    If led = 1 Then Form1.BackColor = vbRed
    If led = 5 Then Form1.BackColor = vbYellow
    If led = 4 Then Form1.BackColor = vbGreen
    If led = 6 Then Form1.BackColor = vbCyan
    If led = 2 Then Form1.BackColor = vbBlue
    If led = 3 Then Form1.BackColor = vbMagenta
    If led = 7 Then Form1.BackColor = vbWhite
    
    'If (led = 7) Or (led = 3) Or (led = 2) Or (led = 6) Then
    '    SaveSetting "HWPorte", "MAIN", "TX", "121"
    '    Loff = 0
    'Else
    '    If Loff < 10 Then Loff = Loff + 1
    'End If
    
    'If Loff = 9 Then
    '    SaveSetting "HWPorte", "MAIN", "TX", "98"
        
    'End If
    
    Out 888, led
    End If
End If 'fin update
    
End Sub

Private Sub Form_Unload(Cancel As Integer)
Out 888, 0
End
End Sub

Private Sub Timer2_Timer()
If xck > 9 Then Exit Sub
Me.Caption = Str$(10 - xck)
xck = xck + 1
If xck = 9 Then Check1.Value = 1
End Sub

Conclusion

Merci a Proger pour ENREGISTREUR WAVEIN, FILTRE ET ANALYSE SPECTRALE
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Gros problème avec les vbrun Urgent!!!!!! [ par Cyber117 ] Je distribut gratuitement mes programmes sur internet mais les gens me disent qu'ils leur marque les vbrun. (lorsque qu'il lance le jeux une fenetre a port com et lpt [ par jika ] cherche un exemple vb pour afficher les port com et lpt ainsi que leur configuration (vitesse, bit de stop, parite etc...° Jeux de Pacman [ par Integer ] Je cherche a faire un jeux du genre pacman.ca consiste a déplacer un petit personnage, pour qu'il mange des points jaunes sans qu'il se fasse manger p Jeux : Rubics Cubes [ par Bruno ] Bonjour , Je suis à la recherche d'un développement d'un programme VB6 pour simuler le jeux Rubics Cubes.Um MAX de renseignement serait le bien venu.M Déplacement latéral [ par CyBeR ] Je suis entrain de créé un jeux d'aventure et je veux que mes personnages se déplace latéralement. La ou je bloque c quand la persone (l'utilisateur d Recherche de programmeurs vb pour creer un jeux de role online. [ par Kasim0d0 ] Bonjour.Voila, je me presente, avec un amis (un infographiste) (moi je suis programmeur), nous avons decidé de creer un jeux de rôle online francais e Recherche de programmeurs vb pour creer un jeux de role online. [ par Kasim0d0 ] Bonjour.Voila, je me presente, avec un amis (un infographiste) (moi je suis programmeur), nous avons decidé de creer un jeux de rôle online francais e faire un trainer [ par pedrez ] lire et ecrire dans la memoire Précisions : je voudrais savoir comment utiliseropenprocessmemoryreadprocessmemorywriteprocessmemorypour pouvoir Comment creer un serveur de jeux en reseaux? [ par Momo3dfx ] Salut a tous,j'ai un exellent site, sur un jeu, j'ai du matos pour faire un serveur, j'ai tout sauf l'expérience et el savoir faire.-Comment fait-on p


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.