Salut à tous,
Je suis en train de faire un programme qui est censé me donner le taux de rouge de bleus et de vert dans un fichier texte, sur des couleurs que j'aurais créer en ajoutant ou diminuant le rouge, le vert et le bleu lors de l'éxécution du programme. Je met l'écran tout noire au début, et grâce à des variables, j'augmente ou diminue ces variables (qui représente le rouge...vous avez compris ) et rechange en direct l'écran pour que ça corresponde.
En gros on appuis sur des touches et la couleur change, et quand on appuis sur "Entrée", un fichier est créer où le taut de rouge de.... est notés (autant de fois qu'on appuis sur entrée lors de l'execution, le se vide quand on redémmare le programme, donc on peus consulter les résultats pendant, mais aussi après).
Le seul problème (et c'est bien le seul) c'est que la variable (je fais que pour le rouge pour l'instant), quand je la fais decendre, bas elle devient -2....-300...-623 etc et j'aimerais qu'elle me donne le chiffre entre 0 et 255 .
Voici la méthode (m_a désigne le chiffre qu'on obtient après avoire changer le rouge):
int Fenetre::getR()
{
if(m_a<0)
{
if((m_a/255)<1)
m_a+=255;
else
m_a=m_a-(((m_a/255)*255)-255);
}
return m_a;
}
Elle marche bien quand le nombre est entre 0 et -255, mais quand c'est au dela, ça ne marche plus du tout . Ici ce n'est qu'un problème de math...... ou alors je m'y prend hyper mal .
PS: je sais que la méthode est pas finis, en effet il manque la partis où m_a est positif, mais j'aurais le même problème que pour les négatifs donc, quand j'aurais régler pour les négatifs, ça serat la même pour les positifs.
tu stockes ta valeur m_a en tant que "unsigned char".
Le range de unsigned char est 0 .. 255 (pile ce qu'il faut pour une couleur, c'est d'ailleurs fait expres)
Et, avec les unsigned char, quand tu fais :
0 - 1 -> ça donne 255
quand tu fais 255 + 1 -> ça donne 0
Perso je ferais en sorte que la valeur de ta variable reste entre 0 et 255 quand l'utilisateur appuie sur les touches. var < 0 ? var = 255 ? (var > 255 ? var = 0 : var = var) ou qqch comme ça.
Merci, c'est vrai, Hiura, je n'avais pas penser à ça (des fois, le plus simple reste le plus difficile à deviner pour moi ). C'est bête, mais en y repenssant, je pense que j'aurrait put trouvé tout seul, mais il à fallut que je me complique là vie. Merci Fvirtman, je ne connaissais pas cette propriété cyclique des unsigned char (je savais juste qu'ils n'étaient que positif ).
Problème de couleur et de math
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html