Rechercher
Résultats par :
Recherche avancée
Mots-clés

taille  vider  convertir  caractères  

Qui est en ligne ?
Il y a en tout 3 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 3 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

Bogue "Sinon"

le Sun 13 May - 16:34
J'ai trouvé un bogue sympa.
Dans cet exemple, on ouvre une image et on créer un quadrillage pour la découper.

[php]
Editeur de cartes :

Espèces :
pos_x_init & pos_y_init & numéro_case & numéro_case_init & index_copie_casier_tiles & numéro_tile :: nombre
validation_drop & validation_annulation :: drapeau
L'espèce mongraphique hérite de image et contient pos_x_init , pos_y_init, numéro_case, numéro_case_init, index_copie_casier_tiles, numéro_tile, validation_drop, validation_annulation

Grands rôles :
("Fenêtre principale")
Fenêtre_principale est un formulaire, hauteur vaut 828, largeur vaut 1600, titre vaut "Editeur de cartes"

("Fenêtre découpage tileset")
Fenêtre_découpage_tileset est un formulaire, hauteur vaut 250, largeur vaut 300, titre vaut "Découpage du tileset", visible vaut "non", x vaut 450, y vaut 255
txt_Fdt1 est une étiquette, texte vaut "Création de la grille de découpage :", x vaut 70, y vaut 10
txt_Fdt2 est une étiquette, texte vaut "Largeur des cases :", x vaut 10, y vaut 35
txt_Fdt3 est une étiquette, texte vaut "Hauteur des cases :", x vaut 10, y vaut 55
choix_largeur_case est un sélecteur, valeurs vaut "", x vaut 200, y vaut 35
choix_hauteur_case est un sélecteur, valeurs vaut "", x vaut 200, y vaut 55
txt_Fdt4 est une étiquette, texte vaut "Quadriller une zone du tileset :", x vaut 85, y vaut 85
txt_Fdt5 est une étiquette, texte vaut "Nombre de cases en largeur :", x vaut 10, y vaut 110
txt_Fdt6 est une étiquette, texte vaut "Nombre de cases en hauteur :", x vaut 10, y vaut 130
choix_nombre_cases_largeur est un sélecteur, valeurs vaut "", x vaut 200, y vaut 110
choix_nombre_cases_hauteur est un sélecteur, valeurs vaut "", x vaut 200, y vaut 130
case_tout_quadriller_Fdt est une caseàcocher, texte vaut "Quadriller le tileset en entier", x vaut 55, y vaut 160
case_non_quadriller_Fdt est une caseàcocher, texte vaut "Ne pas créer de grille de découpage", x vaut 55, y vaut 180
bouton_valider_Fdt est un bouton, texte vaut "Quadriller", x vaut 70, y vaut 210
bouton_découper_Fdt est un bouton, texte vaut "Découper", x vaut 160, y vaut 210

("Menus")
menu1 est un menu, texte vaut "Tileset"
menu1s1 est un sousmenu, texte vaut "Importer un tileset"

("Toile")
fond est une toile, hauteur vaut 800, largeur vaut 1600, couleur vaut "blanc", pointeur vaut "flèche"
xtoile est une xtoile, x vaut 0, y vaut 0
bordure_gauche est un rectangle, x = 0, y = 0, position vaut 1, hauteur vaut hauteur de fond, largeur vaut 150, plein vaut "oui", couleur vaut "blanc"

("Quadrillage tileset")
largeur_case_quadrillage_tileset est un nombre
hauteur_case_quadrillage_tileset est un nombre
nombre_case_largeur_quadrillage_tileset est un nombre
nombre_case_hauteur_quadrillage_tileset est un nombre
nombre_case_largeur_effectif_quadrillage_tileset est un nombre
nombre_case_hauteur_effectif_quadrillage_tileset est un nombre
nombre_case_quadrillage_tileset est un nombre
x_case est un nombre
y_case est un nombre
pos_sourisx est un nombre
pos_sourisy est un nombre

grille1 est un casier de rectangle
grille2 est un casier de rectangle
grille3 est un casier de rectangle

("Tileset")
tileset est une image, position vaut 5
largeur_tileset est un nombre
hauteur_tileset est un nombre
casier_tiles est un casier de image
dx_init est un nombre
dy_init est un nombre
dx_tile est un nombre
dy_tile est un nombre

("Drapeaux")
quadrillage_off est un drapeau
tout_quadriller_on est un drapeau
déplacement_quadrillage est un drapeau

Fenêtre_principale :
Rôles :
Actions :
("Construction des fenêtres")

Tu ajoutes txt_Fdt1 & txt_Fdt2 & txt_Fdt3 & txt_Fdt5 & txt_Fdt6 & choix_largeur_case & choix_hauteur_case & choix_nombre_cases_largeur & choix_nombre_cases_hauteur & case_tout_quadriller_Fdt & case_non_quadriller_Fdt & bouton_valider_Fdt & bouton_découper_Fdt dans Fenêtre_découpage_tileset
Tu fais réagir Fenêtre_découpage_tileset à "clic souris" pour Fermer_fenêtre_découpage_tileset
Tu fais réagir case_tout_quadriller_Fdt à "clic souris" pour Quadriller_tout
Tu fais réagir case_non_quadriller_Fdt à "clic souris" pour Ne_pas_quadriller
Tu fais réagir bouton_valider_Fdt à "clic souris" pour Générer_quadrillage_tileset

visible@Fenêtre_découpage_tileset vaut "oui"
visible@Fenêtre_découpage_tileset vaut "non"

("Début du programme")

Tu ajoutes xtoile dans Fenêtre_principale
visible de Fenêtre_principale vaut "oui"
Tu ajoutes menu1 dans Fenêtre_principale
Tu ajoutes menu1s1 dans menu1
Tu fais réagir Fenêtre_principale à "clic souris" pour Fermer_fenêtre_principale
Tu fais réagir menu1s1 à "clic souris" pour Affichage_toile
Tu fais réagir menu1s1 à "clic souris" pour Affichage_tileset

tant que 1 est différent de 2, lis
temporise
ferme

Fenêtre_découpage_tileset :
Rôles :
§ i est un nombre
Actions :
visible de Fenêtre_découpage_tileset vaut "oui"

Pour i de 5 à 100, lis
Tu ajoutes i +"|" dans valeurs@choix_largeur_case
Tu ajoutes i +"|" dans valeurs@choix_hauteur_case
Tu fermes
Pour i de 1 à 100, lis
Tu ajoutes i +"|" dans valeurs@choix_nombre_cases_largeur
Tu ajoutes i +"|" dans valeurs@choix_nombre_cases_hauteur
Tu fermes

Fermer_fenêtre_principale :
Rôles :
*f :: formulaire
Actions :
Efface la toile
Tu termines

Fermer_fenêtre_avertissement :
Rôles :
Actions :
visible de Fenêtre_avertissement vaut "non"
Tu reviens

Fermer_fenêtre_découpage_tileset :
Rôles :
Actions :
visible de Fenêtre_découpage_tileset vaut "non"
Tu reviens

Fermer_fenêtre_nouveau_quadrillage :
Rôles :
Actions :
visible de Fenêtre_nouveau_quadrillage vaut "non"
Tu reviens

Affichage_toile :
Rôles :
Actions :
Efface la toile
Projette le fond & bordure_gauche

Tant que vrai, lis
Temporise
Ferme

Affichage_tileset :
Rôles :
§ pos_x_tileset est un nombre
§ pos_y_tileset est un nombre
Actions :
évoque tileset.sélectionneretouvrir()

largeur_tileset = tileset.largeur()
hauteur_tileset = tileset.hauteur()

pos_x_tileset = (((largeur de fond - largeur de bordure_gauche) - largeur_tileset)/2) + largeur de bordure_gauche
pos_y_tileset = (hauteur de fond - hauteur_tileset)/2
déplace tileset vers pos_x_tileset et pos_y_tileset
projette tileset

Va vers Fenêtre_découpage_tileset

Ne_pas_quadriller :
Rôles :
Actions :
Si quadrillage_off == faux alors lis
Si tout_quadriller_on == vrai alors tout_quadriller_on = faux
quadrillage_off = vrai
ferme
Sinon, quadrillage_off = faux

Quadriller_tout :
Rôles :
Actions :
Si tout_quadriller_on == faux alors lis
Si quadrillage_off == vrai alors quadrillage_off = faux
tout_quadriller_on = vrai
ferme
Sinon lis
tout_quadriller_on = faux
ferme

Générer_quadrillage_tileset :
Rôles :
§ valeur1 est un texte
§ valeur2 est un texte
§ valeur3 est un texte
§ valeur4 est un texte
Actions :
Si quadrillage_off == vrai alors lis
largeur_case_quadrillage_tileset = largeur_tileset
hauteur_case_quadrillage_tileset = hauteur_tileset
nombre_case_largeur_effectif_quadrillage_tileset = 1
nombre_case_hauteur_effectif_quadrillage_tileset = 1
ferme
Sinon, lis
valeur1 = valeur@choix_largeur_case
Tu convertis valeur1 en largeur_case_quadrillage_tileset
valeur2 = valeur@choix_hauteur_case
Tu convertis valeur2 en hauteur_case_quadrillage_tileset
valeur3 = valeur@choix_nombre_cases_largeur
Tu convertis valeur3 en nombre_case_largeur_quadrillage_tileset
valeur4 = valeur@choix_nombre_cases_hauteur
Tu convertis valeur4 en nombre_case_hauteur_quadrillage_tileset

nombre_case_largeur_effectif_quadrillage_tileset = entier (largeur_tileset / largeur_case_quadrillage_tileset)
nombre_case_hauteur_effectif_quadrillage_tileset = entier (hauteur_tileset / hauteur_case_quadrillage_tileset)

Si tout_quadriller_on == faux alors lis
Si nombre_case_largeur_effectif_quadrillage_tileset >
nombre_case_largeur_quadrillage_tileset alors nombre_case_largeur_effectif_quadrillage_tileset = nombre_case_largeur_quadrillage_tileset
Si nombre_case_hauteur_effectif_quadrillage_tileset >
nombre_case_hauteur_quadrillage_tileset alors nombre_case_hauteur_effectif_quadrillage_tileset = nombre_case_hauteur_quadrillage_tileset
ferme
ferme

nombre_case_quadrillage_tileset = nombre_case_largeur_effectif_quadrillage_tileset * nombre_case_hauteur_effectif_quadrillage_tileset
Va vers Affichage_quadrillage_tileset

Affichage_quadrillage_tileset :
Rôles :
§ case est un rectangle, couleur vaut "blanc", hauteur vaut hauteur_case_quadrillage_tileset, largeur vaut largeur_case_quadrillage_tileset, position vaut 1, plein vaut "oui"
§ contour_case est un rectangle, couleur vaut "noir", hauteur vaut hauteur_case_quadrillage_tileset, largeur vaut largeur_case_quadrillage_tileset, position vaut 100, plein vaut "non"
Actions :
"Affichage_quadrillage_tileset" !
x_case = (((largeur de fond - largeur de bordure_gauche) - largeur_tileset)/2) + largeur de bordure_gauche
y_case = (hauteur de fond - hauteur_tileset)/2

pour chaque nombre_case_quadrillage_tileset, lis
ajoute #case dans grille1
déplace grille1{joker} vers x_case et y_case
Projette grille1{joker}
y_case = y_case + hauteur_case_quadrillage_tileset
si y_case est plus grand que (((hauteur de fond - hauteur_tileset)/2) + (nombre_case_hauteur_effectif_quadrillage_tileset * hauteur_case_quadrillage_tileset)) - hauteur_case_quadrillage_tileset alors lis
y_case = (hauteur de fond - hauteur_tileset)/2
x_case = x_case + largeur_case_quadrillage_tileset
ferme
si x_case est plus grand que ((((largeur de fond - largeur de bordure_gauche) - largeur_tileset)/2) + largeur de bordure_gauche + (nombre_case_largeur_effectif_quadrillage_tileset * largeur_case_quadrillage_tileset)) - largeur_case_quadrillage_tileset alors lis
x_case = (((largeur de fond - largeur de bordure_gauche) - largeur_tileset)/2) + largeur de bordure_gauche
ferme
ferme

x_case = (((largeur de fond - largeur de bordure_gauche) - largeur_tileset)/2) + largeur de bordure_gauche
y_case = (hauteur de fond - hauteur_tileset)/2
dx_init = x_case
dy_init = y_case

pour chaque nombre_case_quadrillage_tileset, lis
ajoute #contour_case dans grille2
x de (grille2{joker}) vaut x_case
y de (grille2{joker}) vaut y_case
Projette grille2{joker}
y_case = y_case + hauteur_case_quadrillage_tileset
si y_case est plus grand que (((hauteur de fond - hauteur_tileset)/2) + (nombre_case_hauteur_effectif_quadrillage_tileset * hauteur_case_quadrillage_tileset)) - hauteur_case_quadrillage_tileset alors lis
y_case = (hauteur de fond - hauteur_tileset)/2
x_case = x_case + largeur_case_quadrillage_tileset
ferme
si x_case est plus grand que ((((largeur de fond - largeur de bordure_gauche) - largeur_tileset)/2) + largeur de bordure_gauche + (nombre_case_largeur_effectif_quadrillage_tileset * largeur_case_quadrillage_tileset)) - largeur_case_quadrillage_tileset alors lis
x_case = (((largeur de fond - largeur de bordure_gauche) - largeur_tileset)/2) + largeur de bordure_gauche
ferme
ferme

déplacement_quadrillage = vrai

Va vers Découpage_tileset

Découpage_tileset :
Rôles :
§ contour_case est un rectangle, couleur vaut "noir", hauteur vaut hauteur_case_quadrillage_tileset, largeur vaut largeur_case_quadrillage_tileset, position vaut 100, plein vaut "non"
x_mini_case est un nombre <
- 0
y_mini_case est un nombre <
- 0
Actions :
("ici on dessine le mini quadrillage de la bordure gauche")
x_mini_case = x de bordure_gauche + 1
y_mini_case = y de bordure_gauche + 1

pour chaque nombre_case_quadrillage_tileset, lis
ajoute #contour_case dans grille3
déplace grille3{joker} vers x_mini_case et y_mini_case
Projette grille3{joker}
x_mini_case = x_mini_case + largeur_case_quadrillage_tileset
si x_mini_case est plus grand que (x de bordure_gauche + 1) + (largeur de bordure_gauche - 1) - largeur_case_quadrillage_tileset alors lis
x_mini_case = x de bordure_gauche + 1
y_mini_case = y_mini_case + hauteur_case_quadrillage_tileset
ferme
si y_mini_case est plus grand que (y de bordure_gauche + 1) + (hauteur de bordure_gauche - 1) - hauteur_case_quadrillage_tileset alors lis
y_mini_case = y de bordure_gauche + 1
ferme
ferme

x_mini_case = x de bordure_gauche + 1
y_mini_case = y de bordure_gauche + 1

pour chaque nombre_case_quadrillage_tileset, lis
ajoute #tileset dans casier_tiles
dx_tile = x de (grille2{joker})
dy_tile = y de (grille2{joker})
dx@(casier_tiles{joker}) vaut dx_tile - dx_init + 1
dy@(casier_tiles{joker}) vaut dy_tile - dy_init + 1
hauteur@(casier_tiles{joker}) vaut hauteur_case_quadrillage_tileset
largeur@(casier_tiles{joker}) vaut largeur_case_quadrillage_tileset
déplace casier_tiles{joker} vers x_mini_case et y_mini_case
Projette casier_tiles{joker}
x_mini_case = x_mini_case + largeur_case_quadrillage_tileset
si x_mini_case est plus grand que (x de bordure_gauche + 1) + (largeur de bordure_gauche - 1) - largeur_case_quadrillage_tileset alors lis
x_mini_case = x de bordure_gauche + 1
y_mini_case = y_mini_case + hauteur_case_quadrillage_tileset
ferme
si y_mini_case est plus grand que (y de bordure_gauche + 1) + (hauteur de bordure_gauche - 1) - hauteur_case_quadrillage_tileset alors lis
y_mini_case = y de bordure_gauche + 1
ferme
ferme
[/php]

Si on sélectionne 2 fois de suite la case à cocher pour ne pas quadriller l'image, la fonction suivante du code (ici quadriller_tout) va s'activer.

En effet, si on écrit :
[php]
Ne_pas_quadriller :
Rôles :
Actions :
Si quadrillage_off == faux alors lis
Si tout_quadriller_on == vrai alors tout_quadriller_on = faux
quadrillage_off = vrai
ferme
Sinon, quadrillage_off = faux
[/php]

En activant 2 fois de suite la fonction, la fonction suivante du code va alors s'activer.

Il faut écrire ceci pour ne plus avoir le bogue :
[php]
Ne_pas_quadriller :
Rôles :
Actions :
Si quadrillage_off == faux alors lis
Si tout_quadriller_on == vrai alors tout_quadriller_on = faux
quadrillage_off = vrai
ferme
Sinon lis
quadrillage_off = faux
ferme
[/php]

Edit :

J'ai trouvé un bogue du même style.

[php]
Editeur de cartes :
Grands rôles :
("Fenêtre principale")
Fenêtre_principale est un formulaire, hauteur vaut 828, largeur vaut 1600, titre vaut "Editeur de cartes"

("Fenêtre_avertissement")
Fenêtre_avertissement est un formulaire, hauteur vaut 110, largeur vaut 400, titre vaut "Attention", visible vaut "non", x vaut 450, y vaut 255
txt_Fa1 est une étiquette, texte vaut "", x vaut 170, y vaut 10
txt_Fa2 est une étiquette, texte vaut "", x vaut 60, y vaut 30
txt_Fa3 est une étiquette, texte vaut "", x vaut 20, y vaut 50
bouton_valider_Fa est un bouton, texte vaut "Ok", x vaut 170, y vaut 80
bouton_enregistrer_Fa est un bouton, texte vaut "Enregistrer", x vaut 50, y vaut 80
bouton_annuler_Fa est un bouton, texte vaut "Annuler", x vaut 270, y vaut 80
numéro_avertissement est un nombre <
- 0

("Fenêtre découpage tileset")
Fenêtre_découpage_tileset est un formulaire, hauteur vaut 250, largeur vaut 300, titre vaut "Découpage du tileset", visible vaut "non", x vaut 450, y vaut 255
txt_Fdt1 est une étiquette, texte vaut "Création de la grille de découpage :", x vaut 70, y vaut 10
txt_Fdt2 est une étiquette, texte vaut "Largeur des cases :", x vaut 10, y vaut 35
txt_Fdt3 est une étiquette, texte vaut "Hauteur des cases :", x vaut 10, y vaut 55
choix_largeur_case est un sélecteur, valeurs vaut "", x vaut 200, y vaut 35
choix_hauteur_case est un sélecteur, valeurs vaut "", x vaut 200, y vaut 55
txt_Fdt4 est une étiquette, texte vaut "Quadriller une zone du tileset :", x vaut 85, y vaut 85
txt_Fdt5 est une étiquette, texte vaut "Nombre de cases en largeur :", x vaut 10, y vaut 110
txt_Fdt6 est une étiquette, texte vaut "Nombre de cases en hauteur :", x vaut 10, y vaut 130
choix_nombre_cases_largeur est un sélecteur, valeurs vaut "", x vaut 200, y vaut 110
choix_nombre_cases_hauteur est un sélecteur, valeurs vaut "", x vaut 200, y vaut 130
case_tout_quadriller_Fdt est une caseàcocher, texte vaut "Quadriller le tileset en entier", x vaut 55, y vaut 160
case_non_quadriller_Fdt est une caseàcocher, texte vaut "Ne pas créer de grille de découpage", x vaut 55, y vaut 180
bouton_valider_Fdt est un bouton, texte vaut "Quadriller", x vaut 70, y vaut 210
bouton_découper_Fdt est un bouton, texte vaut "Découper", x vaut 160, y vaut 210

("Menus")
menu1 est un menu, texte vaut "Tileset"
menu1s2 est un sousmenu, texte vaut "Découper un tileset"

("Toile")
fond est une toile, hauteur vaut 800, largeur vaut 1600, couleur vaut "blanc", pointeur vaut "flèche"
xtoile est une xtoile, x vaut 0, y vaut 0
bordure_gauche est un rectangle, x = 0, y = 0, position vaut 1, hauteur vaut hauteur de fond, largeur vaut 150, plein vaut "oui", couleur vaut "blanc"

("Tileset")
tileset est une image, position vaut 5
largeur_tileset est un nombre
hauteur_tileset est un nombre
casier_tiles est un casier de image
dx_init est un nombre
dy_init est un nombre
dx_tile est un nombre
dy_tile est un nombre

Fenêtre_principale :
Rôles :
Actions :
("Construction des fenêtres")

Tu ajoutes txt_Fa1 & txt_Fa2 & txt_Fa3 & bouton_valider_Fa & bouton_enregistrer_Fa & bouton_annuler_Fa dans Fenêtre_avertissement
Tu fais réagir Fenêtre_avertissement à "clic souris" pour Fermer_fenêtre_avertissement
Tu fais réagir bouton_valider_Fa à "clic souris" pour Fermer_fenêtre_avertissement
Tu fais réagir bouton_enregistrer_Fa à "clic souris" pour Fermer_fenêtre_avertissement
Tu fais réagir bouton_annuler_Fa à "clic souris" pour Fermer_fenêtre_avertissement

Tu ajoutes txt_Fdt1 & txt_Fdt2 & txt_Fdt3 & txt_Fdt5 & txt_Fdt6 & choix_largeur_case & choix_hauteur_case & choix_nombre_cases_largeur & choix_nombre_cases_hauteur & case_tout_quadriller_Fdt & case_non_quadriller_Fdt & bouton_valider_Fdt & bouton_découper_Fdt dans Fenêtre_découpage_tileset
Tu fais réagir Fenêtre_découpage_tileset à "clic souris" pour Fermer_fenêtre_découpage_tileset

visible@Fenêtre_avertissement vaut "oui"
visible@Fenêtre_découpage_tileset vaut "oui"
visible@Fenêtre_avertissement vaut "non"
visible@Fenêtre_découpage_tileset vaut "non"

("Début du programme")

Tu ajoutes xtoile dans Fenêtre_principale
visible de Fenêtre_principale vaut "oui"
Tu ajoutes menu1 dans Fenêtre_principale
Tu ajoutes menu1s2 dans menu1
Tu fais réagir Fenêtre_principale à "clic souris" pour Fermer_fenêtre_principale
Tu fais réagir menu1s2 à "clic souris" pour Test_tileset

tant que 1 est différent de 2, lis
temporise
ferme

Test_tileset :
Rôles :
Actions :
Si image de tileset est vide alors lis
numéro_avertissement = 1
Va vers Fenêtre_avertissement
ferme
Sinon va vers Fenêtre_découpage_tileset

Fenêtre_avertissement :
Rôles :
Actions :
visible de Fenêtre_avertissement vaut "oui"
visible de bouton_enregistrer_Fa vaut "non"
visible de bouton_annuler_Fa vaut "non"

Si numéro_avertissement == 1 alors lis
texte de txt_Fa1 vaut "Attention" ;
x de txt_Fa1 vaut 170 ;
y de txt_Fa1 vaut 10
texte de txt_Fa2 vaut "Vous devez avoir chargé un tileset avant de pouvoir le découper" ;
x de txt_Fa2 vaut 50 ;
y de txt_Fa2 vaut 30
texte de txt_Fa3 vaut ""
ferme
Si numéro_avertissement == 2 alors lis
texte de txt_Fa1 vaut "Attention" ;
x de txt_Fa1 vaut 170 ;
y de txt_Fa1 vaut 10
texte de txt_Fa2 vaut "Vous devez avoir créer une grille pour pouvoir découper votre tileset" ;
x de txt_Fa2 vaut 40 ;
y de txt_Fa2 vaut 30
texte de txt_Fa3 vaut ""
ferme

Si numéro_avertissement != 5 alors numéro_avertissement = 0

Essai :
Rôles :
Actions :
"Essai" !

Fenêtre_découpage_tileset :
Rôles :
§ i est un nombre
Actions :
visible de Fenêtre_découpage_tileset vaut "oui"

Pour i de 5 à 100, lis
Tu ajoutes i +"|" dans valeurs@choix_largeur_case
Tu ajoutes i +"|" dans valeurs@choix_hauteur_case
Tu fermes
Pour i de 1 à 100, lis
Tu ajoutes i +"|" dans valeurs@choix_nombre_cases_largeur
Tu ajoutes i +"|" dans valeurs@choix_nombre_cases_hauteur
Tu fermes

Fermer_fenêtre_principale :
Rôles :
*f :: formulaire
Actions :
Efface la toile
Tu termines

Fermer_fenêtre_avertissement :
Rôles :
Actions :
visible de Fenêtre_avertissement vaut "non"
Tu reviens

Fermer_fenêtre_découpage_tileset :
Rôles :
Actions :
visible de Fenêtre_découpage_tileset vaut "non"
Tu reviens
[/php]

Dans ce code, si tu actives Fenêtre_avertissement, la fonction suivante (ici la fonction Essai) va s'activer toute seule.
C'est dû à ceci :

[php]
Si numéro_avertissement != 5 alors numéro_avertissement = 0
[/php]

Si je fais comme ceci :
[php]

Si numéro_avertissement != 5 alors lis
numéro_avertissement = 0
ferme
[/php]

Plus de problème.
Ce n'est donc pas "Sinon" qui fait défaut mais on doit utiliser le verbe "lire" à chaque condition.
Il me semblait qu'on pouvait écrire une condition en une seule ligne.
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Bogue "Sinon"

le Mon 14 May - 9:27
Merci pour ce retour... je vais analyser ça !

gros bogue découvert !!!
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Bogue "Sinon"

le Mon 14 May - 12:00
Pourtant en effectuant ce petit test, ça fonctionne :

[php]
Bogue Wam Sinon :
Grands rôles :
quadrillage_off :: drapeau <
- faux
tout_quadriller_on :: drapeau <
- vrai

Principal :
Actions :
parcours Ne_pas_quadriller
parcours Ne_pas_quadriller
quadrillage_off !
tout_quadriller_on !

Ne_pas_quadriller :
Actions :
Si quadrillage_off == faux alors lis
Si tout_quadriller_on == vrai alors tout_quadriller_on = faux
quadrillage_off = vrai
ferme
Sinon, quadrillage_off = faux
Reviens
[/php]
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Bogue "Sinon"

le Mon 14 May - 18:46
Je crois que je sais pourquoi.
Dans ton exemple, le bogue ne se reproduit pas à cause du "Reviens".
Il faut que la condition soit la dernière ligne du paragraphe pour qu'elle active le paragraphe suivant.
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Bogue "Sinon"

le Tue 15 May - 13:19
J'ai un peu du mal à reproduire le problème dans un exemple court alors que j'arrive à le reproduire avec ton exemple.

Dans tous les cas, un paragraphe doit terminer par soit :
- le verbe terminer
- le verbe Aller
- le verbe Revenir
- ou le verbe Retourner

Je te conseille fortement de ne plus utiliser le verbe Aller.
Contenu sponsorisé

Re: Bogue "Sinon"

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