Merci pour ton exemple.
Je te montre ce que j'ai fait :
Code:
Actions :
("casier_tiles est un casier d'image à glisser-déposer")
Mesure casier_tiles dans nombre_tiles
pour i de 0 à nombre_case - 1, lis
pour chaque nombre_tiles, lis
("grille{i} est un quadrillage")
Si casier_tiles{joker} est en collision avec grille{i} alors lis
pos_x = x de (casier_tiles{joker})
pos_y = y de (casier_tiles{joker})
("ici je détermine la case du quadrillage sur laquelle mon image s'est posée")
num_x = (pos_x - ((((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_case))/2) + largeur de bordure_gauche)) / taille_case
num_y = (pos_y - ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute)) / taille_case
numéro_case = (arrondi num_x * nombre_case_hauteur_effectif) + arrondi num_y
("si mon image dépasse de trop de mon quadrillage alors je la renvoie à sa position d'origine")
si pos_x <
pos_x_mini alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_x >
pos_x_maxi alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_y <
pos_y_mini alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_y >
pos_y_maxi alors parcours Annulation avec (casier_tiles{joker}), joker - 1
("sinon je pose mon image dans le quadrillage")
Sinon, parcours Repositionnement avec (casier_tiles{joker}), numéro_case
ferme
numéro_case = 0
ferme
ferme
Reviens
("ici on positionne les images dans le quadrillage")
Repositionnement :
Rôles :
*tuile est un graphique
*numéro est un nombre
Actions :
x de tuile = x de (grille{numéro})
y de tuile = y de (grille{numéro})
Reviens
("ici on annule le drag&drop")
Annulation :
Rôles :
*retour_tuile est un graphique
*retour_numéro est un nombre
Actions :
x de retour_tuile = x de (casier_tiles{retour_numéro})
y de retour_tuile = y de (casier_tiles{retour_numéro})
Reviens
Sa fonctionne
" title="Smile" />
En revanche je ne peut pas annuler le drag&drop si mon image n'est pas en collision avec mon quadrillage.
Par exemple, si je fait :
Code:
pour i de 0 à nombre_case - 1, lis
pour chaque nombre_tiles, lis
("grille{i} est un quadrillage")
Si casier_tiles{joker} est en collision avec grille{i} alors lis
pos_x = x de (casier_tiles{joker})
pos_y = y de (casier_tiles{joker})
("ici je détermine la case du quadrillage sur laquelle mon image s'est posée")
num_x = (pos_x - ((((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_case))/2) + largeur de bordure_gauche)) / taille_case
num_y = (pos_y - ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute)) / taille_case
numéro_case = (arrondi num_x * nombre_case_hauteur_effectif) + arrondi num_y
("si mon image dépasse de trop mon quadrillage alors je la renvoie à sa position d'origine")
si pos_x <
pos_x_mini alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_x >
pos_x_maxi alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_y <
pos_y_mini alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_y >
pos_y_maxi alors parcours Annulation avec (casier_tiles{joker}), joker - 1
("sinon je pose mon image dans le quadrillage")
Sinon, parcours Repositionnement avec (casier_tiles{joker}), numéro_case
ferme
("Si casier_tiles{joker} n'est pas en collision avec grille{i}")
Sinon, lis
x de (casier_tiles{joker}) = 1
y de (casier_tiles{joker}) = 1
ferme
numéro_case = 0
ferme
ferme
Reviens
Mon programme ne repère plus la collision et renvoie mon image dans son coin à chaque fois.
Je n'ai trouvé aucune solution pour annuler le drag&drop si mon image n'est pas dans le quadrillage.