Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le deal à ne pas rater :
SITRAM Set 3 poêles tous feux dont induction + poigner amovible
20.99 €
Voir le deal

Greffon Image 0.8

3 participants

descriptionGreffon Image 0.8 EmptyGreffon Image 0.8

more_horiz
Le greffon Image propose les mêmes fonctionnalités que l'espèce Graphique.

Il ajoute des fonctionnalités manquantes à l'espèce Graphique comme :
- la possibilité de demander à l'utilisateur de sélectionner l'image depuis le disque,
- extraction de la largeur de l'image,
- extraction de la hauteur de l'image.
- possibilité de coller l'image présente dans le presse-papier
- possibilité d'enregistrer l'image (à améliorer)
- possibilité de récupérer le code couleur d'un pixel de l'image

[php]
Greffon Image :

Principal :
Actions :
~greffon 1 image 0.8 "http://abaque.googlecode.com/files/Image.zgl"
Va vers traitement

Traitement :
Rôles :
d :: image, x vaut 230, y vaut 322, transparence vaut 90, taille vaut 20
e :: toile, couleur vaut "bleu"
Actions :
efface la toile
projette d&e
évoque d.sélectionneretouvrir()
("Il faut attendre que l'image soit chargée :")
attends .5 seconde
affiche "Chemin de l'image : " + image@d
affiche "Largeur de l'image : " + d.largeur()
affiche "Hauteur de l'image : " + d.hauteur()
tant que vrai, lis
tourne à droite d de 1
attends 0.01 seconde
ferme
[/php]

Ce deuxième exemple affiche des sprites qui ont été extraits d'une image contenant une collection de sprites :
(l'image everything.png est disponible [url=ici][/url])
[php]
Sprites :
grands rôles :
positions_bomberman :: casier de nombre <
- 8, 32, 56, 80, 104, 128, 152, 176, 200, 224, 248, 272, 296, 320, 344, 368, 392

Principal :
Actions :
~greffon 1 image 0.8 "http://abaque.googlecode.com/files/Image.zgl"
Va vers traitement

Traitement :
Rôles :
§map :: image, image vaut "everything.png"
§sprites :: casier de image vide
Actions :
efface la toile
pour chaque 8, lis
ajoute #map dans sprites
dy@(sprites{joker}) vaut 8
dy@(sprites{joker}) vaut 10 + 32*joker
y@(sprites{joker}) vaut hasard(400) + 20
x@(sprites{joker}) vaut hasard(400) + 20
hauteur@(sprites{joker}) vaut 23
largeur@(sprites{joker}) vaut 18
attache habillage à sprites{joker}
ferme
pour chaque sprites, projette joker
tant que vrai, lis
("On boucle sur les 17 positions possibles :")
pour chaque 17, lis
§index <
- joker
pour chaque sprites, lis
évoque joker.habillage(index)
ferme
attends 200 millisecondes
ferme
ferme

Habillage :
Rôles :
*moi :: image
*numéro :: nombre
Actions :
dx@moi vaut positions_bomberman{numéro}
retourne vrai
[/php]

Ce troisième exemple récupère une image de presse papier et l'enregistre :
[php]
Copier/Coller de la toile dans une image :

Principal :
Actions :
~greffon 1 image 0.8 "http://abaque.googlecode.com/files/Image.zgl"
va vers traitement

Traitement :
Rôles :
source :: image, x vaut 0, y vaut 0, transparence vaut 90, taille vaut 1, angle vaut 0
toile :: toile, couleur vaut "bleu"
presse :: pressepapier
Actions :
efface la toile
projette source & toile
évoque source.coller()
évoque source.sélectionneretenregistrer()
[/php]


Ce n'est que le début. D'autres fonctionnalités sont prévues comme :
- gestion du presse papier,
- effets comme : négatif, éclaircir, foncer.
- etc etc.

Le greffon peut-être téléchargé manuellement ici : http://abaque.googlecode.com/files/Image.zgl

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.1

more_horiz
Excellent ce greffon !
Merci beaucoup <img src=" title="Smile" />

Par contre on est obligé de projeter l'image avant de l'ouvrir.
Serait-il possible de pouvoir faire l'inverse ?
Pour deux raisons :

- après l'avoir ouverte je vérifie sa taille et si elle ne correspond pas, j'affiche un message d'erreur et je l'efface. Or, l'image à déjà eu le temps de s'afficher sur mon quadrillage.

- grâce à d.largeur() et d.hauteur(), je peux désormais centrer mon image dans les cases. Or, l'image s'affiche d'abord dans le coin de la case puis vient se positionner au centre.

Ou alors, il faudrait que je puisse rendre mon image invisible, le temps de faire les ajustements.

Sinon pour les fonctionnalités de prévues, pourrait-on ajouter la sélection simultanée de plusieurs images ?
Car on ouvre les images une par une, mais si on en à vingt à ouvrir...

Enfin, j'ai trop hâte à la gestion des sprites <img src=" title="Smile" />

Merci encore pour ce beau greffon <img src=" title="Smile" />

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.2

more_horiz
Le greffon est passé en version 0.2.
Il peut maintenant gérer les sprites !
J'ai ajouté un exemple dans le premier post.

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.3

more_horiz
Le greffon est passé en 0.3
Il est plus rapide et moins consommateur de mémoire que le précédent pour afficher les sprites.
L'exemple est modifié. Il est complexe.... mais en même temps, il montre une façon intelligente de gérer les sprites.
Bonne programmation.

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.1

more_horiz
Wam a écrit:

Par contre on est obligé de projeter l'image avant de l'ouvrir.
Serait-il possible de pouvoir faire l'inverse ?


Le bogue est corrigé est sera disponible dans la version 1.7 :
http://code.google.com/p/langagelinotte ... tail?id=54

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.3

more_horiz
Heu, depuis l'installation du greffon image 0.3, je ne peut plus afficher d'image :/
Soit il s'agit d'un bogue, soit il faut mettre le premier exemple à jour.

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.3

more_horiz
Le premier exemple marche pas chez moi non plus.

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.4

more_horiz
Oups, corrigé !
Une version 0.4 est disponible !

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.4

more_horiz
Depuis l'installation du greffon image 0.4, hauteur() et largeur() affiche -1 quand on charge l'image depuis un chemin d'accès (sans passer par sélectionneretouvrir() ).

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.5

more_horiz
ça fonctionne chez moi.
Le chemin du fichier est bien valide ?
(ps, une version 0.5 est maintenant disponible)

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.5

more_horiz
Oui le chemin est bien valide.
Je poste la partie du code qui fait défaut :

Code:


Affichage_tiles :

Rôles :

§ tile est une image, position vaut 5
§ x_tile est un nombre <
- x de bordure_gauche
§ y_tile est un nombre <
- y de bordure_gauche
xx est un nombre
yy est un nombre
hors_champ_x est un nombre <
- 100
hors_champ_y est un nombre <
- 100
Actions :

("on vérifie si un quadrillage a été créé")
Si nombre_case == 0 alors lis
numéro_avertissement = 1
Tu vas vers fenêtre_avertissement
Reviens
ferme

incrémente index
Si index >
1 alors lis
x_tile = xx
y_tile = yy
ferme

ajoute tile dans casier_tiles

("si on charge une carte, on utilise le chemin d'accès sauvegardé")
Si sauvegarde_on == vrai alors lis
image de (casier_tiles{index - 1}) = chemin_tile
ferme
("si on ne charge pas de carte alors on laisse l'utilisateur choisir un tile")
Si sauvegarde_on == faux alors lis
évoque (casier_tiles{index - 1}).
sélectionneretouvrir()
ferme
("on projette le tile en dehors de la fenêtre, le temps de faire les vérifications")
déplace casier_tiles{index - 1} vers hors_champ_x et hors_champ_y
Projette casier_tiles{index - 1}
("Il faut attendre que l'image soit chargée :
")
attends 0.
1 seconde

largeur_tile = (casier_tiles{index - 1}).
largeur()
hauteur_tile = (casier_tiles{index - 1}).
hauteur()

("on vérifie que l'image ne dépasse pas de la case")
Si largeur_tile >
taille_case alors lis
Efface casier_tiles{index - 1}
tu ôtes casier_tiles{index - 1} de casier_tiles
numéro_avertissement = 2
Tu vas vers Fenêtre_avertissement
Tu reviens
ferme
Si hauteur_tile >
taille_case alors lis
Efface casier_tiles{index - 1}
tu ôtes casier_tiles{index - 1} de casier_tiles
numéro_avertissement = 2
Tu vas vers Fenêtre_avertissement
Tu reviens
ferme

("on déplace l'image au milieu de la case")
xx = x_tile + ((taille_case - largeur_tile) / 2)
yy = y_tile + ((taille_case - hauteur_tile) / 2)
déplace casier_tiles{index - 1} vers xx et yy

("quand on arrive à la dernière case du mini quadrillage, on affiche le tile suivant par dessus le premier tile")
Si index >
nombre_case2 alors lis
incrémente index_2
Si index_2 >
nombre_case2 alors index_2 = 1
Efface (casier_tiles{index_2 - 1})
casier_tiles{index_2 - 1} vaut tile
ferme

("on positionne les images suivantes")
x_tile = x_tile + taille_case
si x_tile est plus grand que (x de bordure_gauche) + (largeur de bordure_gauche - 1) - taille_case alors lis
x_tile = x de bordure_gauche
y_tile = y_tile + taille_case
ferme
si y_tile est plus grand que entier (nombre_case2 / ligne_complète) * taille_case alors lis
y_tile = y de bordure_gauche
ferme
xx = x_tile
yy = y_tile

drop_valide = vrai

Fais réagir casier_tiles{index - 1} à "clic souris" pour Drag

Si sauvegarde_on == vrai alors tu reviens



Il y a deux erreurs :
- si je charge mon image grâce au chemin enregistré dans un fichier, hauteur() et largeur() sont à -1. L'image ne se positionne donc pas au bon endroit.
Je n'ai pas cette erreur quand je charge mon image avec sélectionneretouvrir()

- dans les deux cas, mon image ne réagit pas au clic souris.

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.5

more_horiz
Bonjour Wam,

Je viens de mettre à disposition cette première beta 1.7 :

Peux-tu l'installer :
https://langagelinotte.googlecode.com/f ... e_beta.zip

Puis de récupérer la version 0.6 du greffon Image.

Cpc

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.6

more_horiz
Heu... Je n'arrive pas à installer correctement la version beta car je n'arrive pas à désinstaller Linotte 1.6. Maintenant quand je clique sur l'atelier, il m'ouvre le dossier compresser du désinstalleur avec winrar O_o
Je peux ouvrir l'atelier beta mais je suis obligé de passer par le fichier de commande debug.

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.6

more_horiz
Sinon, passe par ce lien là :
http://langagelinotte.googlecode.com/fi ... e_beta.zip

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.6

more_horiz
La version bêta est installée !
Par contre j'ai du supprimer les raccourcis de la version 1.6 car en essayant de la désinstaller, tous les raccourcis Linotte menait au fichier .rar du désinstalleur.

En tous cas, cette version bêta corrige les bogues rapportés hier, merci <img src=" title="Smile" />

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.6

more_horiz
Bonjour,
n'ayant pas de nouvelles je re-signale l'erreur interne au greffon de sélectionneretouvrir().
Merci.

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.6

more_horiz
Bonjour Wam,

tu as la version 0.7 du greffon ?

Je ne rencontre pas de problème lors de mes tests.

cpc

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.7

more_horiz
Oui, j'ai même le problème avec l'exemple :

Code:


Copier/Coller de la toile dans une image :


Principal :

Actions :

~greffon 1 image 0.
7 "http:
//abaque.
googlecode.
com/files/Image.
zgl"
va vers traitement

Traitement :

Rôles :

source :
:
image, x vaut 0, y vaut 0, transparence vaut 90, taille vaut 1, angle vaut 0
toile :
:
toile, couleur vaut "bleu"
presse :
:
pressepapier
Actions :

efface la toile
projette source & toile
évoque source.
sélectionneretouvrir()
évoque presse.
copierzonetoile(10,10,50,50)
évoque source.
coller()

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.7

more_horiz
Je n'arrive pas à reproduire ton bogue... étrange...
Peux-tu partager l'image que tu veux charger ?

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.7

more_horiz
L'image c'est celle de zamirh pour le bombernotte : "everything".
J'ai l'erreur avec toutes mes images, elle sont toutes au format PNG.
Voici le message d'erreur :
La valeur est incorrecte : Erreur interne au greffon !java.lang.NoSuchMethodError: org.linotte.imaginarium.ImageX.setAttribute(Ljava/lang/String;
Ljava/lang/String;
)V

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.7

more_horiz
OK... c'est plus clair maintenant !
Il faut que tu télécharges la dernière beta !
http://langagelinotte.free.fr/forum/sho ... 20#pid5920

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.7

more_horiz
Je l'ai déjà téléchargé et installé mais visiblement l'ancienne version est toujours active.
Je voudrais donc désinstaller Linotte pour réinstaller proprement cette version bêta.
Hors, Linotte n'apparaît pas dans la liste des logiciels installés.
Le désinstalleur Linotte m'ouvre son archive .rar et ne désinstalle pas.
J'ai supprimé le dossier Linotte dans Program Files et l'atelier s'ouvre toujours.

Faut-il que je passe par l'éditeur de registre pour pouvoir supprimer Linotte ?

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.7

more_horiz
dans le menu "démarrer" , tu dois avoir un desinstalleur.
Le problème, c'est que tu dois avoir les fichiers .jar associés au programme RAR.

Normalement, tu peux installer une version de Linotte par dessus l'autre sans problème....

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.7

more_horiz
C'est bon, ça fonctionne. Merci.

descriptionGreffon Image 0.8 EmptyRE: Greffon Image 0.7

more_horiz
J'aurais besoin d'une fonction pour éclaircir/assombrir une image.
Sa me permettra de mettre l'image sélectionnée en surbrillance (ou la griser, je ne sais pas encore).
Merci.

descriptionGreffon Image 0.8 EmptyRe: Greffon Image 0.8

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum