Rechercher
Résultats par :
Recherche avancée
Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités

Aucun

Voir toute la liste


Partagez
Voir le sujet précédentAller en basVoir le sujet suivant
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

Problème pipette et greffon clavier

le Thu 26 Apr - 17:48
Je dispose d'une image de 677 x 425.
Je positionne dans le coin de l'image un carré de 22 x 22.
Je récupère chaque pixel de l'image contenue dans le carré à l'aide de la pipette.
Je fais alors correspondre chaque pixel à un tile que j'affiche.

Mais j'ai un problème avec la pipette :
L'image est en noir et blanc : les valeurs des couleurs obtenues sont donc 255 255 255 ou 0 0 0.
Hors, de temps en temps, je me retrouve avec comme valeur : 255 127 127
Ceci, de façon complètement aléatoire.

J'ai un second problème :
J'essaye de coder un système de scrolling pour pouvoir déplacer le rectangle et ainsi afficher les tiles correspondants.

Mon code fonctionne mais plus j'utilise le clavier, plus mon programme ralenti.
Voici un extrait de mon code :
[php]
Sauvegarde_automatique :
Rôles :
§ pipette::pipette
§ couleur est un texte
§ numéro_tile est un nombre
§ c :: conduit
§ ligne <
- c.retourchariot()
§ i est un nombre
§ j est un nombre
Actions :
pos_x_fenêtre_scrolling = x de fenêtre_scrolling
pos_y_fenêtre_scrolling = y de fenêtre_scrolling

"pos_x_fenêtre_scrolling : " + pos_x_fenêtre_scrolling !
"pos_y_fenêtre_scrolling : " + pos_y_fenêtre_scrolling !

Si scrolling_en_cours == faux alors lis
projette carte_monde & fenêtre_scrolling
ferme

évoque c.enregistrer("K:\Avatar\Sauvegarde.txt")

("ici i et j correspondent aux nombre de cases en largeur et en hauteur du quadrillage, en fonction de la taille de la fenêtre de scrolling, moins sa bordure (-2)")
Pour i de (pos_x_fenêtre_scrolling + 1) à (pos_x_fenêtre_scrolling + largeur_fenêtre_scrolling - 2), lis
Pour j de (pos_y_fenêtre_scrolling + 1) à (pos_y_fenêtre_scrolling + hauteur_fenêtre_scrolling - 2), lis

("ici i et j correspondent à la position de chaque pixel, en fonction de la position de la fenêtre de scrolling")
couleur = pipette.retournecouleur(i, j)

Si couleur == "255 255 255" alors lis
numéro_tile = 6
évoque c.écrire(""+ numéro_tile)
ferme
Sinon Si couleur == "0 0 0" alors lis
numéro_tile = 4
évoque c.écrire(""+ numéro_tile)
ferme
Sinon lis
numéro_tile = 0
évoque c.écrire(""+ numéro_tile)
ferme
ferme
évoque c.écrire(ligne)
ferme

évoque c.fermer()

Va vers Lecture_automatique

Lecture_automatique :
Rôles :
§ x_case est un nombre <
- (((largeur de fond - largeur de bordure_gauche) - (largeur de fond - x de carte_monde) - ((largeur de fenêtre_scrolling - 2) * largeur_case_quadrillage_tileset))/2) + largeur de bordure_gauche
§ y_case est un nombre <
- (hauteur de fond - ((hauteur de fenêtre_scrolling - 2) * hauteur_case_quadrillage_tileset))/2
§ c :: conduit
§ sauvegarde_tile est un texte
§ numéro_tile est un nombre
§ i est un nombre
§ j est un nombre
Actions :
évoque c.ouvrir("K:\Avatar\Sauvegarde.txt")

("ici i et j correspondent aux nombre de cases en largeur et en hauteur du quadrillage, en fonction de la taille de la fenêtre de scrolling, moins sa bordure (-2)")
Pour i de (pos_x_fenêtre_scrolling + 1) à (pos_x_fenêtre_scrolling + largeur_fenêtre_scrolling - 2), lis
Pour j de (pos_y_fenêtre_scrolling + 1) à (pos_y_fenêtre_scrolling + hauteur_fenêtre_scrolling - 2), lis

sauvegarde_tile vaut c.nlire(1)
Tu convertis sauvegarde_tile en numéro_tile

(" x_case et y_case correspondent aux positions de chaque case du quadrillage, en fonction de la taille de la fenêtre de scrolling, moins sa bordure (-2)")
Parcours Générer_quadrillage_automatique avec numéro_tile, x_case, y_case
Observe Générer_quadrillage_automatique

y_case = y_case + hauteur_case_quadrillage_tileset
ferme
x_case = x_case + largeur_case_quadrillage_tileset
y_case = (hauteur de fond - ((hauteur de fenêtre_scrolling - 2) * hauteur_case_quadrillage_tileset))/2

("on avance le curseur de 2 caractères pour éviter de lire le retour à la ligne")
sauvegarde_tile vaut c.nlire(2)
("sauvegarde_tile !")
ferme

évoque c.fermer()

Va vers Attente_clavier2

Générer_quadrillage_automatique :
Rôles :
*numéro_tile est un nombre
*x_tile est un nombre
*y_tile est un nombre
§ copie_tile est un mongraphique
§ x_tile_init est un nombre
§ y_tile_init est un nombre
index_4 est un nombre
Actions :
ajoute copie_tile dans copie_casier_tiles
image de (copie_casier_tiles{index_4}) = image de (casier_tiles{numéro_tile})
dx@(copie_casier_tiles{index_4}) vaut dx de (casier_tiles{numéro_tile})
dy@(copie_casier_tiles{index_4}) vaut dy de (casier_tiles{numéro_tile})
largeur@(copie_casier_tiles{index_4}) vaut largeur_case_quadrillage_tileset
hauteur@(copie_casier_tiles{index_4}) vaut hauteur_case_quadrillage_tileset
x_tile_init = x de (casier_tiles{numéro_tile}) + 2
y_tile_init = y de (casier_tiles{numéro_tile}) + 2
pos_x_init de (copie_casier_tiles{index_4}) = x_tile_init
pos_y_init de (copie_casier_tiles{index_4}) = y_tile_init
x de (copie_casier_tiles{index_4}) = x_tile
y de (copie_casier_tiles{index_4}) = y_tile
position de (copie_casier_tiles{index_4}) = position de (casier_tiles{numéro_tile})
pos_case de (copie_casier_tiles{index_4}) = index_4
pos_case_init de (copie_casier_tiles{index_4}) = -5
index_case de (copie_casier_tiles{index_4}) = index_4
Projette copie_casier_tiles{index_4}

incrémente index_4
Reviens

Attente_clavier2 :
Rôles :
clavier :: clavier
Actions :
évoque clavier.commencer()
tant que vrai, lis
attends 100 millisecondes
parcours Scrolling avec clavier.touches()
ferme

Scrolling :
Rôles :
*liste :: casier de nombre
§ x_carte_monde est un nombre <
- x de carte_monde
§ y_carte_monde est un nombre <
- y de carte_monde
Actions :
Si liste est non vide alors lis
Pour chaque liste, lis
Si joker == "Droite" alors déplace fenêtre_scrolling vers la droite de 1
Si joker == "Gauche" alors déplace fenêtre_scrolling vers la gauche de 1
Si joker == "Haut" alors déplace fenêtre_scrolling vers le haut de 1
Si joker == "Bas" alors déplace fenêtre_scrolling vers le bas de 1

joker !

("on fixe des limites")
pos_x_fenêtre_scrolling = x de fenêtre_scrolling
pos_y_fenêtre_scrolling = y de fenêtre_scrolling

Si pos_x_fenêtre_scrolling <
(x_carte_monde - 1) alors x de fenêtre_scrolling = x_carte_monde - 1
Si pos_x_fenêtre_scrolling >
((x_carte_monde - 1 + largeur_carte_monde) - largeur_fenêtre_scrolling) alors x de fenêtre_scrolling = (x_carte_monde - 1 + largeur_carte_monde) - largeur_fenêtre_scrolling
Si pos_y_fenêtre_scrolling <
(y_carte_monde - 1) alors y de fenêtre_scrolling = y_carte_monde - 1
Si pos_y_fenêtre_scrolling >
((y_carte_monde - 1 + hauteur_carte_monde) - hauteur_fenêtre_scrolling) alors y de fenêtre_scrolling = (y_carte_monde - 1 + hauteur_carte_monde) - hauteur_fenêtre_scrolling

scrolling_en_cours = vrai

Va vers Sauvegarde_automatique
ferme
ferme
Reviens
[/php]
avatar
Site Admin
Messages : 1035
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Problème pipette et greffon clavier

le Wed 2 May - 9:48
Wam,

L'utilisation de la méthode clavier.commencer() ne doit être effectuée qu'une seule fois par livre. J'ai l'impression que tu l'appelles plusieurs fois ?

ça peut expliquer la lenteur.
avatar
Site Admin
Messages : 1035
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Problème pipette et greffon clavier

le Wed 2 May - 9:49
Je regarde ce problème avec la pipette.
j'ai mon idée.
ça doit être un problème de synchronisation entre le moment où tu demandes la couleur d'un pixel et l'état d'affichage de la toile.
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Problème pipette et greffon clavier

le Wed 2 May - 15:41
Pour la pipette j'ai rajouter un "attends 30 millisecondes" entre le moment où je déplace mon rectangle et celui où je prélève les pixels.
Depuis, plus de problème.
avatar
Site Admin
Messages : 1035
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Problème pipette et greffon clavier

le Wed 2 May - 17:03
Parfait,

ça me laisse le temps de trouver une solution ... :dodgy:
Contenu sponsorisé

Re: Problème pipette et greffon clavier

Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum