Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Mystère: la commande "caption" ne marche plus?! | |
| | Auteur | Message |
---|
lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Mystère: la commande "caption" ne marche plus?! Lun 23 Jan 2012 - 14:48 | |
| Coucou chers panoramiciens, J'ai programmé un jeu, mais la commande "caption" ne marche pas... Le but du jeu, c'est d'allumer toutes les lumières, c-a-d convertir tous les cases noirs en cases blancs. Après, je vais encore rajouter d'autres "niveaux" de jeu. (Les explications pour le joueur viennent encore, je suis encore dans le dévelopement du jeu .) Le nombre de fois qu'on clicque sur une lumière est registré et devrait être affiché dans le titre du fênetre, mais ça ne marche pas. J'au essayé avec "Caption 0, ..." et puis après avec un "alpha" parce qu'avec "Caption 0, ...." ça ne marchait pas, mais même ça ne marche pas et je ne vois pas la cause. Merci d'avance pour votre conseil! Lode - Code:
-
label switch, unu, du, tri, kvar, kvin, ses, sep, ok, nau, dek label dunu, ddu, dtri, dkvar, dkvin, dses, dsep, dok, dnau, ddek label ddunu, dddu, ddtri, ddkvar, ddkvin caption 0,"Lights" color 0,100,150,100 width 0,500 height 0,400 dim x,y,z, klr(25), a(5), mov for x = 1 to 5 for y = 1 to 5 z= (x-1)*5+y picture z top z, y*50 left z, x*50 width z,40 height z,40 if mod(z,2)=0 color z,255, 255,255 klr(z)=1 else color z,0,0,0 klr(z)=0 end_if next y next x on_click 1,unu on_click 2,du on_click 3,tri on_click 4,kvar on_click 5,kvin on_click 6,ses on_click 7,sep on_click 8,ok on_click 9,nau on_click 10,dek on_click 11,dunu on_click 12,ddu on_click 13,dtri on_click 14,dkvar on_click 15,dkvin on_click 16,dses on_click 17,dsep on_click 18,dok on_click 19,dnau on_click 20,ddek on_click 21,ddunu on_click 22,dddu on_click 23,ddtri on_click 24,ddkvar on_click 25,ddkvin alpha 26 end
switch: for x=1 to z if klr(a(x))=0 color a(x),255, 255,255 klr(a(x))=1 else color a(x),0,0,0 klr(a(x))=0 end_if next x return
unu: a(1)=1 a(2)=2 a(3)=6 z=3 gosub switch return
du: a(1)=2 a(2)=1 a(3)=7 a(4)=3 z=4 gosub switch return
tri: a(1)=3 a(2)=2 a(3)=4 a(4)=8 z=4 gosub switch return
kvar: a(1)=4 a(2)=3 a(3)=5 a(4)=9 z=4 gosub switch return
kvin: a(1)=5 a(2)=4 a(3)=10 z=3 gosub switch return
ses: a(1)=6 a(2)=1 a(3)=11 a(4)=7 z=4 gosub switch return
sep: a(1)=7 a(2)=6 a(3)=8 a(4)=2 a(5)=12 z=5 gosub switch return
ok: a(1)=8 a(2)=7 a(3)=9 a(4)=13 a(5)=3 z=5 gosub switch return
nau: a(1)=9 a(2)=8 a(3)=10 a(4)=14 a(5)=4 z=5 gosub switch return
dek: a(1)=10 a(2)=9 a(3)=5 a(4)=15 z=4 gosub switch return
dunu: a(1)=11 a(2)=12 a(3)=16 a(4)=6 z=4 gosub switch return
ddu: a(1)=12 a(2)=11 a(3)=13 a(4)=17 a(5)=7 z=5 gosub switch return
dtri: a(1)=13 a(2)=12 a(3)=14 a(4)=18 a(5)=8 z=5 gosub switch return
dkvar: a(1)=14 a(2)=13 a(3)=15 a(4)=19 a(5)=9 z=5 gosub switch return
dkvin: a(1)=15 a(2)=14 a(3)=10 a(4)=20 z=4 gosub switch return
dses: a(1)=16 a(2)=17 a(3)=11 a(4)=21 z=4 gosub switch return
dsep: a(1)=17 a(2)=16 a(3)=18 a(4)=22 a(5)=12 z=5 gosub switch return
dok: a(1)=18 a(2)=17 a(3)=19 a(4)=23 a(5)=13 z=5 gosub switch return
dnau: a(1)=19 a(2)=18 a(3)=20 a(4)=24 a(5)=14 z=5 gosub switch return
ddek: a(1)=20 a(2)=19 a(3)=25 a(4)=15 z=4 gosub switch return
ddunu: a(1)=21 a(2)=16 a(3)=22 z=3 gosub switch return
dddu: a(1)=22 a(2)=21 a(3)=23 a(4)=17 z=4 gosub switch return
ddtri: a(1)=23 a(2)=22 a(3)=24 a(4)=18 z=4 gosub switch return
ddkvar: a(1)=24 a(2)=23 a(3)=25 a(4)=19 z=4 gosub switch return
ddkvin: a(1)=25 a(2)=24 a(3)=20 z=3 gosub switch return
switch: mov=mov+1 caption 0, "Lights. You used " + str$(mov)+" moves so far." caption 26, mov for x=1 to z if klr(a(x))=0 color a(x),255, 255,255 klr(a(x))=1 else color a(x),0,0,0 klr(a(x))=0 end_if next x gosub cntr return
- Code:
-
[code] | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Lun 23 Jan 2012 - 15:06 | |
| La raison en est que ton programme ne passe JAMAIS dans ta routine SWITCH, contrairement à ce qu'on pourrait penser en lisant ton source. Pourquoi ? Eh bien, tu es tombé dans le piège des noms réservés de Panoramic. Le mot SWITCH doit être réservé par le compilateur, je ne vois pas d'autre explication. La preuve: dans ton source, j'ai remplacé SWITCH par XSWITCH, et ça marche ! Ceci dit, il manquait le sousprogramme CNTR - je l'ai donc rajouté pour pouvoir tester. Voici le code qui marche: - Code:
-
label xswitch, unu, du, tri, kvar, kvin, ses, sep, ok, nau, dek label dunu, ddu, dtri, dkvar, dkvin, dses, dsep, dok, dnau, ddek label ddunu, dddu, ddtri, ddkvar, ddkvin label cntr caption 0,"Lights" color 0,100,150,100 width 0,500 height 0,400 dim x,y,z, klr(25), a(5), mov for x = 1 to 5 for y = 1 to 5 z= (x-1)*5+y picture z top z, y*50 left z, x*50 width z,40 height z,40 if mod(z,2)=0 color z,255, 255,255 klr(z)=1 else color z,0,0,0 klr(z)=0 end_if next y next x on_click 1,unu on_click 2,du on_click 3,tri on_click 4,kvar on_click 5,kvin on_click 6,ses on_click 7,sep on_click 8,ok on_click 9,nau on_click 10,dek on_click 11,dunu on_click 12,ddu on_click 13,dtri on_click 14,dkvar on_click 15,dkvin on_click 16,dses on_click 17,dsep on_click 18,dok on_click 19,dnau on_click 20,ddek on_click 21,ddunu on_click 22,dddu on_click 23,ddtri on_click 24,ddkvar on_click 25,ddkvin alpha 26 end
cntr: ' ????????? return
switch: for x=1 to z if klr(a(x))=0 color a(x),255, 255,255 klr(a(x))=1 else color a(x),0,0,0 klr(a(x))=0 end_if next x return
unu: a(1)=1 a(2)=2 a(3)=6 z=3 gosub xswitch return
du: a(1)=2 a(2)=1 a(3)=7 a(4)=3 z=4 gosub xswitch return
tri: a(1)=3 a(2)=2 a(3)=4 a(4)=8 z=4 gosub xswitch return
kvar: a(1)=4 a(2)=3 a(3)=5 a(4)=9 z=4 gosub xswitch return
kvin: a(1)=5 a(2)=4 a(3)=10 z=3 gosub xswitch return
ses: a(1)=6 a(2)=1 a(3)=11 a(4)=7 z=4 gosub xswitch return
sep: a(1)=7 a(2)=6 a(3)=8 a(4)=2 a(5)=12 z=5 gosub xswitch return
ok: a(1)=8 a(2)=7 a(3)=9 a(4)=13 a(5)=3 z=5 gosub xswitch return
nau: a(1)=9 a(2)=8 a(3)=10 a(4)=14 a(5)=4 z=5 gosub xswitch return
dek: a(1)=10 a(2)=9 a(3)=5 a(4)=15 z=4 gosub xswitch return
dunu: a(1)=11 a(2)=12 a(3)=16 a(4)=6 z=4 gosub xswitch return
ddu: a(1)=12 a(2)=11 a(3)=13 a(4)=17 a(5)=7 z=5 gosub xswitch return
dtri: a(1)=13 a(2)=12 a(3)=14 a(4)=18 a(5)=8 z=5 gosub xswitch return
dkvar: a(1)=14 a(2)=13 a(3)=15 a(4)=19 a(5)=9 z=5 gosub xswitch return
dkvin: a(1)=15 a(2)=14 a(3)=10 a(4)=20 z=4 gosub xswitch return
dses: a(1)=16 a(2)=17 a(3)=11 a(4)=21 z=4 gosub xswitch return
dsep: a(1)=17 a(2)=16 a(3)=18 a(4)=22 a(5)=12 z=5 gosub xswitch return
dok: a(1)=18 a(2)=17 a(3)=19 a(4)=23 a(5)=13 z=5 gosub xswitch return
dnau: a(1)=19 a(2)=18 a(3)=20 a(4)=24 a(5)=14 z=5 gosub xswitch return
ddek: a(1)=20 a(2)=19 a(3)=25 a(4)=15 z=4 gosub xswitch return
ddunu: a(1)=21 a(2)=16 a(3)=22 z=3 gosub xswitch return
dddu: a(1)=22 a(2)=21 a(3)=23 a(4)=17 z=4 gosub xswitch return
ddtri: a(1)=23 a(2)=22 a(3)=24 a(4)=18 z=4 gosub xswitch return
ddkvar: a(1)=24 a(2)=23 a(3)=25 a(4)=19 z=4 gosub xswitch return
ddkvin: a(1)=25 a(2)=24 a(3)=20 z=3 gosub xswitch return
xswitch: mov=mov+1 caption 0, "Lights. You used " + str$(mov)+" moves so far." caption 26, str$(mov) for x=1 to z if klr(a(x))=0 color a(x),255, 255,255 klr(a(x))=1 else color a(x),0,0,0 klr(a(x))=0 end_if next x gosub cntr return
Très joli jeu, continue comma ça ! Une astuce (facile) pour savoir si tu passes à tel ou tel endroit du programme (c'est ce que j'ai fait pour tracer ton programme): place des commandes MESSAGE "xxx" à différents endroits du code. Cela ne perturbe rien, et en fonction des messages qui s'affichent, tu voies la progression, et éventuellement des variables dont tu peux afficher le contenu dans le texte des différents messages. | |
| | | exdragon
Nombre de messages : 601 Date d'inscription : 05/01/2012
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Lun 23 Jan 2012 - 15:32 | |
| Klaus tu devrais être détective toi, même à moi tu résous un problème en ajoutant ce qui manque^^ Pas mal comme style de jeu, faudra que je teste, j’attends la fin Au fait, c'est vrai l'utilisation de "message" c'est super utile, je m'en sers pour afficher à certains endroits la valeur d'une variable, et j'ai d'ailleurs été étonné que "message" fonctionne avec des variables qui ne sont pas des strings | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Lun 23 Jan 2012 - 15:35 | |
| Merci beaucoup, Klaus! AU faite, ce qui est étrange, c'est qu'il passe par la routine "switch" quand-même, parce que les couleurs changent bien, j'avais verifié. C'est juste "caption" qu'il ne faisait pas. Et oui, le truc CNTR, t'as raison, ça faisait parti de mes efforts désepérés de trouver une solution ;-) Merci beaucoup!! Lode
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Lun 23 Jan 2012 - 15:59 | |
| Content d'avoir pu t'aider. Ceci dit, le passage dans la routine SWITCH ne se faisait pas. La preuve, ton programme d'origine avec un seul MESSAGE dans SWITCH: - Code:
-
label switch, unu, du, tri, kvar, kvin, ses, sep, ok, nau, dek label dunu, ddu, dtri, dkvar, dkvin, dses, dsep, dok, dnau, ddek label ddunu, dddu, ddtri, ddkvar, ddkvin caption 0,"Lights" color 0,100,150,100 width 0,500 height 0,400 dim x,y,z, klr(25), a(5), mov for x = 1 to 5 for y = 1 to 5 z= (x-1)*5+y picture z top z, y*50 left z, x*50 width z,40 height z,40 if mod(z,2)=0 color z,255, 255,255 klr(z)=1 else color z,0,0,0 klr(z)=0 end_if next y next x on_click 1,unu on_click 2,du on_click 3,tri on_click 4,kvar on_click 5,kvin on_click 6,ses on_click 7,sep on_click 8,ok on_click 9,nau on_click 10,dek on_click 11,dunu on_click 12,ddu on_click 13,dtri on_click 14,dkvar on_click 15,dkvin on_click 16,dses on_click 17,dsep on_click 18,dok on_click 19,dnau on_click 20,ddek on_click 21,ddunu on_click 22,dddu on_click 23,ddtri on_click 24,ddkvar on_click 25,ddkvin alpha 26 end
switch: for x=1 to z if klr(a(x))=0 color a(x),255, 255,255 klr(a(x))=1 else color a(x),0,0,0 klr(a(x))=0 end_if next x return
unu: a(1)=1 a(2)=2 a(3)=6 z=3 gosub switch return
du: a(1)=2 a(2)=1 a(3)=7 a(4)=3 z=4 gosub switch return
tri: a(1)=3 a(2)=2 a(3)=4 a(4)=8 z=4 gosub switch return
kvar: a(1)=4 a(2)=3 a(3)=5 a(4)=9 z=4 gosub switch return
kvin: a(1)=5 a(2)=4 a(3)=10 z=3 gosub switch return
ses: a(1)=6 a(2)=1 a(3)=11 a(4)=7 z=4 gosub switch return
sep: a(1)=7 a(2)=6 a(3)=8 a(4)=2 a(5)=12 z=5 gosub switch return
ok: a(1)=8 a(2)=7 a(3)=9 a(4)=13 a(5)=3 z=5 gosub switch return
nau: a(1)=9 a(2)=8 a(3)=10 a(4)=14 a(5)=4 z=5 gosub switch return
dek: a(1)=10 a(2)=9 a(3)=5 a(4)=15 z=4 gosub switch return
dunu: a(1)=11 a(2)=12 a(3)=16 a(4)=6 z=4 gosub switch return
ddu: a(1)=12 a(2)=11 a(3)=13 a(4)=17 a(5)=7 z=5 gosub switch return
dtri: a(1)=13 a(2)=12 a(3)=14 a(4)=18 a(5)=8 z=5 gosub switch return
dkvar: a(1)=14 a(2)=13 a(3)=15 a(4)=19 a(5)=9 z=5 gosub switch return
dkvin: a(1)=15 a(2)=14 a(3)=10 a(4)=20 z=4 gosub switch return
dses: a(1)=16 a(2)=17 a(3)=11 a(4)=21 z=4 gosub switch return
dsep: a(1)=17 a(2)=16 a(3)=18 a(4)=22 a(5)=12 z=5 gosub switch return
dok: a(1)=18 a(2)=17 a(3)=19 a(4)=23 a(5)=13 z=5 gosub switch return
dnau: a(1)=19 a(2)=18 a(3)=20 a(4)=24 a(5)=14 z=5 gosub switch return
ddek: a(1)=20 a(2)=19 a(3)=25 a(4)=15 z=4 gosub switch return
ddunu: a(1)=21 a(2)=16 a(3)=22 z=3 gosub switch return
dddu: a(1)=22 a(2)=21 a(3)=23 a(4)=17 z=4 gosub switch return
ddtri: a(1)=23 a(2)=22 a(3)=24 a(4)=18 z=4 gosub switch return
ddkvar: a(1)=24 a(2)=23 a(3)=25 a(4)=19 z=4 gosub switch return
ddkvin: a(1)=25 a(2)=24 a(3)=20 z=3 gosub switch return
switch: message "On est dans SWITCH" mov=mov+1 caption 0, "Lights. You used " + str$(mov)+" moves so far." caption 26, mov for x=1 to z if klr(a(x))=0 color a(x),255, 255,255 klr(a(x))=1 else color a(x),0,0,0 klr(a(x))=0 end_if next x gosub cntr return
C'est bien le GOSUB SWITCH qui n'est pas exécuté. D'ailleurs, s'il était vraiment passé dans SWITCH, il aurait immédiatement buté sur le GOSUB CNTR dont le label manquait. La commande CAPTION n'est pas en cause. Tu vois l'intérêt des MESSAGE placés à des endroits stratégiques ? | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Lun 23 Jan 2012 - 16:13 | |
| Merci beaucoup, Klaus! Tu as raison. Pourtant, les couleurs changaient quand-même dans ma version, donc c'était a moitié executé... mystère. Enfin, ce qui serait pas un luxe, c'est une liste de tous les mots-pièges... j'avais le même problème avec "swtch" et "swt" je crois... Bonne journée! Lode | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Lun 23 Jan 2012 - 20:15 | |
| Sympa le jeu ... un vrai casse-tête mais sympa | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Mar 24 Jan 2012 - 7:13 | |
| Il n'y a aucune restriction à la déclaration des LABELs et la déclaration LABEL SWITCH est autorisée. Dès que j'ai un peu de temps, je regarde le source de lodchjo. Voici les règles: - tout nom valide peut être déclaré comme LABEL (des lettres, des chiffres, le caractère souligné _ , pas d'espace, pas de chiffre en premier caractère) - tout nom valide peut être déclaré comme variable avec DIM (des lettres, des chiffres, le caractère souligné _ , pas d'espace, pas de chiffre en premier caractère) - la seule restriction dans les noms de variable est qu'il existe 28 noms réservés: - Code:
-
DATE$ DIR_CURRENT$ FILE_FIND_FIRST$ FILE_FIND_NEXT$ INKEY$ KEY_DOWN_CODE KEY_DOWN_SPECIAL KEY_UP_CODE KEY_UP_SPECIAL MESSAGE_TEXT$ NUMBER_3D_OBJECTS NUMBER_CHANGE NUMBER_CLICK NUMBER_CURRENT_LINE NUMBER_EVENTS NUMBER_KEY_DOWN NUMBER_KEY_UP NUMBER_OBJECTS NUMBER_SPRITES NUMBER_VARIABLES PARAM_NUMBER SCANCODE SCREEN_X SCREEN_Y TIME$ ERROR_LINE ERROR_TYPE$ ERROR_NUMBER - il n'est pas possible de déclarer une variable réservée, DIM produisant une erreur: - Code:
-
dim scancode provoque l'erreur 35 (Name already defined, nom déjà défini) - les variables réservées ne sont utilisables qu'en lecture - il n'y a pas d'erreur signalée lors de l'utilisation d'une variable réservée en écriture, mais l'écriture est inactive: - Code:
-
screen_x=500 cette ligne est ignorée: elle ne provoque pas d'erreur, mais ne fait rien. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Mar 24 Jan 2012 - 8:49 | |
| Oui ! Tu as raison, bien sur ! Le problème vient du fait que le label SWITCH: existe DEUX fois dans le programme ! En Panoramic prend la première occurrence comme c'est normal. Or, Lodchjo s'attend à utiliser la seconde ! C'est pourquoi, en changeant le nom du label, cela a marché. Tout s'éclaire. | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Mar 24 Jan 2012 - 8:58 | |
| - Klaus a écrit:
- Oui ! Tu as raison, bien sur ! Le problème vient du fait que le label SWITCH: existe DEUX fois dans le programme ! En Panoramic prend la première occurrence comme c'est normal. Or, Lodchjo s'attend à utiliser la seconde ! C'est pourquoi, en changeant le nom du label, cela a marché. Tout s'éclaire.
M....RDE que je suis c... bête... t'as raison!! J'avais voulu déplacer cette routine pour l'avoir sous les mains (tout au bout) et j'ai laissé la routine d'origine. Merci beaucoup, tu es super, maintenant c'est tout clair!! Bonne journée! Lode | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! Mar 24 Jan 2012 - 13:34 | |
| Je vais corriger PANORAMIC pour qu'il déclenche une erreur quand le même LABEL est utilisé plusieurs fois. | |
| | | Contenu sponsorisé
| Sujet: Re: Mystère: la commande "caption" ne marche plus?! | |
| |
| | | | Mystère: la commande "caption" ne marche plus?! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |