Page 1 sur 1

[..] Ne pas ecrire le 1er parametre d'une fonction ?

Posté : ven. 18 sept. 2009 18:57
par splinter29
Bien le bonjour a tous,
J'ai une petite question qui m'est apparu en codant ( Oui , oui mon cerveau travail beaucoup quand je programme :lol: )

Alors n'ayant pas trouvé de vrai réponse je vous la soumet.
Comme vous devez tous le savoir, la fonction Beep possède deux paramètres .Est-il possible de lui donner uniquement le second paramètre de durée, le premier étant par défaut.

Code : Tout sélectionner

Beep(?,500)
Inutile de proposer la réponse "Il suffit de rentrer la fréquence par défaut" cela sortirait du cadre de ma question.

Re: [..] Ne pas ecrire le 1er parametre d'une fonction ?

Posté : ven. 18 sept. 2009 19:19
par Iste
Souvent, les fonction utilisent la valeur -1
Sinon, tu peux aussi utiliser Default
mais il faut que la fonction le prévoit

Re: [..] Ne pas ecrire le 1er parametre d'une fonction ?

Posté : ven. 18 sept. 2009 19:22
par kay69
Non je ne crois pas mais tu peux faire une fonction qui le fait, du style :

Code : Tout sélectionner

Func _beep($duree)
    Beep(1000, $duree)
EndFunc
Et pour l'appeler tu a juste a faire "_beep(durée du beep)"

Re: [..] Ne pas ecrire le 1er parametre d'une fonction ?

Posté : ven. 18 sept. 2009 20:00
par splinter29
Oé ce serait la solution kay69 puisque le Default ne fonctionne pas , du moins dans le cas du Beep.

Voila une question résolu.
Mais j'ai ai une autre ! Bon bien sur ce ne sont pas des questions existentielles; Elles peuvent très bien être contournées assez facilement. C'est pour cela que je ne vais pas vous embêter a faire un nouveau post.

Alors, dans le cas d'un pixelsearch on nous propose une variation possible de la couleur. Quelle méthode emploieriez-vous dans une instruction conditionnelle pour ne pas avoir une seul couleur mais un panel plus ou moins large ?
par exemple pour simplifier cette expression

Code : Tout sélectionner

$a = pixelgetcolor(500,500)
If  $a = 0x0000FF or $a = 0x0000FE or $a = 0x000100 then
...
 
(Plus très sur des notation hexadécimal :roll: mais ca n'a pas beaucoup d'importance pour l'exemple)

ou alors peut-être serait-il plus judicieux de faire un encadrement comme cela

Code : Tout sélectionner

If $a < limite haute and $a > limite basse then
...
Si vous avez encore d'autre méthode je suis preneur :)

Re: [..] Ne pas ecrire le 1er parametre d'une fonction ?

Posté : ven. 18 sept. 2009 20:11
par kay69
C'est pour des couleurs prédéfini ou non ?
Si ou tu peux faire comme sa :

Code : Tout sélectionner

Dim $Pixel[999]
    $Pixel[0] = 0x0000FF
    $Pixel[1] = 0x0000FE
    $Pixel[2] = 0x000100

$i = 0

$a = pixelgetcolor(500,500)

While 1
    If $Pixel[$i]="" Then
        MsgBox(0, "Erreur", "Le pixel trouvé n'est pas un de ceux noté")
        Exit
    EndIf
    If $a = $Pixel[$i] Then
        ...
        ExitLoop
    Else
        $i=$i+1
    EndIf
WEnd

Re: [..] Ne pas ecrire le 1er parametre d'une fonction ?

Posté : ven. 18 sept. 2009 22:25
par splinter29
Là pour le coup ca ne conviendrait pas Kay69. J'aurais peut-être du être un peu plus explicite au niveau de mon code a savoir:

Code : Tout sélectionner

$a = pixelgetcolor(500,500)
If  $a = 0x0000FF or $a = 0x0000FE or $a = 0x000100 [color=#BF0000]or ... or $a = 0x****** [/color]then
...
 
Ce serait vraiment un intervalle de couleur soit non défini pour l'instant soit trop important pour en faire un tableau manuellement.

Quelqu'un connaitrait-il le fonctionnement du paramètre Shade-variation pour que je puisse m'en inspirer ?

Re: [..] Ne pas ecrire le 1er parametre d'une fonction ?

Posté : sam. 19 sept. 2009 19:46
par kay69
Je viens de faire 2 fonction pour faire des variation je ne les ai pas tester par contre ^^ regarde si sa te vas :

Code : Tout sélectionner

; _variationbasse($couleur, $Variation)
; _variationhaute($couleur, $Variation)
; $Couleur = Couleur du pixel en hexadecimal (ex: "0xFF00FF")
; $Variation = un nombre en 0 et 255 pour indiquer le nombre de variation du rouge, bleu, et vert
; Les fonctions retourne le code couleur varier ex _variationbasse("0xFF00FF", 1) Retourne = "0xFE00FE"

Func _variationbasse($couleur, $Variation)
    $CodeCouleur=StringReplace($Couleur, "0x", "")
    $Couleur=StringSplit($CodeCouleur, "")
    $R=$Couleur[1]&$Couleur[2]
    $V=$Couleur[3]&$Couleur[4]
    $B=$Couleur[5]&$Couleur[6]
    $Rouge=Dec($R)
    $Vert=Dec($V)
    $Bleu=Dec($B)
    $Rougevardec=$Rouge-$Variation
    $Vertvardec=$Vert-$Variation
    $Bleuvardec=$Bleu-$Variation
    If $Rougevardec>0 Then
        $Rougevar=Hex($Rougevardec, 2)
    Else
        $Rougevar=Hex(0, 2)
    EndIf
    If $Vertvardec>0 Then
        $Vertvar=Hex($Vertvardec, 2)
    Else
        $Vertvar=Hex(0, 2)
    EndIf
    If $Bleuvardec>0 Then
        $Bleuvar=Hex($Bleuvardec, 2)
    Else
        $Bleuvar=Hex(0, 2)
    EndIf
    $Couleurvar="0x"&$Rougevar&$Vertvar&$Bleuvar
    Return $Couleurvar
EndFunc

Func _variationhaute($couleur, $Variation)
    $CodeCouleur=StringReplace($Couleur, "0x", "")
    $Couleur=StringSplit($CodeCouleur, "")
    $R=$Couleur[1]&$Couleur[2]
    $V=$Couleur[3]&$Couleur[4]
    $B=$Couleur[5]&$Couleur[6]
    $Rouge=Dec($R)
    $Vert=Dec($V)
    $Bleu=Dec($B)
    $Rougevardec=$Rouge+$Variation
    $Vertvardec=$Vert+$Variation
    $Bleuvardec=$Bleu+$Variation
    If $Rougevardec<255 Then
        $Rougevar=Hex($Rougevardec, 2)
    Else
        $Rougevar=Hex(255, 2)
    EndIf
    If $Vertvardec<255 Then
        $Vertvar=Hex($Vertvardec, 2)
    Else
        $Vertvar=Hex(255, 2)
    EndIf
    If $Bleuvardec<255 Then
        $Bleuvar=Hex($Bleuvardec, 2)
    Else
        $Bleuvar=Hex(255, 2)
    EndIf
    $Couleurvar="0x"&$Rougevar&$Vertvar&$Bleuvar
    Return $Couleurvar
EndFunc