Programmant un éditeur de niveaux, je charge des images dans un petit quadrillage.
Je souhaite ensuite pouvoir déplacer ces images en drag&drop vers un grand quadrillage.
Seulement, si je fais :
Les images s'affichent, je peut les déplacer mais comme "création" n'est vivant que dans la boucle, je ne peut pas l'utiliser dans un autre paragraphe et donc je ne peut pas insérer mes images dans le quadrillage, gérer les collisions, etc...
Si je fait :
Il ne m'affiche que la dernière image. Je peut néanmoins déplacer mon image, gérer les collisions,etc...
Si je fais :
Le programme affiche une image puis plante.
J'ai essayer beaucoup de variantes, sans succès.
Comment faire ?
(On ne peut pas mettre de balises de couleur, gras, souligné,etc... entre les balise de code, ça faciliterait la lecture ^^)
Je souhaite ensuite pouvoir déplacer ces images en drag&drop vers un grand quadrillage.
Seulement, si je fais :
Code:
Affichage_tiles :
Rôles :
§ i est un nombre
nombre_tiles_init est un nombre
nombre_tiles est un nombre
§ création_tile est un texte
xx est un nombre <
- x de bordure_gauche + 1
yy est un nombre <
- y de bordure_gauche + 1
xxx est un nombre
yyy est un nombre
Actions :
Mesure casier_champs dans nombre_tiles
pour i de nombre_tiles_init à nombre_tiles - 1, lis
Tu concatènes "tile_" + i dans création_tile
Crée création_tile un acteur graphique
image de création vaut (casier_champs{i})
Si nombre_tiles_init != 0 alors lis
xx = xxx
yy = yyy
ferme
x de création vaut xx
y de création vaut yy
position de création vaut 3
Tu ajoutes création dans casier_tiles
Projette création
xx = xx + taille_case
si xx est plus grand que (x de bordure_gauche + 1) + (largeur de bordure_gauche - 1) - taille_case alors lis
xx = x de bordure_gauche + 1
yy = yy + taille_case
ferme
si yy est plus grand que (entier (10 / entier (((x de bordure_gauche + 1) + (largeur de bordure_gauche - 1)) / taille_case))) * taille_case + (y de bordure_gauche + 1) - taille_case alors lis
yy = y de bordure_gauche + 1
ferme
xxx = xx
yyy = yy
Fais réagir création à "glisser-déposer" pour dessiner_carte
ferme
nombre_tiles_init = nombre_tiles
Dessiner_carte :
Rôles :
§ pos_x est un nombre
§ pos_y est un nombre
§ numéro_case est un nombre
§ y_tile est un nombre <
- y de tile
§ y_mer est un nombre <
- y de Mer
§ pos_y_mini est un nombre <
- ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute) - (taille_case / 2)
§ pos_y_maxi est un nombre <
- ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute) + (nombre_case_hauteur_effectif * taille_case) - (taille_case / 2)
Actions :
pour chaque nombre_case, lis
Si tile est en collision avec grille{joker} alors lis
Si y_tile <
pos_y_mini alors reviens
Si y_tile >
pos_y_maxi alors reviens
pos_x = (x de tile - ((((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_case))/2) + largeur de bordure_gauche)) / taille_case
pos_y = (y de tile - ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute)) / taille_case
numéro_case = (arrondi pos_x * nombre_case_hauteur_effectif) + arrondi pos_y
Si numéro_case <
0 alors reviens
Si numéro_case >
(nombre_case - 1) alors reviens
Parcours Repositionnement avec tile, numéro_case
ferme
numéro_case = 0
ferme
Reviens
("ici on repositionne les tuiles 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})
Les images s'affichent, je peut les déplacer mais comme "création" n'est vivant que dans la boucle, je ne peut pas l'utiliser dans un autre paragraphe et donc je ne peut pas insérer mes images dans le quadrillage, gérer les collisions, etc...
Si je fait :
Code:
Affichage_tiles :
Rôles :
§ i est un nombre
nombre_tiles_init est un nombre
nombre_tiles est un nombre
§ création_tile est un texte
xx est un nombre <
- x de bordure_gauche + 1
yy est un nombre <
- y de bordure_gauche + 1
xxx est un nombre
yyy est un nombre
Actions :
Mesure casier_champs dans nombre_tiles
pour i de nombre_tiles_init à nombre_tiles - 1, lis
Tu concatènes "tile_" + i dans création_tile
Crée création_tile un acteur graphique
tile = création
image de tile vaut (casier_champs{i})
Si nombre_tiles_init != 0 alors lis
xx = xxx
yy = yyy
ferme
x de tile vaut xx
y de tile vaut yy
position de tile vaut 3
Tu ajoutes tile dans casier_tiles
Projette tile
xx = xx + taille_case
si xx est plus grand que (x de bordure_gauche + 1) + (largeur de bordure_gauche - 1) - taille_case alors lis
xx = x de bordure_gauche + 1
yy = yy + taille_case
ferme
si yy est plus grand que (entier (10 / entier (((x de bordure_gauche + 1) + (largeur de bordure_gauche - 1)) / taille_case))) * taille_case + (y de bordure_gauche + 1) - taille_case alors lis
yy = y de bordure_gauche + 1
ferme
xxx = xx
yyy = yy
Fais réagir tile à "glisser-déposer" pour dessiner_carte
ferme
nombre_tiles_init = nombre_tiles
Dessiner_carte :
Rôles :
§ pos_x est un nombre
§ pos_y est un nombre
§ numéro_case est un nombre
§ y_tile est un nombre <
- y de tile
§ y_mer est un nombre <
- y de Mer
§ pos_y_mini est un nombre <
- ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute) - (taille_case / 2)
§ pos_y_maxi est un nombre <
- ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute) + (nombre_case_hauteur_effectif * taille_case) - (taille_case / 2)
Actions :
pour chaque nombre_case, lis
Si tile est en collision avec grille{joker} alors lis
Si y_tile <
pos_y_mini alors reviens
Si y_tile >
pos_y_maxi alors reviens
pos_x = (x de tile - ((((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_case))/2) + largeur de bordure_gauche)) / taille_case
pos_y = (y de tile - ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute)) / taille_case
numéro_case = (arrondi pos_x * nombre_case_hauteur_effectif) + arrondi pos_y
Si numéro_case <
0 alors reviens
Si numéro_case >
(nombre_case - 1) alors reviens
Parcours Repositionnement avec tile, numéro_case
ferme
numéro_case = 0
ferme
Reviens
("ici on repositionne les tuiles 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})
Il ne m'affiche que la dernière image. Je peut néanmoins déplacer mon image, gérer les collisions,etc...
Si je fais :
Code:
Affichage_tiles :
Rôles :
§ i est un nombre
nombre_tiles_init est un nombre
nombre_tiles est un nombre
§ création_tile est un texte
xx est un nombre <
- x de bordure_gauche + 1
yy est un nombre <
- y de bordure_gauche + 1
xxx est un nombre
yyy est un nombre
Actions :
Mesure casier_champs dans nombre_tiles
pour i de nombre_tiles_init à nombre_tiles - 1, lis
Tu concatènes "tile_" + i dans création_tile
Crée création_tile un acteur graphique
image de création vaut (casier_champs{i})
Si nombre_tiles_init != 0 alors lis
xx = xxx
yy = yyy
ferme
x de création vaut xx
y de création vaut yy
position de création vaut 3
Tu ajoutes création dans casier_tiles
Projette création
xx = xx + taille_case
si xx est plus grand que (x de bordure_gauche + 1) + (largeur de bordure_gauche - 1) - taille_case alors lis
xx = x de bordure_gauche + 1
yy = yy + taille_case
ferme
si yy est plus grand que (entier (10 / entier (((x de bordure_gauche + 1) + (largeur de bordure_gauche - 1)) / taille_case))) * taille_case + (y de bordure_gauche + 1) - taille_case alors lis
yy = y de bordure_gauche + 1
ferme
xxx = xx
yyy = yy
Parcours Drag&Drop avec création
ferme
nombre_tiles_init = nombre_tiles
Drag&Drop :
Rôles :
*tile_test est un graphique
Actions :
tile = tile_test
Fais réagir tile à "glisser-déposer" pour Dessiner_carte
("ici on améliore le drag & drop")
Dessiner_carte :
Rôles :
§ pos_x est un nombre
§ pos_y est un nombre
§ numéro_case est un nombre
§ y_tile est un nombre <
- y de tile
§ y_mer est un nombre <
- y de Mer
§ pos_y_mini est un nombre <
- ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute) - (taille_case / 2)
§ pos_y_maxi est un nombre <
- ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute) + (nombre_case_hauteur_effectif * taille_case) - (taille_case / 2)
Actions :
pour chaque nombre_case, lis
Si tile est en collision avec grille{joker} alors lis
Si y_tile <
pos_y_mini alors reviens
Si y_tile >
pos_y_maxi alors reviens
pos_x = (x de tile - ((((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_case))/2) + largeur de bordure_gauche)) / taille_case
pos_y = (y de tile - ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute)) / taille_case
numéro_case = (arrondi pos_x * nombre_case_hauteur_effectif) + arrondi pos_y
Si numéro_case <
0 alors reviens
Si numéro_case >
(nombre_case - 1) alors reviens
Parcours Repositionnement avec tile, numéro_case
ferme
Si Mer est en collision avec grille{joker} alors lis
Si y_mer <
pos_y_mini alors reviens
Si y_mer >
pos_y_maxi alors reviens
pos_x = (x de Mer - ((((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_case))/2) + largeur de bordure_gauche)) / taille_case
pos_y = (y de Mer - ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute)) / taille_case
numéro_case = (arrondi pos_x * nombre_case_hauteur_effectif) + arrondi pos_y
Si numéro_case <
0 alors reviens
Si numéro_case >
(nombre_case - 1) alors reviens
Parcours Repositionnement avec Mer, numéro_case
ferme
numéro_case = 0
ferme
Reviens
("ici on repositionne les tuiles 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})
Le programme affiche une image puis plante.
J'ai essayer beaucoup de variantes, sans succès.
Comment faire ?
(On ne peut pas mettre de balises de couleur, gras, souligné,etc... entre les balise de code, ça faciliterait la lecture ^^)