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 |
|
|
| Choix de Police dans Choix et messages d'erreur parlants | |
| | Auteur | Message |
---|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 18:52 | |
| Le changement de police par moment c'est inutile dans la barre de menu (on ne la change pas toutes les 5mn, ce serait moins pénible dans le menu choix) Quand on prend des codes et que l'on les fusionne, on peut faire des erreurs (si, si , on peut le faire) Par contre, pour trouver, avec les messages du style: Access violation at address 005022DA in module 'PANORAMIC.exe'. Read of address FFFFFFFF. On n'est pas trop aidé pour savoir d'où ça vient. Je sais que cela a déjà été dit, mais si Jack voyait un moyen de mettre la ligne qui provoque l'erreur ou n'importe quoi qui soit plus parlant, ça serait vraiment bien. Si vous voulez faire une test, (où si vous voyez l'erreur d'ailleurs), voici le code en cours d'élaboration - Code:
-
REM ************************************************************ REM * * REM * Panoram Invaders Version: 4.0 - 18/08/2012 * REM * * REM ************************************************************ REM * Touches: * REM * - "Les fléches" gauche ou droite: déplacement * REM * - "Esc" pour quitter * REM * - "CTRL" ou clic gauche pour tirer * REM * * REM ************************************************************
label labels : gosub labels
gosub constantes gosub variables gosub donnees gosub initialisations gosub form0 gosub menu gosub GUI end
labels: label constantes, variables, donnees label form0, menu, GUI, initialisations label sortir,start, tick, restart label config, close_config, defaut, aide, close_aide label apropos, close_apropos, change_config, stopit label soucoupe,crash, score, inv return
constantes: dim version$ : version$ = "V04.00" dim date_cre$ : date_cre$ = "18 Août 2012" dim speed% : speed% = 2 : ' milli-secondes entre chaque mouvement dim Nb_b_ligne : Nb_b_ligne = 7 : ' Nombre de lignes de briques dim hauteur_b, largeur_b : largeur_b=1.55 : hauteur_b=0.75 dim Nb_couleur%: Nb_couleur% = 18 : ' Nombre de couleurs définies dim M1% : M1% = 0 - 1 return
variables: dim no%, no1%, no2% : ' Numméro d'objets temporaires dim w%, h%, px%, py%: ' Largeur, Hauteur, Position en x et en y de la fenêtre 0 dim no_timer%, no_apropos%, no_aide%, no_config% : ' Numéro des objets importants utilisés dim no_config_v%, no_config_speed% : ' Timer, numéro des fenêtres, ... dim no_stop%, no_play%, no_start% dim xpad : ' Position de la souris dim point%, live% : ' Score et nombre de vaisseaux restants dim afs$, aflive% : ' Affichage du score et des vies dim Pause% : ' Bascule pour mettre le jeu en pause ou reprendre dim Niveau% : ' Niveau en cours dim Attente% : ' Pour lisser le mouvement attendre si on ne joue pas de son dim a%,touche%,vsou%,hsou%,soudec%,, boucle%, boucle2%, boucle3%, boucle4%, dir%, pas% dim tirh%,bb%,aleat%,i%,,afscore%,invader% ,temp%, temp2% dim point$(10),tirdec%(5),tirv%(5),postir%(5), env%(40), vinv%(40),hinv%(40), nl% return
donnees: Data "ga","me","ov", "er", 150,"mi2", 151, "mi1", 152,"mi1", 153, "mi2", 200, "exp" Data 300, "sou", 301, "exps" return
form0: ' Paramètrage de la fenêtre principale du jeu left 0,px% : top 0,py% : ' Position initale de la fenêtre 0 width 0, w% : height 0,450 caption 0,"Panoram Invaders" SCENE2D 1 : ' Initialise la scene 2D top 1,0: left 1,0: width 1,600: height 1,600 :file_load 1,"nuit.bmp":full_space 1 ' on_key_down 0,key ' on_close 0,fin return
menu: return
GUI:
sound 500:file_load 500,"shot.wav": sound 501:file_load 501,"02.wav":sound 502:file_load 502,"walk3.wav": sound 503:file_load 503,"walk4.wav":sound 504:file_load 504,"explode.wav" sound 700:file_load 700,"ufohit.wav": sound 702:file_load 702,"ufo.wav" a%=0 for boucle%=0 to 3 read afs$ if boucle%=2 then a%=20 sprite 900+boucle%: SPRITE_hide 900+boucle%:SPRITE_FILE_LOAD 900+boucle%,afs$+".bmp": SPRITE_POSITION 900+boucle%, 200+boucle%*37+a%,250 next boucle% for boucle%=0 to 6 read a%:read afs$ sprite a%: SPRITE_hide a%:SPRITE_FILE_LOAD a%,afs$+".bmp" next boucle% sprite 302: sprite_hide 302:SPRITE_FILE_LOAD 302,"titre1.bmp": SPRITE_POSITION 302, 50 , 20: sprite_show 302 sprite 303: sprite_hide 303:SPRITE_FILE_LOAD 303,"titre2.bmp": SPRITE_POSITION 303, 225, 20: sprite_show 303 for boucle2%=0 to 3: temp%=11*boucle2%: for boucle%=(1+temp%) to (7+temp%): sprite boucle%+4 : sprite_hide boucle%+4 : SPRITE_FILE_LOAD boucle%+4,str$(boucle2%+1)+"1.bmp" : next boucle%: next boucle2% for boucle2%=0 to 3: temp%=11*boucle2%:for boucle%=105+temp% to 111+temp%: sprite boucle% : sprite_hide boucle% : SPRITE_FILE_LOAD boucle%,str$(boucle2%+1)+"2.bmp" : next boucle%: next boucle2% for boucle%=0 to 4: sprite 500+boucle% : SPRITE_FILE_LOAD 500+boucle%,"0.bmp": SPRITE_POSITION 500+boucle%, 250-13*boucle%,100: NEXT boucle% sprite 505: SPRITE_FILE_LOAD 505,"score.bmp":SPRITE_POSITION 505, 237-120,95 : sprite 506: SPRITE_FILE_LOAD 506,"live.bmp" :SPRITE_POSITION 506, 300,95 :sprite 507: SPRITE_FILE_LOAD 507,"0.bmp" : SPRITE_POSITION 507, 350,100 for boucle%=0 to 9: point$(boucle%)=str$(boucle%)+".bmp":next boucle% sprite 3: SPRITE_hide 3: SPRITE_FILE_LOAD 3,"mis.bmp" : sprite 4: SPRITE_FILE_LOAD 4,"vai.bmp" TIMER 61: TIMER_OFF 61 : TIMER_INTERVAL 61,30000: ON_TIMER 61,soucoupe aflive%=10+live% : afs$=str$(aflive%) : SPRITE_FILE_LOAD 507,point$(val(mid$(afs$,2,1))):SPRITE_POSITION 507, 350,100 no% = 62 : timer no% : no_timer% = no% : ' Definit le timer principal du jeu timer_interval no_timer%,speed% : on_timer no%,tick : timer_off no% return
initialisations: w%= 600 : h% = 600 : ' Largeur et Hauteur de la fenêtre 0 px% = 0 : py% = 0 : ' Position en x et en y de la fenêtre 0 speed% = 100
return
sortir: timer_off no_timer% terminate
defaut: gosub change_config return
stopit: timer_off no_timer% inactive no_stop% active no_start% return
start: active no_stop% inactive no_start% bb%=0: live%=5:hsou%=700 :vsou%=170: a%=280: invader%=28 : point%=0 : pas% = 1 for boucle4%=1 to 5:tirdec%(boucle4%)=0: next boucle4% sprite_hide 150: sprite_hide 151: sprite_hide 3 : sprite_hide 152 : sprite_hide 153: sprite_hide 900: sprite_hide 901: sprite_hide 902: sprite_hide 903 Pause% = 0 niveau%= 0
restart: timer_off no_timer% niveau% = niveau% + 1 caption 0,"Panoram Invaders - Niveau actuel :" + str$(Niveau%) SPRITE_POSITION 4,a%,500 : dir%=1 for boucle2%=0 to 3:temp%=11*boucle2%: for boucle%=1 to 7 : env%(boucle%+temp%)=1:hinv%(boucle%+temp%)=170+30*(boucle%) :vinv%(boucle%+temp%)=200+25*boucle2%:sprite_show boucle%+temp%+4: next boucle%: next boucle2% timer_on no_timer% return
inv: temp%=dir%*pas%: temp2%=(boucle%-1)*11 hinv%(1+temp2%)=hinv%(1+temp2%)+temp%:hinv%(2+temp2%)=hinv%(2+temp2%)+temp%:hinv%(3+temp2%)=hinv%(3+temp2%)+temp%:hinv%(4+temp2%)=hinv%(4+temp2%)+temp% hinv%(5+temp2%)=hinv%(5+temp2%)+temp%:hinv%(6+temp2%)=hinv%(6+temp2%)+temp%:hinv%(7+temp2%)=hinv%(7+temp2%)+temp% for boucle2%= (1+temp2%) to (7+temp2%) if env%(boucle2%)<>0 if nl%=0 and hinv%(boucle2%)=550 then dir%=-1 : nl%=1 if nl%=0 and hinv%(boucle2%)=0 then dir%=1: nl%=1 if bb%=0 then SPRITE_POSITION boucle2%+4, hinv%(boucle2%),vinv%(boucle2%):sprite_hide boucle2%+104:SPRITE_SHOW boucle2%+4 if bb%=1 then SPRITE_POSITION boucle2%+104, hinv%(boucle2%),vinv%(boucle2%): sprite_hide boucle2%+4:SPRITE_SHOW boucle2%+104 if postir%(5) > (hinv%(boucle2%)-12) then if postir%(5) < (hinv%(boucle2%)+3) then if tirv%(5)>vinv%(boucle2%) then if tirv%(5)<(vinv%(boucle2%)+16) then point%=point%+50-10*boucle%: SPRITE_hide boucle2%+4+100*bb%: :play 501 :SPRITE_POSITION 200, hinv%(boucle2%),vinv%(boucle2%) : SPRITE_SHOW 200: wait 25: env%(boucle2%)=0 : SPRITE_HIDE 200 : tirdec%(5)=0 : SPRITE_HIDE 3:tirv%(5)=0: point%=point%+30 :invader%=invader%-1 :gosub score if aleat%=boucle2% and tirdec%(boucle%)=0 then tirv%(boucle%)=vinv%(boucle2%) : postir%(boucle%)=hinv%(boucle2%) : tirdec%(boucle%)=1:SPRITE_POSITION 149+boucle%,postir%(boucle%),tirv%(boucle%):Sprite_Show 149+boucle% end_if next boucle2% return
soucoupe: if soudec%<>1 then soudec%=1 hsou%=hsou%-2 if hsou%=550 or hsou%=250 then play 700 if soudec%=1 then SPRITE_POSITION 300,hsou%,vsou%: sprite_show 300 :if hsou%=-100 then SPRITE_hide 300 : soudec%=0 :hsou%=700 return
score: afscore%=1000000+point% afs$=str$(afscore%) for boucle4% = 0 to 4: SPRITE_FILE_LOAD 500+boucle4%,point$(val(mid$(afs$,7-boucle4%,1))): SPRITE_POSITION 500+boucle4%, 250-13*boucle4%,100:next boucle4% return
crash: play 504: live%=live%-1: timer_off_all for boucle4%=1 to 3: SPRITE_HIDE 4: wait 100: SPRITE_SHOW 4: wait 100: next boucle4% aflive%=10+live% : afs$=str$(aflive%) : SPRITE_FILE_LOAD 507,point$(val(mid$(afs$,2,1))):SPRITE_POSITION 507, 350,100 for boucle4%=1 to 4: if tirdec%(boucle4%)=1 then SPRITE_Hide 150+boucle4% : tirdec%(boucle4%)=0 : postir%(boucle4%)=0 : tirv%(boucle4%)=0: next boucle4% if live%=0 then goto fin timer_on 61 return
tick: timer_off no_timer% aleat%=int(rnd(40)+1) nl%=0 for boucle%=1 to 4 if tirdec%(boucle%)=1 then tirv%(boucle%)=tirv%(boucle%)+5: SPRITE_POSITION 149+boucle%,postir%(boucle%),tirv%(boucle%): if tirv%(boucle%)=530 then SPRITE_Hide 149+boucle% : tirdec%(boucle%)=0 if postir%(boucle%) >=a%-13 then if postir%(boucle%) <=(a%+16) then if tirv%(boucle%)>=477 then if tirv%(boucle%)< 523 then gosub crash gosub inv next boucle% if nl%=1 for boucle%=0 to 3 temp%=(boucle%)*11: vinv%(1+temp%)=vinv%(1+temp%)+25: vinv%(2+temp%)=vinv%(2+temp%)+25: vinv%(3+temp%)=vinv%(3+temp%)+25 vinv%(4+temp%)=vinv%(4+temp%)+25: vinv%(5+temp%)=vinv%(5+temp%)+25: vinv%(6+temp%)=vinv%(6+temp%)+25: vinv%(7+temp%)=vinv%(7+temp%)+25 next boucle% end_if if soudec%=1 then gosub soucoupe if tirdec%(5)=1 tirv%(5)=tirv%(5)-8 : SPRITE_POSITION 3,postir%(5),tirv%(5) if soudec%=1 then if tirv%(5)>vsou% then if tirv%(5)<vsou%+24 then if (postir%(5) > (hsou%-15) and postir%(5) < (hsou%+16)) then SPRITE_Hide 300:SPRITE_POSITION 301, hsou%,vsou%: sprite_show 301:play 702 : wait 200: soudec%=0 : SPRITE_hide 301: tirdec%(5)=0 : SPRITE_HIDE 3 : tirv%(5)=0 : hsou%=700 : soudec%=0 : point%=point%+300 if tirv%(5) <=172 then SPRITE_HIDE 3 : tirdec%(5)=0 end_if
if bb%=0 then play 503: bb%=1 : else : play 502: bb%=0
touche%=scancode if touche%=37 then i%=-4 if touche%=39 then i%=4 if touche%=27 then goto fin if touche%=163 or touche%=162 or touche%=1 then if tirdec%(5)=0 then tirdec%(5)=1 : tirv%(5)=500 :play 500: SPRITE_SHOW 3:postir%(5)=a% a%=a%+i%:i%=0 : SPRITE_POSITION 4,a%,500 timer_on no_timer% return
config: inactive 0 show no_config% return
close_config: gosub change_config active 0 return
change_config: return
aide: inactive 0 show no_aide% return
close_aide: active 0 return
apropos: inactive 0 show no_apropos% return
close_apropos: active 0 return
fin: gosub stopit for boucle4% = 1 to 4 sprite_show 900: sprite_show 901: sprite_show 902: sprite_show 903: wait 200 if boucle4% < 4 then sprite_hide 900: sprite_hide 901: sprite_hide 902 :sprite_hide 903: wait 200 next boucle4% timer_off_all : off_KEY_DOWN 0 : Off_CLICK 1 : sprite_hide 3: tirdec%(5)=0: sprite_hide 150 :tirdec%(1)=0 sprite_hide 151 :tirdec%(2)=0: sprite_hide 152 :tirdec%(3)=0 :sprite_hide 153 :tirdec%(4)=0 if message_confirmation_yes_no("Voulez-vous rejouer ?")=1 then sprite_hide 900: sprite_hide 901 : sprite_hide 902: sprite_hide 903: goto start :else: terminate end | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:06 | |
| salut Jicehel c'est tes variables ; ligne 57 et 58 il y a 2 fois la virgule dim a%,touche%,vsou%,hsou%,soudec% ,, boucle%, boucle2%, boucle3%, boucle4%, dir%, pas% dim tirh%,bb%,aleat%,i% ,,afscore%,invader% ,temp%, temp2% erreur que je commet assez souvent d'ailleurs !! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:12 | |
| Minibug tu m'as doublé! D'ailleurs, j'avais déjà soulevé ce problème.
Pour trouver l’erreur, j’ai mis des STOP après chaque appel à des sous-programmes, et c’est ainsi qu’on peut localiser l’endroit de l’erreur.
Dernière édition par papydall le Sam 18 Aoû 2012 - 20:35, édité 2 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:15 | |
| Trouvé ! Tu as, à 2 reprises, 2 virgules qui se suivent dans une commande DIM ! J'ai corrigé, tout en laissant les lignes originales en commentaire avec la marque Klaus - tu verras ! Ca, c'est un vrai BUG du compilateur ! - Code:
-
REM ************************************************************ REM * * REM * Panoram Invaders Version: 4.0 - 18/08/2012 * REM * * REM ************************************************************ REM * Touches: * REM * - "Les fléches" gauche ou droite: déplacement * REM * - "Esc" pour quitter * REM * - "CTRL" ou clic gauche pour tirer * REM * * REM ************************************************************
label labels : gosub labels
gosub constantes gosub variables gosub donnees gosub initialisations gosub form0 gosub menu gosub GUI end
labels: label constantes, variables, donnees label form0, menu, GUI, initialisations label sortir,start, tick, restart label config, close_config, defaut, aide, close_aide label apropos, close_apropos, change_config, stopit label soucoupe,crash, score, inv return
constantes: dim version$ : version$ = "V04.00" dim date_cre$ : date_cre$ = "18 Août 2012" dim speed% : speed% = 2 : ' milli-secondes entre chaque mouvement dim Nb_b_ligne : Nb_b_ligne = 7 : ' Nombre de lignes de briques dim hauteur_b, largeur_b : largeur_b=1.55 : hauteur_b=0.75 dim Nb_couleur%: Nb_couleur% = 18 : ' Nombre de couleurs définies dim M1% : M1% = 0 - 1 return
variables: dim no%, no1%, no2% : ' Numméro d'objets temporaires dim w%, h%, px%, py%: ' Largeur, Hauteur, Position en x et en y de la fenêtre 0 dim no_timer%, no_apropos%, no_aide%, no_config% : ' Numéro des objets importants utilisés dim no_config_v%, no_config_speed% : ' Timer, numéro des fenêtres, ... dim no_stop%, no_play%, no_start% dim xpad : ' Position de la souris dim point%, live% : ' Score et nombre de vaisseaux restants dim afs$, aflive% : ' Affichage du score et des vies dim Pause% : ' Bascule pour mettre le jeu en pause ou reprendre dim Niveau% : ' Niveau en cours dim Attente% : ' Pour lisser le mouvement attendre si on ne joue pas de son dim a%,touche%,vsou%,hsou%,soudec%, boucle%, boucle2%, boucle3%, boucle4%, dir%, pas% ' Klaus dim a%,touche%,vsou%,hsou%,soudec%,, boucle%, boucle2%, boucle3%, boucle4%, dir%, pas% dim tirh%,bb%,aleat%,i%,afscore%,invader% ,temp%, temp2% ' Klaus dim tirh%,bb%,aleat%,i%,,afscore%,invader% ,temp%, temp2% dim point$(10),tirdec%(5),tirv%(5),postir%(5), env%(40), vinv%(40),hinv%(40), nl% return
donnees: Data "ga","me","ov", "er", 150,"mi2", 151, "mi1", 152,"mi1", 153, "mi2", 200, "exp" Data 300, "sou", 301, "exps" return
form0: ' Paramètrage de la fenêtre principale du jeu left 0,px% : top 0,py% : ' Position initale de la fenêtre 0 width 0, w% : height 0,450 caption 0,"Panoram Invaders" SCENE2D 1 : ' Initialise la scene 2D top 1,0: left 1,0: width 1,600: height 1,600 :file_load 1,"nuit.bmp":full_space 1 ' on_key_down 0,key ' on_close 0,fin return
menu: return
GUI:
sound 500:file_load 500,"shot.wav": sound 501:file_load 501,"02.wav":sound 502:file_load 502,"walk3.wav": sound 503:file_load 503,"walk4.wav":sound 504:file_load 504,"explode.wav" sound 700:file_load 700,"ufohit.wav": sound 702:file_load 702,"ufo.wav" a%=0 for boucle%=0 to 3 read afs$ if boucle%=2 then a%=20 sprite 900+boucle%: SPRITE_hide 900+boucle%:SPRITE_FILE_LOAD 900+boucle%,afs$+".bmp": SPRITE_POSITION 900+boucle%, 200+boucle%*37+a%,250 next boucle% for boucle%=0 to 6 read a%:read afs$ sprite a%: SPRITE_hide a%:SPRITE_FILE_LOAD a%,afs$+".bmp" next boucle% sprite 302: sprite_hide 302:SPRITE_FILE_LOAD 302,"titre1.bmp": SPRITE_POSITION 302, 50 , 20: sprite_show 302 sprite 303: sprite_hide 303:SPRITE_FILE_LOAD 303,"titre2.bmp": SPRITE_POSITION 303, 225, 20: sprite_show 303 for boucle2%=0 to 3: temp%=11*boucle2%: for boucle%=(1+temp%) to (7+temp%): sprite boucle%+4 : sprite_hide boucle%+4 : SPRITE_FILE_LOAD boucle%+4,str$(boucle2%+1)+"1.bmp" : next boucle%: next boucle2% for boucle2%=0 to 3: temp%=11*boucle2%:for boucle%=105+temp% to 111+temp%: sprite boucle% : sprite_hide boucle% : SPRITE_FILE_LOAD boucle%,str$(boucle2%+1)+"2.bmp" : next boucle%: next boucle2% for boucle%=0 to 4: sprite 500+boucle% : SPRITE_FILE_LOAD 500+boucle%,"0.bmp": SPRITE_POSITION 500+boucle%, 250-13*boucle%,100: NEXT boucle% sprite 505: SPRITE_FILE_LOAD 505,"score.bmp":SPRITE_POSITION 505, 237-120,95 : sprite 506: SPRITE_FILE_LOAD 506,"live.bmp" :SPRITE_POSITION 506, 300,95 :sprite 507: SPRITE_FILE_LOAD 507,"0.bmp" : SPRITE_POSITION 507, 350,100 for boucle%=0 to 9: point$(boucle%)=str$(boucle%)+".bmp":next boucle% sprite 3: SPRITE_hide 3: SPRITE_FILE_LOAD 3,"mis.bmp" : sprite 4: SPRITE_FILE_LOAD 4,"vai.bmp" TIMER 61: TIMER_OFF 61 : TIMER_INTERVAL 61,30000: ON_TIMER 61,soucoupe aflive%=10+live% : afs$=str$(aflive%) : SPRITE_FILE_LOAD 507,point$(val(mid$(afs$,2,1))):SPRITE_POSITION 507, 350,100 no% = 62 : timer no% : no_timer% = no% : ' Definit le timer principal du jeu timer_interval no_timer%,speed% : on_timer no%,tick : timer_off no% return
initialisations: w%= 600 : h% = 600 : ' Largeur et Hauteur de la fenêtre 0 px% = 0 : py% = 0 : ' Position en x et en y de la fenêtre 0 speed% = 100
return
sortir: timer_off no_timer% terminate
defaut: gosub change_config return
stopit: timer_off no_timer% inactive no_stop% active no_start% return
start: active no_stop% inactive no_start% bb%=0: live%=5:hsou%=700 :vsou%=170: a%=280: invader%=28 : point%=0 : pas% = 1 for boucle4%=1 to 5:tirdec%(boucle4%)=0: next boucle4% sprite_hide 150: sprite_hide 151: sprite_hide 3 : sprite_hide 152 : sprite_hide 153: sprite_hide 900: sprite_hide 901: sprite_hide 902: sprite_hide 903 Pause% = 0 niveau%= 0
restart: timer_off no_timer% niveau% = niveau% + 1 caption 0,"Panoram Invaders - Niveau actuel :" + str$(Niveau%) SPRITE_POSITION 4,a%,500 : dir%=1 for boucle2%=0 to 3:temp%=11*boucle2%: for boucle%=1 to 7 : env%(boucle%+temp%)=1:hinv%(boucle%+temp%)=170+30*(boucle%) :vinv%(boucle%+temp%)=200+25*boucle2%:sprite_show boucle%+temp%+4: next boucle%: next boucle2% timer_on no_timer% return
inv: temp%=dir%*pas%: temp2%=(boucle%-1)*11 hinv%(1+temp2%)=hinv%(1+temp2%)+temp%:hinv%(2+temp2%)=hinv%(2+temp2%)+temp%:hinv%(3+temp2%)=hinv%(3+temp2%)+temp%:hinv%(4+temp2%)=hinv%(4+temp2%)+temp% hinv%(5+temp2%)=hinv%(5+temp2%)+temp%:hinv%(6+temp2%)=hinv%(6+temp2%)+temp%:hinv%(7+temp2%)=hinv%(7+temp2%)+temp% for boucle2%= (1+temp2%) to (7+temp2%) if env%(boucle2%)<>0 if nl%=0 and hinv%(boucle2%)=550 then dir%=-1 : nl%=1 if nl%=0 and hinv%(boucle2%)=0 then dir%=1: nl%=1 if bb%=0 then SPRITE_POSITION boucle2%+4, hinv%(boucle2%),vinv%(boucle2%):sprite_hide boucle2%+104:SPRITE_SHOW boucle2%+4 if bb%=1 then SPRITE_POSITION boucle2%+104, hinv%(boucle2%),vinv%(boucle2%): sprite_hide boucle2%+4:SPRITE_SHOW boucle2%+104 if postir%(5) > (hinv%(boucle2%)-12) then if postir%(5) < (hinv%(boucle2%)+3) then if tirv%(5)>vinv%(boucle2%) then if tirv%(5)<(vinv%(boucle2%)+16) then point%=point%+50-10*boucle%: SPRITE_hide boucle2%+4+100*bb%: :play 501 :SPRITE_POSITION 200, hinv%(boucle2%),vinv%(boucle2%) : SPRITE_SHOW 200: wait 25: env%(boucle2%)=0 : SPRITE_HIDE 200 : tirdec%(5)=0 : SPRITE_HIDE 3:tirv%(5)=0: point%=point%+30 :invader%=invader%-1 :gosub score if aleat%=boucle2% and tirdec%(boucle%)=0 then tirv%(boucle%)=vinv%(boucle2%) : postir%(boucle%)=hinv%(boucle2%) : tirdec%(boucle%)=1:SPRITE_POSITION 149+boucle%,postir%(boucle%),tirv%(boucle%):Sprite_Show 149+boucle% end_if next boucle2% return
soucoupe: if soudec%<>1 then soudec%=1 hsou%=hsou%-2 if hsou%=550 or hsou%=250 then play 700 if soudec%=1 then SPRITE_POSITION 300,hsou%,vsou%: sprite_show 300 :if hsou%=-100 then SPRITE_hide 300 : soudec%=0 :hsou%=700 return
score: afscore%=1000000+point% afs$=str$(afscore%) for boucle4% = 0 to 4: SPRITE_FILE_LOAD 500+boucle4%,point$(val(mid$(afs$,7-boucle4%,1))): SPRITE_POSITION 500+boucle4%, 250-13*boucle4%,100:next boucle4% return
crash: play 504: live%=live%-1: timer_off_all for boucle4%=1 to 3: SPRITE_HIDE 4: wait 100: SPRITE_SHOW 4: wait 100: next boucle4% aflive%=10+live% : afs$=str$(aflive%) : SPRITE_FILE_LOAD 507,point$(val(mid$(afs$,2,1))):SPRITE_POSITION 507, 350,100 for boucle4%=1 to 4: if tirdec%(boucle4%)=1 then SPRITE_Hide 150+boucle4% : tirdec%(boucle4%)=0 : postir%(boucle4%)=0 : tirv%(boucle4%)=0: next boucle4% if live%=0 then goto fin timer_on 61 return
tick: timer_off no_timer% aleat%=int(rnd(40)+1) nl%=0 for boucle%=1 to 4 if tirdec%(boucle%)=1 then tirv%(boucle%)=tirv%(boucle%)+5: SPRITE_POSITION 149+boucle%,postir%(boucle%),tirv%(boucle%): if tirv%(boucle%)=530 then SPRITE_Hide 149+boucle% : tirdec%(boucle%)=0 if postir%(boucle%) >=a%-13 then if postir%(boucle%) <=(a%+16) then if tirv%(boucle%)>=477 then if tirv%(boucle%)< 523 then gosub crash gosub inv next boucle% if nl%=1 for boucle%=0 to 3 temp%=(boucle%)*11: vinv%(1+temp%)=vinv%(1+temp%)+25: vinv%(2+temp%)=vinv%(2+temp%)+25: vinv%(3+temp%)=vinv%(3+temp%)+25 vinv%(4+temp%)=vinv%(4+temp%)+25: vinv%(5+temp%)=vinv%(5+temp%)+25: vinv%(6+temp%)=vinv%(6+temp%)+25: vinv%(7+temp%)=vinv%(7+temp%)+25 next boucle% end_if if soudec%=1 then gosub soucoupe if tirdec%(5)=1 tirv%(5)=tirv%(5)-8 : SPRITE_POSITION 3,postir%(5),tirv%(5) if soudec%=1 then if tirv%(5)>vsou% then if tirv%(5)<vsou%+24 then if (postir%(5) > (hsou%-15) and postir%(5) < (hsou%+16)) then SPRITE_Hide 300:SPRITE_POSITION 301, hsou%,vsou%: sprite_show 301:play 702 : wait 200: soudec%=0 : SPRITE_hide 301: tirdec%(5)=0 : SPRITE_HIDE 3 : tirv%(5)=0 : hsou%=700 : soudec%=0 : point%=point%+300 if tirv%(5) <=172 then SPRITE_HIDE 3 : tirdec%(5)=0 end_if
if bb%=0 then play 503: bb%=1 : else : play 502: bb%=0
touche%=scancode if touche%=37 then i%=-4 if touche%=39 then i%=4 if touche%=27 then goto fin if touche%=163 or touche%=162 or touche%=1 then if tirdec%(5)=0 then tirdec%(5)=1 : tirv%(5)=500 :play 500: SPRITE_SHOW 3:postir%(5)=a% a%=a%+i%:i%=0 : SPRITE_POSITION 4,a%,500 timer_on no_timer% return
config: inactive 0 show no_config% return
close_config: gosub change_config active 0 return
change_config: return
aide: inactive 0 show no_aide% return
close_aide: active 0 return
apropos: inactive 0 show no_apropos% return
close_apropos: active 0 return
fin: gosub stopit for boucle4% = 1 to 4 sprite_show 900: sprite_show 901: sprite_show 902: sprite_show 903: wait 200 if boucle4% < 4 then sprite_hide 900: sprite_hide 901: sprite_hide 902 :sprite_hide 903: wait 200 next boucle4% timer_off_all : off_KEY_DOWN 0 : Off_CLICK 1 : sprite_hide 3: tirdec%(5)=0: sprite_hide 150 :tirdec%(1)=0 sprite_hide 151 :tirdec%(2)=0: sprite_hide 152 :tirdec%(3)=0 :sprite_hide 153 :tirdec%(4)=0 if message_confirmation_yes_no("Voulez-vous rejouer ?")=1 then sprite_hide 900: sprite_hide 901 : sprite_hide 902: sprite_hide 903: goto start :else: terminate end | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:16 | |
| Ah, je vois qu'on est nombreux à connaître ce piège ! Tant mieux ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:17 | |
| C'est clair. Merci les mecs. Par contre, c'est vrai qu'un message erreur de syntaxe à la ligne 55 serait beaucoup plus parlant... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:17 | |
| @papydall Et oui c'est normal j'ai plus de réflexes !! pour ma part, j'utilise la fonction message et je la déplace de quelques lignes au fur et a mesure du test et lorsque le message n'apparait plus et que l'erreur s'affiche je n'ai plus qu'a débugger sur quelques lignes... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:30 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:33 | |
| Je fais presque pareil.
Je commence à placer des messages de loin en loin dans le source, dans la zone suspecte. Je laisse planter. J'insère de nouveaux messages entre le dernier message apparu et le premier non venu, et ainsi de suite. Succès garanti.
SAUF
losqu'il y a des routines ON_TIMER ! Ca fout tout en l'aire. Dans ce cas, je crée une nouvelle form dans laquelle je place un mémo avec bar_vertical. Et à la place des messages, je fais ITEM_ADD dans ce mémo, et j'ai ainsi une bande log précise. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:37 | |
| Ca devrait être en natif dans l'éditeur tant que l'on est en mode execute dans l'éditeur, je trouve. On n'est toujours tous obligé d'ajouter nos propres debugger (comme Cosmos entre autre et son système de debuggage) alors que ça serait si pratique nativement dans l'éditeur | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:50 | |
| Une petite remarque qui n’a aucune importance. C’est juste pour la signaler, c’est tout. J’ai remarqué que dans une ligne de remarque indiquée par l’apostrophe, si cette ligne contient le caractère accolade fermante ( } ), le texte qui vient après n’est plus coloré - Code:
-
' Ceci est une remarque} le texte après } n'est plus coloré } print "hello"
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Sam 18 Aoû 2012 - 19:56 | |
| Comme Panoramic était à la base destiné à des programmeurs débutants, je pense que Jack devrait faire un effort la dessus. Un message de ce type ou un problème de mise en forme de ce type peut être déroutant pour un nouvel arrivant (même pour un ancien d'ailleurs ...) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 19 Aoû 2012 - 0:32 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Dim 19 Aoû 2012 - 0:40 | |
| Il nous resterait des trucs à résoudre, je te rassure | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants Dim 19 Aoû 2012 - 10:59 | |
| tout a fait d'accord avec toi Jicehel
Un petit debugger intégré a PANO serait très pratique. Mais bon, je pense que jack a deja beaucoup de travail...
de plus, comme tu le souligne, plusieurs outils sont disponible ! | |
| | | Contenu sponsorisé
| Sujet: Re: Choix de Police dans Choix et messages d'erreur parlants | |
| |
| | | | Choix de Police dans Choix et messages d'erreur parlants | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |