Forum Clubic

Besoin d'aide pour un programme en javas'cool 4

Bonjour,

Je suis en Terminale S ayant pour spécialité ISN.

Avec ma coéquipière, on a besoin d’aide pour créer un programme :

“Inversion mouvante : une barre de 30 pixels de large se déplace sur l’image de gauche à droite provoquant son inversion localement.”

L’image est de 500x500 pixels.

Notre programme :

void main() {
//Afficher l’image
String image = “C:/Users/Melly/Pictures/Artwork_Les_Sims_3_A&C_13.jpg”;
load(image);

//Effet barre de 30 pixels qui se déplace de gauche à droite donnant
//un effet négatif sur l’image :
for (int i = -250; i <=-220; i = i +1)
for (int j =-250; j <= 250; j = j +1) {
int pix = getPixel(i, j);
setPixel(i, j, 255 - pix);

	}

}

Nous savons que la barre avance de pixels en pixels tout en gardant une largeur de 30 pixels.
On sait que i commence de -220 pixels et doit finir à 220 pixels.
On doit faire une boucle pour i mais on n’y arrive pas.
On sait que l’on doit utiliser la boucle “for” mais on ne sait comment faire.
On a fait plusieurs essais mais ce n’était pas cela.

Est-ce que vous pouvez nous aider s’il vous plaît ? :jap:

C’est quoi qui bloque exactement ?
Et personnellement, si une image fait w * h pixels, alors i, j ne peuvent valoir que [0, w[ et [0, h[ respectivement.
Et vu que ça vaut de gauche à droite, tu dois parcourir de i = w-1 à i = 0, sinon tu réécris les pixels et tu ne changes rien.

J’arrive pas trop à comprendre ce que vous avez dit. :-(:

Notre problème est qu’il faut faire bouger la barrre de 30 pixels de la gauche vers la droite.

Nous avons notre barre de 30 pixels sauf que nous arrivons pas à créer la suite du programme pour qu’elle se déplace.

Nous devons utiliser la boucle “for” sauf que l’on arrive pas à trouver les conditions que l’on doit mettre dedans.

Pas très logique ton truc, là
“On sait que i commence de -220 pixels et doit finir à 220 pixels”

et dans le code :
for (int i = -250; i <=-220; i = i +1)

Si on oublie la barre, quelles sont les dimensions de ton image ?

Je me suis trompée dans les pixels ^^

On sait que i commence de -250 pixels et doit finir à 250 pixels.

L’image fait 500x500 pixels. :slight_smile:

Alors c’est dans ta boucle i qu’il y a un problème
En supposant que la barre initiale est en place, tu dois déplacer son bord gauche de -250 à +220
Et à chaque fois, tu as deux pixels à inverser : le pixel i pour le remettre “normal”, et le pixel i+30 pour le mettre en inversé

Après, si tu veux voir ton effet de déplacement à l’écran, il faudra sûrement que tu rajoutes une tempo

Attention à comment tu boucles, tu risques de réécrire les informations du pixel.