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 |
|
|
| Trop de gosub... | |
| | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Aoû 2012 - 19:36 | |
| le comble du comble, j'ai repris le programme initiale, en mettant les int(rnd())à 5 et .... il fonctionne En fait j'avais mis à 4 en pensant que j'aurai en tirage 0,1,2,3,4 donc 5 colonnes ou lignes ben non int(rnd(4)) me donnait 0,1,2,3 donc 4 colonnes ou lignes et de ce fait j'essayais de rentrer 24 image dans 16 places d'où un nombre de boucles qui n'en finissaient pas forcemment elles cherchaient une place vide dans un parking plein ... Edit : ceci dit , je garde la prose de minibug qui est plus courte que mon labyrinthe de gosub... Je crois que vous allez me maudir pendant quelques temps... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Mer 1 Aoû 2012 - 19:55 | |
| Sinon, je te donne ma solution corrigée. Le gros avantage qu'elle a c'est qu'elle est déterministe, sur 25 combinaisons, ça ne jouera pas, mais si tu en avais 500 ou 5000, à la fin, ça ferait une différence notable, je pense. Je te mets le source pour info et par ce que j'étais distrait au boulot et que j'avais oublié des trucs et des erreurs d'indices: - Code:
-
' ****************************************************************************** dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$ dim Langue$,def$(100),jeu% dim M% dim N%,T%,L% dim x%,x$ dim img%,img$,Doss_img_select$ dim mess% dim t1 : t1 = 4 dim t2 : t2 = (t1+1)*(t1+1) dim case_libre(t2) dim i%, cpt% dim Table%(t1,t1),R%,C%
' ------------------------------------------------------------------------------ label Init,Init_Dossier,Init_List,Init_Param,Init_Langue label Change_Langue,New_Langue label Menu,Jouer,Arreter,APp,Aide label Select_Img,Preview,Choix, Creation,Placement,Selection label Action_G,Action_D,Action_H,Action_B label Attention
' ****************************************************************************** caption 0,"Mon Puzzle":width 0,516:height 0,558
main_menu 1 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer" sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue" sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos" sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide"
dlist 6 :' Liste des peramètres dlist 7 :' Liste des langues dispo dlist 8 :' Contenu de la langue choisie dlist 9 :' Liste des Images
gosub Init end ' ****************************************************************************** Init: gosub Init_Dossier gosub Init_List gosub Init_Param return ' ------------------------------------------------------------------------------ Init_Dossier: Dossier$=Dir_Current$ Doss_Sprite$=Dossier$+"\Sprites" Doss_Fond$=Dossier$+"\Fonds" Doss_Langue$=Dossier$+"\Langue" return ' ------------------------------------------------------------------------------ Init_List: ' langues disponibles dir_change Doss_Langue$ x$=file_find_first$ if x$<>"_" then item_add 7,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 7,x$ x$=file_find_next$ end_while file_find_close ' liste des images dir_change Doss_Fond$ x$=file_find_first$ if x$<>"_" then item_add 9,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 9,x$ x$=file_find_next$ end_while file_find_close return ' ------------------------------------------------------------------------------ Init_Param: if file_exists(Dossier$+"\Param.inf")=1 file_load 6,Dossier$+"\Param.inf" gosub Init_Langue else gosub Change_Langue end_if return ' ------------------------------------------------------------------------------ Init_Langue: clear 8 if count(6)>0 Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt" file_load 8,Langue$ for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x% for x%=2 to 5:caption x%,def$(x%-1):next x% end_if return ' ------------------------------------------------------------------------------ Change_Langue: if object_exists(100)=1 show 100 else form 100 width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2 caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10 command_target_is 100 alpha 101:top 101,10:left 101,10:caption 101,"Langue :" combo 102:top 102,30:left 102,10 for x%=1 to count(7):item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4):next x% on_change 102,New_Langue end_if return '------------------------------------------------------------------------------- New_Langue: If count(6)>0 and Text$(102)<>"" item_delete 6,1 item_insert 6,1,Text$(102) else if Text$(102)<>"" then item_insert 6,1,Text$(102) end_if file_save 6,Dossier$+"\Param.inf" gosub Init_Langue hide 100 return '------------------------------------------------------------------------------- Menu: for x%=2 to 5 if clicked(x%)=1 then M%=x% next x% select M% case 2 jeu%=jeu%+1 if jeu%=1 caption 2,def$(5) gosub Jouer else jeu%=0 caption 2,def$(1) gosub Arreter end_if case 3 gosub Change_Langue case 4 gosub APp case 5 gosub Aide end_select return ' ------------------------------------------------------------------------------ Jouer: gosub Select_Img return ' ------------------------------------------------------------------------------ Select_img: if object_exists(200)=1 show 200 else form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2 caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10 command_target_is 200 alpha 201:top 201,10:left 201,5:caption 201,def$(7) list 202 :top 202,30:left 202,5:width 202,170:height 202,230 for x%=1 to count(9):item_add 202,item_read$(9,x%):next x% on_double_click 202,Preview picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203 button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204 inactive 204:on_click 204,Choix end_if return ' ------------------------------------------------------------------------------ Preview: file_load 203,Doss_Fond$+"\"+item_index$(202) active 204 return ' ------------------------------------------------------------------------------ Choix: img$=item_index$(202) Doss_img_select$=Doss_Sprite$+"\"+left$(img$,len(img$)-4) hide 200 command_target_is 0 gosub Creation return ' ------------------------------------------------------------------------------ Creation: for x%=1 to 24 img%=10+x% picture img% :width img%,100 :height img%,100 :left img%,200:top img%,200 stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp" on_click img%,Selection next x% gosub Placement return ' ------------------------------------------------------------------------------ Placement: for i%=0 to t2-2:case_libre(i%)=i%: next i% i%=i%-1 while i% > 0 img% = 11 + i% cpt% = int(rnd(i%)) R%=int(case_libre(cpt%)/(t1+1)) C%=mod(case_libre(cpt%),(t1+1)) Table%(R%,C%)=img% left img%,R%*100 top img%,C%*100 if cpt%<i% then case_libre(cpt%)=case_libre(i%) i%=i%-1 end_while return ' ------------------------------------------------------------------------------ Selection: N%=number_click T%=Top(N%) L%=Left(N%) return ' ------------------------------------------------------------------------------ Action_G: mess%=1 if L%>=100 for x%=L% to L%-100 step -1:top N%,T% :left N%,x% :wait 10 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_D: mess%=2 if L%<400 for x%=L% to L%+100 step 1:top N%,T% :left N%,x% :wait 10 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_H: mess%=3 if T%>=100 for x%=T% to T%-100 step -1:top N%,x% :left N%,L% :wait 10 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_B: mess%=4 if T%<400 for x%=T% to T%+100 step 1:top N%,x% :left N%,L% :wait 10 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Attention: if mess%=1 then message "Vous avez atteint le bord gauche" if mess%=2 then message "Vous avez atteint le bord droit" if mess%=3 then message "Vous avez atteint le bord haut" if mess%=4 then message "Vous avez atteint le bord bas" return ' ------------------------------------------------------------------------------ Arreter: return ' ------------------------------------------------------------------------------ APp: return ' ------------------------------------------------------------------------------ Aide: return ' ------------------------------------------------------------------------------
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: Trop de gosub... Mer 1 Aoû 2012 - 20:41 | |
| @ Jicehel, Tu n'as pas à t'excuser de quoi que ce soit... Je vais mettre en sauvegarde toute les solutions pour les avoirs sous le coude. @ tous, je vous mets l'avancement du *.bas, essayez le c'est pas mal, même si le jeu n'est pas finalisé avec un arrêt victoire : - Code:
-
' ****************************************************************************** dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$ dim Langue$,def$(100),jeu% dim M% dim N%,T%,L%,T1%,L1% dim x%,x$ dim img%,img$,Doss_img_select$ dim mess% dim Table%(4,4),R%,C% ' ------------------------------------------------------------------------------ label Init,Init_Dossier,Init_List,Init_Param,Init_Langue label Change_Langue,New_Langue label Menu,Jouer,Arreter,APp,Aide label Select_Img,Preview,Choix,Creation,Placement,Verif,Selection label Action_G,Action_D,Action_H,Action_B label Attention
' ****************************************************************************** caption 0,"Mon Puzzle":width 0,516:height 0,558
main_menu 1 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer" sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue" sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos" sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide"
dlist 6 :' Liste des peramètres dlist 7 :' Liste des langues dispo dlist 8 :' Contenu de la langue choisie dlist 9 :' Liste des Images
gosub Init end ' ****************************************************************************** Init: gosub Init_Dossier gosub Init_List gosub Init_Param return ' ------------------------------------------------------------------------------ Init_Dossier: Dossier$=Dir_Current$ Doss_Sprite$=Dossier$+"\Sprites" Doss_Fond$=Dossier$+"\Fonds" Doss_Langue$=Dossier$+"\Langue" return ' ------------------------------------------------------------------------------ Init_List: ' langues disponibles dir_change Doss_Langue$ x$=file_find_first$ if x$<>"_" then item_add 7,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 7,x$ x$=file_find_next$ end_while file_find_close ' liste des images dir_change Doss_Fond$ x$=file_find_first$ if x$<>"_" then item_add 9,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 9,x$ x$=file_find_next$ end_while file_find_close return ' ------------------------------------------------------------------------------ Init_Param: if file_exists(Dossier$+"\Param.inf")=1 file_load 6,Dossier$+"\Param.inf" gosub Init_Langue else gosub Change_Langue end_if return ' ------------------------------------------------------------------------------ Init_Langue: clear 8 if count(6)>0 Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt" file_load 8,Langue$ for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x% for x%=2 to 5:caption x%,def$(x%-1):next x% end_if return ' ------------------------------------------------------------------------------ Change_Langue: if object_exists(100)=1 show 100 else form 100 width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2 caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10 command_target_is 100 alpha 101:top 101,10:left 101,10:caption 101,"Langue :" combo 102:top 102,30:left 102,10 for x%=1 to count(7):item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4):next x% on_change 102,New_Langue end_if return '------------------------------------------------------------------------------- New_Langue: If count(6)>0 and Text$(102)<>"" item_delete 6,1 item_insert 6,1,Text$(102) else if Text$(102)<>"" then item_insert 6,1,Text$(102) end_if file_save 6,Dossier$+"\Param.inf" gosub Init_Langue hide 100 return '------------------------------------------------------------------------------- Menu: for x%=2 to 5 if clicked(x%)=1 then M%=x% next x% select M% case 2 jeu%=jeu%+1 if jeu%=1 caption 2,def$(5) gosub Jouer else jeu%=0 caption 2,def$(1) gosub Arreter end_if case 3 gosub Change_Langue case 4 gosub APp case 5 gosub Aide end_select return ' ------------------------------------------------------------------------------ Jouer: gosub Select_Img return ' ------------------------------------------------------------------------------ Select_img: if object_exists(200)=1 show 200 else form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2 caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10 command_target_is 200 alpha 201:top 201,10:left 201,5:caption 201,def$(7) list 202 :top 202,30:left 202,5:width 202,170:height 202,230 for x%=1 to count(9):item_add 202,item_read$(9,x%):next x% on_double_click 202,Preview picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203 button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204 inactive 204:on_click 204,Choix end_if return ' ------------------------------------------------------------------------------ Preview: file_load 203,Doss_Fond$+"\"+item_index$(202) active 204 return ' ------------------------------------------------------------------------------ Choix: img$=item_index$(202) Doss_img_select$=Doss_Sprite$+"\"+left$(img$,len(img$)-4) hide 200 command_target_is 0 gosub Creation return ' ------------------------------------------------------------------------------ Creation: for x%=1 to 24 img%=10+x% picture img% :width img%,100 :height img%,100 :left img%,200:top img%,200 stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp" on_click img%,Selection next x% gosub Placement return ' ------------------------------------------------------------------------------ Placement: Table%(4,4)=1 for img%=11 to 34 repeat R%=int(rnd(5)) C%=int(rnd(5)) until Table%(R%,C%)=0 Table%(R%,C%)=img% left img%,R%*100 top img%,C%*100 next img% Table%(4,4)=0 return ' ------------------------------------------------------------------------------ Selection: N%=number_click T%=Top(N%) L%=Left(N%) gosub Verif return ' ------------------------------------------------------------------------------ Verif: T1%=T%/100 L1%=L%/100 ' pour se deplacer vers la gauche il faut au minimum etre dans la colonne 2 if L1%>0 if Table%(L1%-1,T1%)=0 gosub Action_G Table%(L1%-1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers la droite il faut au maximum etre dans la colonne 4 if L1%<4 if Table%(L1%+1,T1%)=0 gosub Action_D Table%(L1%+1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers le haut il faut etre au minimum sur la ligne 2 if T1%>0 if Table%(L1%,T1%-1)=0 gosub Action_H Table%(L1%,T1%-1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour se deplacer vers le bas il faut au maximum etre sur la ligne 4 if T1%<4 if Table%(L1%,T1%+1)=0 gosub Action_B Table%(L1%,T1%+1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if return ' ------------------------------------------------------------------------------ Action_G: mess%=1 if L%>=100 for x%=L% to L%-100 step -1:top N%,T% :left N%,x% :wait 10 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_D: mess%=2 if L%<400 for x%=L% to L%+100 step 1:top N%,T% :left N%,x% :wait 10 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_H: mess%=3 if T%>=100 for x%=T% to T%-100 step -1:top N%,x% :left N%,L% :wait 10 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_B: mess%=4 if T%<400 for x%=T% to T%+100 step 1:top N%,x% :left N%,L% :wait 10 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Attention: if mess%=1 then message "Vous avez atteint le bord gauche" if mess%=2 then message "Vous avez atteint le bord droit" if mess%=3 then message "Vous avez atteint le bord haut" if mess%=4 then message "Vous avez atteint le bord bas" return ' ------------------------------------------------------------------------------ Arreter: return ' ------------------------------------------------------------------------------ APp: return ' ------------------------------------------------------------------------------ Aide: return ' ------------------------------------------------------------------------------
Donnez moi vôtre avis, je suis impatient et vous avez tellement passé de temps avec ce bug... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Mer 1 Aoû 2012 - 21:15 | |
| ygeronimi, je t'ai mis une petite protection pour éviter de cliquer sur une autre image quand il y en a déjà une qui bouge (sinon ça plante sévèrement l'affichage) (Désolé, j'ai simplifié un peu pour m'y retrouver plus facilement ...) - Code:
-
' ****************************************************************************** dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$ dim Langue$,def$(100),jeu%, M%, i% dim N%,T%,L%,T1%,L1%, x%,x$, mess% dim img%,img$,Doss_img_select$ dim Table%(4,4),R%,C% ' ------------------------------------------------------------------------------ label Init,Init_Langue, Change_Langue,New_Langue, Menu,Jouer,Arreter,APp,Aide label Preview,Choix,Selection, Action_G,Action_D,Action_H,Action_B, Attention
' ****************************************************************************** caption 0,"Mon Puzzle":width 0,516:height 0,558
main_menu 1 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer" sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue" sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos" sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide"
dlist 6 :' Liste des paramètres dlist 7 :' Liste des langues dispo dlist 8 :' Contenu de la langue choisie dlist 9 :' Liste des Images
gosub Init end ' ****************************************************************************** Init: Dossier$=Dir_Current$ Doss_Sprite$=Dossier$+"\Sprites" Doss_Fond$=Dossier$+"\Fonds" Doss_Langue$=Dossier$+"\Langue" ' langues disponibles dir_change Doss_Langue$ x$=file_find_first$ if x$<>"_" then item_add 7,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 7,x$ x$=file_find_next$ end_while file_find_close ' liste des images dir_change Doss_Fond$ x$=file_find_first$ if x$<>"_" then item_add 9,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 9,x$ x$=file_find_next$ end_while file_find_close if file_exists(Dossier$+"\Param.inf")=1 file_load 6,Dossier$+"\Param.inf" gosub Init_Langue else gosub Change_Langue end_if return ' ------------------------------------------------------------------------------ Init_Langue: clear 8 if count(6)>0 Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt" file_load 8,Langue$ for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x% for x%=2 to 5:caption x%,def$(x%-1):next x% end_if return ' ------------------------------------------------------------------------------ Change_Langue: if object_exists(100)=1 show 100 else form 100 message Doss_Langue$ width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2 caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10 command_target_is 100 alpha 101:top 101,10:left 101,10:caption 101,"Langue :" combo 102:top 102,30:left 102,10 if count(7) > 0 for x%=1 to count(7) item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4) next x% end_if on_change 102,New_Langue end_if return '------------------------------------------------------------------------------- New_Langue: If count(6)>0 and Text$(102)<>"" item_delete 6,1 item_insert 6,1,Text$(102) else if Text$(102)<>"" then item_insert 6,1,Text$(102) end_if file_save 6,Dossier$+"\Param.inf" gosub Init_Langue hide 100 return '------------------------------------------------------------------------------- Menu: for x%=2 to 5 if clicked(x%)=1 then M%=x% next x% select M% case 2 jeu%=jeu%+1 if jeu%=1 caption 2,def$(5) gosub Jouer else jeu%=0 caption 2,def$(1) gosub Arreter end_if case 3 gosub Change_Langue case 4 gosub APp case 5 gosub Aide end_select return ' ------------------------------------------------------------------------------ Jouer: if object_exists(200)=1 show 200 else form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2 caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10 command_target_is 200 alpha 201:top 201,10:left 201,5:caption 201,def$(7) list 202 :top 202,30:left 202,5:width 202,170:height 202,230 for x%=1 to count(9):item_add 202,item_read$(9,x%):next x% on_double_click 202,Preview picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203 button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204 inactive 204:on_click 204,Choix end_if return ' ------------------------------------------------------------------------------ Preview: file_load 203,Doss_Fond$+"\"+item_index$(202) active 204 return ' ------------------------------------------------------------------------------ Choix: img$=item_index$(202) Doss_img_select$=Doss_Sprite$+"\"+left$(img$,len(img$)-4) hide 200 command_target_is 0 i% = object_exists(11) for x%=1 to 24 img%=10+x% if i% = 0 then picture img% :width img%,100 :height img%,100 :left img%,200:top img%,200 stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp" on_click img%,Selection next x% Table%(4,4)=1 for img%=11 to 34 repeat R%=int(rnd(5)) C%=int(rnd(5)) until Table%(R%,C%)=0 Table%(R%,C%)=img% left img%,R%*100 top img%,C%*100 next img% Table%(4,4)=0 return ' ------------------------------------------------------------------------------ Selection: for x%=1 to 24: off_click x%+10 : next x% N%=number_click : T%=Top(N%) : L%=Left(N%) T1%=T%/100 : L1%=L%/100 ' pour se deplacer vers la gauche il faut au minimum etre dans la colonne 2 if L1%>0 if Table%(L1%-1,T1%)=0 gosub Action_G Table%(L1%-1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers la droite il faut au maximum etre dans la colonne 4 if L1%<4 if Table%(L1%+1,T1%)=0 gosub Action_D Table%(L1%+1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers le haut il faut etre au minimum sur la ligne 2 if T1%>0 if Table%(L1%,T1%-1)=0 gosub Action_H Table%(L1%,T1%-1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour se deplacer vers le bas il faut au maximum etre sur la ligne 4 if T1%<4 if Table%(L1%,T1%+1)=0 gosub Action_B Table%(L1%,T1%+1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if for x%=1 to 24: on_click x%+10,selection : next x% return ' ------------------------------------------------------------------------------ Action_G: mess%=1 if L%>=100 for x%=L% to L%-100 step -1:top N%,T% :left N%,x% :wait 2 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_D: mess%=2 if L%<400 for x%=L% to L%+100 step 1:top N%,T% :left N%,x% :wait 2 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_H: mess%=3 if T%>=100 for x%=T% to T%-100 step -1:top N%,x% :left N%,L% :wait 2 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_B: mess%=4 if T%<400 for x%=T% to T%+100 step 1:top N%,x% :left N%,L% :wait 2 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Attention: if mess%=1 then message "Vous avez atteint le bord gauche" if mess%=2 then message "Vous avez atteint le bord droit" if mess%=3 then message "Vous avez atteint le bord haut" if mess%=4 then message "Vous avez atteint le bord bas" return ' ------------------------------------------------------------------------------ Arreter: return ' ------------------------------------------------------------------------------ APp: return ' ------------------------------------------------------------------------------ Aide: return ' ------------------------------------------------------------------------------
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Aoû 2012 - 21:36 | |
| Du coup c'est moi qui suis perdu... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Aoû 2012 - 21:49 | |
| J'ai vu que faisais un off_click mais comment fais tu pour rendre le click possible si je rajoute cette ligne dans mon code je ne peux plus rien cliquer | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Mer 1 Aoû 2012 - 21:53 | |
| Bon alors pour me faire pardonner pour l'embrouillage, je t'ai codé le arrêter / jouer Mais bon j’arrête, je ne veux pas te piquer ton programme. On verra u tu rencontres des problèmes après PS: pour ta réponse, il y a avant le return une boucle où je remet le on_clic - Code:
-
' ****************************************************************************** dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$ dim Langue$,def$(100),jeu%, M%, i% dim N%,T%,L%,T1%,L1%, x%,x$, mess% dim img%,img$,Doss_img_select$ dim Table%(4,4),R%,C% ' ------------------------------------------------------------------------------ label Init_Langue, Change_Langue,New_Langue, Menu,Jouer,Arreter,APp,Aide label Preview,Choix,Selection, Action_G,Action_D,Action_H,Action_B, Attention
' ****************************************************************************** caption 0,"Mon Puzzle":width 0,516:height 0,558
main_menu 1 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer" sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue" sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos" sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide"
dlist 6 :' Liste des paramètres dlist 7 :' Liste des langues dispo dlist 8 :' Contenu de la langue choisie dlist 9 :' Liste des Images
Dossier$=Dir_Current$ Doss_Sprite$=Dossier$+"\Sprites" Doss_Fond$=Dossier$+"\Fonds" Doss_Langue$=Dossier$+"\Langue" ' langues disponibles dir_change Doss_Langue$ x$=file_find_first$ if x$<>"_" then item_add 7,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 7,x$ x$=file_find_next$ end_while file_find_close ' liste des images dir_change Doss_Fond$ x$=file_find_first$ if x$<>"_" then item_add 9,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 9,x$ x$=file_find_next$ end_while file_find_close if file_exists(Dossier$+"\Param.inf")=1 file_load 6,Dossier$+"\Param.inf" gosub Init_Langue else gosub Change_Langue end_if end ' ------------------------------------------------------------------------------ Init_Langue: clear 8 if count(6)>0 Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt" file_load 8,Langue$ for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x% for x%=2 to 5:caption x%,def$(x%-1):next x% end_if return ' ------------------------------------------------------------------------------ Change_Langue: if object_exists(100)=1 show 100 else form 100 message Doss_Langue$ width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2 caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10 command_target_is 100 alpha 101:top 101,10:left 101,10:caption 101,"Langue :" combo 102:top 102,30:left 102,10 if count(7) > 0 for x%=1 to count(7) item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4) next x% end_if on_change 102,New_Langue end_if return '------------------------------------------------------------------------------- New_Langue: If count(6)>0 and Text$(102)<>"" item_delete 6,1 item_insert 6,1,Text$(102) else if Text$(102)<>"" then item_insert 6,1,Text$(102) end_if file_save 6,Dossier$+"\Param.inf" gosub Init_Langue hide 100 return '------------------------------------------------------------------------------- Menu: for x%=2 to 5 if clicked(x%)=1 then M%=x% next x% select M% case 2 jeu%=jeu%+1 if jeu%=1 caption 2,def$(5) gosub Jouer else jeu%=0 caption 2,def$(1) gosub Arreter end_if case 3 gosub Change_Langue case 4 gosub APp case 5 gosub Aide end_select return ' ------------------------------------------------------------------------------ Jouer: for r%=0 to 4: for c%=0 to 4 : Table%(R%,C%)=0 : next c%: next r% if object_exists(200)=1 show 200 else form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2 caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10 command_target_is 200 alpha 201:top 201,10:left 201,5:caption 201,def$(7) list 202 :top 202,30:left 202,5:width 202,170:height 202,230 for x%=1 to count(9):item_add 202,item_read$(9,x%):next x% on_double_click 202,Preview picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203 button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204 inactive 204:on_click 204,Choix end_if return ' ------------------------------------------------------------------------------ Preview: file_load 203,Doss_Fond$+"\"+item_index$(202) active 204 return ' ------------------------------------------------------------------------------ Choix: img$=item_index$(202) Doss_img_select$=Doss_Sprite$+"\"+left$(img$,len(img$)-4) hide 200 command_target_is 0 i% = object_exists(11) for x%=1 to 24 img%=10+x% if i% = 0 then picture img% :width img%,100 :height img%,100 :left img%,200:top img%,200 stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp" on_click img%,Selection next x% Table%(4,4)=1 for img%=11 to 34 show img% repeat R%=int(rnd(5)) C%=int(rnd(5)) until Table%(R%,C%)=0 Table%(R%,C%)=img% left img%,R%*100 top img%,C%*100 next img% Table%(4,4)=0 return ' ------------------------------------------------------------------------------ Selection: for x%=1 to 24: off_click x%+10 : next x% N%=number_click : T%=Top(N%) : L%=Left(N%) T1%=T%/100 : L1%=L%/100 ' pour se deplacer vers la gauche il faut au minimum etre dans la colonne 2 if L1%>0 if Table%(L1%-1,T1%)=0 gosub Action_G Table%(L1%-1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers la droite il faut au maximum etre dans la colonne 4 if L1%<4 if Table%(L1%+1,T1%)=0 gosub Action_D Table%(L1%+1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers le haut il faut etre au minimum sur la ligne 2 if T1%>0 if Table%(L1%,T1%-1)=0 gosub Action_H Table%(L1%,T1%-1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour se deplacer vers le bas il faut au maximum etre sur la ligne 4 if T1%<4 if Table%(L1%,T1%+1)=0 gosub Action_B Table%(L1%,T1%+1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if for x%=1 to 24: on_click x%+10,selection : next x% return ' ------------------------------------------------------------------------------ Action_G: mess%=1 if L%>=100 for x%=L% to L%-100 step -4:top N%,T% :left N%,x% :wait 2 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_D: mess%=2 if L%<400 for x%=L% to L%+100 step 4:top N%,T% :left N%,x% :wait 2 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_H: mess%=3 if T%>=100 for x%=T% to T%-100 step -4:top N%,x% :left N%,L% :wait 2 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_B: mess%=4 if T%<400 for x%=T% to T%+100 step 4:top N%,x% :left N%,L% :wait 2 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Attention: if mess%=1 then message "Vous avez atteint le bord gauche" if mess%=2 then message "Vous avez atteint le bord droit" if mess%=3 then message "Vous avez atteint le bord haut" if mess%=4 then message "Vous avez atteint le bord bas" return ' ------------------------------------------------------------------------------ Arreter: for img%=11 to 34 : hide img% : next img% return ' ------------------------------------------------------------------------------ APp: return ' ------------------------------------------------------------------------------ Aide: return ' ------------------------------------------------------------------------------
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 1 Aoû 2012 - 21:57 | |
| C'est surtout le retour de possibilité de cliquer qui m'intrigue, je suis curieux de savoir comment tu t'y prends. Perso, dès que je mets off_click c'est fini je ne peux plus rien cliquer... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Mer 1 Aoû 2012 - 22:10 | |
| Regarde, avant le return, tu as la ligne: for x%=1 to 24: on_click x%+10,selection : next x% | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Aoû 2012 - 0:32 | |
| dernière version : - Code:
-
' ****************************************************************************** dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$ dim Langue$,def$(100),jeu% dim M% dim N%,T%,L%,T1%,L1% dim x%,x$ dim img%,img$,Doss_img_select$,view$ dim mess% dim Table%(4,4),R%,C%,a%,b%,z%,cpte% ' ------------------------------------------------------------------------------ label Init,Init_Dossier,Init_List,Init_Param,Init_Langue label Change_Langue,New_Langue label Menu,Jouer,Arreter,APp,Aide label Select_Img,Preview,Choix,Creation,Placement,Verif,Selection label Action_G,Action_D,Action_H,Action_B label Attention
' ****************************************************************************** caption 0,"Mon Puzzle":width 0,516:height 0,558:color 0,240,240,150
main_menu 1 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer" sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue" sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos" sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide" inactive 5 dlist 6 :' Liste des peramètres dlist 7 :' Liste des langues dispo dlist 8 :' Contenu de la langue choisie dlist 9 :' Liste des Images
gosub Init end ' ****************************************************************************** Init: gosub Init_Dossier gosub Init_List gosub Init_Param return ' ------------------------------------------------------------------------------ Init_Dossier: Dossier$=Dir_Current$ Doss_Sprite$=Dossier$+"\Sprites" Doss_Fond$=Dossier$+"\Fonds" Doss_Langue$=Dossier$+"\Langue" return ' ------------------------------------------------------------------------------ Init_List: ' langues disponibles dir_change Doss_Langue$ x$=file_find_first$ if x$<>"_" then item_add 7,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 7,x$ x$=file_find_next$ end_while file_find_close ' liste des images dir_change Doss_Fond$ x$=file_find_first$ if x$<>"_" then item_add 9,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 9,x$ x$=file_find_next$ end_while file_find_close return ' ------------------------------------------------------------------------------ Init_Param: if file_exists(Dossier$+"\Param.inf")=1 file_load 6,Dossier$+"\Param.inf" gosub Init_Langue else gosub Change_Langue end_if return ' ------------------------------------------------------------------------------ Init_Langue: clear 8 if count(6)>0 Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt" file_load 8,Langue$ for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x% for x%=2 to 5:caption x%,def$(x%-1):next x% end_if return ' ------------------------------------------------------------------------------ Change_Langue: if object_exists(100)=1 show 100 else form 100 width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2 caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10 command_target_is 100 alpha 101:top 101,10:left 101,10:caption 101,"Langue :" combo 102:top 102,30:left 102,10 for x%=1 to count(7):item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4):next x% on_change 102,New_Langue end_if return '------------------------------------------------------------------------------- New_Langue: If count(6)>0 and Text$(102)<>"" item_delete 6,1 item_insert 6,1,Text$(102) else if Text$(102)<>"" then item_insert 6,1,Text$(102) end_if file_save 6,Dossier$+"\Param.inf" gosub Init_Langue hide 100 return '------------------------------------------------------------------------------- Menu: for x%=2 to 5 if clicked(x%)=1 then M%=x% next x% select M% case 2 jeu%=jeu%+1 if jeu%=1 caption 2,def$(5) gosub Jouer else jeu%=0 caption 2,def$(1) gosub Arreter end_if case 3 gosub Change_Langue case 4 gosub APp case 5 gosub Aide end_select return ' ------------------------------------------------------------------------------ Jouer: gosub Select_Img return ' ------------------------------------------------------------------------------ Select_img: if object_exists(200)=1 show 200 else form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2 caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10 command_target_is 200 alpha 201:top 201,10:left 201,5:caption 201,def$(7) list 202 :top 202,30:left 202,5:width 202,170:height 202,230 for x%=1 to count(9):item_add 202,item_read$(9,x%):next x% on_double_click 202,Preview picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203 button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204 inactive 204:on_click 204,Choix end_if return ' ------------------------------------------------------------------------------ Preview: view$=Doss_Fond$+"\"+item_index$(202) file_load 203,view$ active 204 return ' ------------------------------------------------------------------------------ Choix: img$=item_index$(202) Doss_img_select$=Doss_Sprite$+"\"+left$(img$,len(img$)-4) hide 200 command_target_is 0 gosub Creation return ' ------------------------------------------------------------------------------ Creation: for x%=1 to 24 img%=10+x% picture img% :width img%,100 :height img%,100:cursor_point img% stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp" on_click img%,Selection next x% gosub Placement active 5 return ' ------------------------------------------------------------------------------ Placement: Table%(4,4)=1 for img%=11 to 34 repeat R%=int(rnd(5)) C%=int(rnd(5)) until Table%(R%,C%)=0 Table%(R%,C%)=img% left img%,R%*100 top img%,C%*100 next img% Table%(4,4)=0 return ' ------------------------------------------------------------------------------ Selection: for x%=1 to 24:off_click x%+10:next x% N%=number_click T%=Top(N%) L%=Left(N%) gosub Verif return ' ------------------------------------------------------------------------------ Verif: T1%=T%/100 L1%=L%/100 ' pour se deplacer vers la gauche il faut au minimum etre dans la colonne 2 if L1%>0 if Table%(L1%-1,T1%)=0 gosub Action_G Table%(L1%-1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers la droite il faut au maximum etre dans la colonne 4 if L1%<4 if Table%(L1%+1,T1%)=0 gosub Action_D Table%(L1%+1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers le haut il faut etre au minimum sur la ligne 2 if T1%>0 if Table%(L1%,T1%-1)=0 gosub Action_H Table%(L1%,T1%-1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour se deplacer vers le bas il faut au maximum etre sur la ligne 4 if T1%<4 if Table%(L1%,T1%+1)=0 gosub Action_B Table%(L1%,T1%+1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if z%=11 cpte%=0 for a%=0 to 4 for b%=0 to 4 z%=z%+1 if Table%(a%,b%)=z% then cpte%=cpte%+1 next b% next a% if cpte%=24 gosub Arreter else for x%=1 to 24:on_click x%+10,Selection :next x% end_if return ' ------------------------------------------------------------------------------ Action_G: mess%=1 if L%>=100 for x%=L% to L%-100 step -1:top N%,T% :left N%,x% :wait 5 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_D: mess%=2 if L%<400 for x%=L% to L%+100 step 1:top N%,T% :left N%,x% :wait 5 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_H: mess%=3 if T%>=100 for x%=T% to T%-100 step -1:top N%,x% :left N%,L% :wait 5 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Action_B: mess%=4 if T%<400 for x%=T% to T%+100 step 1:top N%,x% :left N%,L% :wait 5 :next x% else gosub Attention end_if return ' ------------------------------------------------------------------------------ Attention: if mess%=1 then message "Vous avez atteint le bord gauche" if mess%=2 then message "Vous avez atteint le bord droit" if mess%=3 then message "Vous avez atteint le bord haut" if mess%=4 then message "Vous avez atteint le bord bas" return ' ------------------------------------------------------------------------------ Arreter: message "Youpi!!!!" return ' ------------------------------------------------------------------------------ APp: return ' ------------------------------------------------------------------------------ Aide: if object_exists(300)=1 show 300 else form 300:height 300,328:width 300,306:caption 300,def$(4) command_target_is 300 picture 301:height 301,290:width 301,290:file_load 301,view$ end_if return ' ------------------------------------------------------------------------------
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Jeu 2 Aoû 2012 - 0:44 | |
| Pour quand on rejoue, tu dois modifier la procédure creation - Code:
-
i% = object_exists(11) for x%=1 to 24 img%=10+x% if i% = 0 then picture img% :width img%,100 :height img%,100 :left img%,200:top img%,200 stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp" on_click img%,Selection next x% Je pense que tu as tord d'utiliser Arreter comme tu le faits. Quand tu fais arréter, tu as le message Youpi !!! alors que tu n'as pas gagner. Quand tu gagne, c'est une procédure à part Quand tu clique sur Arréter pour moi, tu abandonnes, mais bon c'est ma vision des choses Comme je ne suis pas patient, dans les "actions" au lieu d'un pas de 1, perso, j'ai mis 5 Action_G => step -5 action_D =>step 5 ... Petit bug, si tu changes la langue en cours de jeu, un arreter devient play et un stop devient jouer ... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Aoû 2012 - 1:13 | |
| le message Youpi!!! :C'est ma façon à moi de verifier si ma boucle fonctionne correctement tu as pu voir que j'ai rajouté une boucle qui vérifie après chaque déplacement si les pseudos sprites sont tous à leur place dans ce cas je saute au label "arreter" qui lui mettra un terme au jeu Pour les actions:comme c'est un *.bas, chacun peut mettre la vitesse qu'il veut mais attention au scintillement Pour la procédure de création:je vois ce que tu veux dire, je risque un souci d'objet déjà créés... par contre j'ai supprimé left et top dans la création des pictures (inutile, à moins de faire une boucle pour que ceux ci prennent place avec un effet de déplacement). Edit : j'allais zoublier, j'ai rajouter l'aide mais je vais mettre un temps d'affichage ( c'est une aide pas un model ) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Aoû 2012 - 1:43 | |
| @ Jicehel,
J'ai un bug avec ta modif dans "creation" | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Aoû 2012 - 3:32 | |
| Bon , je viens de mettre sur mon webdav le zip avec la dernière version. http://www.mydrive.ch/panoramicien@ygeronimi_panoramic panoramic123Dès que le jeu sera opérationnel, je le changerai de rubrique... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Trop de gosub... Jeu 2 Aoû 2012 - 8:14 | |
| salut ygeronimi je viens de mettre en place ta derniere version et je suis surpris de voir que les pieces partent dans tous les sens ! je pense que tu as changé quelques choses dans les routines car tout fonctionnait bien hier soir. J'ai même essayé de faire le puzzle, et ca ma pris du temps. Encore un bon casse-tête en prévision ! A bientot et bon courage... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Jeu 2 Aoû 2012 - 8:21 | |
| Tu as oublié le return du sous programme Verif dans le source sur ton Webdav ... Du coup si on ne le rajoute pas ça fait bizzare, mais bon juste un return à rajouter ligne 257 dans init_langue il te manque le test si dessous avant le return if jeu%=1 then caption 2,def$(5) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Aoû 2012 - 14:31 | |
| Mille pardons pour le return, ...c'est çà quand on fait le ménage, dès fois on vire des trucs sans s'en apercevoir @ Jicehel, Bien vu , celui là de "if" il a failli passer à la trappe... Je pense que tu as vu que j'avais un peu modifier la fonction arrêt C'est juste par convenance perso pour retrouver les actions, quand il est a "creation" il construit, quand il est à "arret" il initialise Ceci dit, la version corrigé est en ligne. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Jeu 2 Aoû 2012 - 14:40 | |
| Je regarderais où tu en est ce soir. Qu'as-tu prévu de rajouter maintenant ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Aoû 2012 - 14:59 | |
| Je suis entrain de voir pour ajouter un chrono que j'aimerai placé visuellement en bout dans le menu puis quand j'y serai parvenu, un menu score pour conserver les meilleurs temps de résolution : Date / heure / joueur / image / chrono mais je suis assez satisfait du résultat actuel, car quand j'ai commencé avec panoramic c'était un petit défi perso que je m'étais lancé car je jouais avec celui de mon ordi que je trouvais trop petit. bref, si j'arrive à mes fins, je penserai à travailler sur d'autres images pour gonfler un peu la liste. Voilà, voilà..... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Aoû 2012 - 19:12 | |
| Bon ben ca coince au niveau de la vérif du tableau... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Jeu 2 Aoû 2012 - 19:18 | |
| Tu as modifier d'autres trucs que le source, sinon publie le ici, si jamais je peux t'aider... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 2 Aoû 2012 - 19:32 | |
| voilà le bout en question - Code:
-
dim% solution%(4,4)
z%=10 for a%=0 to 4 for b%=0 to 4 z%=z%+1 solution%(a%,b%)=z% next a% next b% - Code:
-
' ------------------------------------------------------------------------------ Selection: for x%=1 to 24:off_click x%+10:next x% N%=number_click T%=Top(N%) L%=Left(N%) gosub Verif cpte%=0 for a%=0 to 4 for b%=0 to 4 if Table%(a%,b%)=Solution%(a%,b%) then cpte%=cpte%+1 caption 800,str$(cpte%) if cpte%=24 gagne%=1 gosub Arreter end_if next b% next a% return ' ------------------------------------------------------------------------------ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Jeu 2 Aoû 2012 - 20:45 | |
| sans aller plus loin, je ne sais pas si c'est ce qui te pose problème mais tu as inversé le next a et le next b dans ton premier code. Je regarde | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Trop de gosub... Jeu 2 Aoû 2012 - 21:04 | |
| je t'ai implémenté un petit mode debug pour suivre ce qui se passe. Je n'ai pas trop le temps de chercher ce soir car je me suis engagé sur des trucs. Regarde les valeurs de la table. Je pense que ça explique tes problèmes... - Code:
-
' ****************************************************************************** dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$ dim Langue$,def$(100),jeu% dim M% dim N%,T%,L%,T1%,L1% dim x%,x$ dim img%,img$,Doss_img_select$,view$ dim mess% dim Table%(4,4),R%,C%,a%,b%,z%,cpte%,i%,gagne% dim debug% : debug%=1 dim solution%(4,4)
' ------------------------------------------------------------------------------ label Init,Init_Dossier,Init_List,Init_Param,Init_Langue label Change_Langue,New_Langue label Menu,Jouer,Arreter,APp,Aide label Select_Img,Preview,Choix,Creation,Placement,Verif,Selection label Action_G,Action_D,Action_H,Action_B ' ****************************************************************************** caption 0,"Mon Puzzle":width 0,516:height 0,558:color 0,240,240,150
if debug%=1 form 700 : caption 700,"Debug" : left 700,600 : width 700,250 : height 700, 400 print_target_is 700 end_if
z%=10 for a%=0 to 4 x$="" for b%=0 to 4 z%=z%+1 solution%(a%,b%)=z% if debug%=1 x$=x$ + right$("00"+str$(solution%(a%,b%)),2)+"|" end_if next b% if debug%=1 then print x$ next a% if debug%=1 then print
main_menu 1 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer" sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue" sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos" sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide" inactive 5 dlist 6 :' Liste des peramètres dlist 7 :' Liste des langues dispo dlist 8 :' Contenu de la langue choisie dlist 9 :' Liste des Images
gosub Init end ' ****************************************************************************** Init: gosub Init_Dossier gosub Init_List gosub Init_Param return ' ------------------------------------------------------------------------------ Init_Dossier: Dossier$=Dir_Current$ Doss_Sprite$=Dossier$+"\Sprites" Doss_Fond$=Dossier$+"\Fonds" Doss_Langue$=Dossier$+"\Langue" return ' ------------------------------------------------------------------------------ Init_List: ' langues disponibles dir_change Doss_Langue$ x$=file_find_first$ if x$<>"_" then item_add 7,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 7,x$ x$=file_find_next$ end_while file_find_close ' liste des images dir_change Doss_Fond$ x$=file_find_first$ if x$<>"_" then item_add 9,x$ x$=file_find_next$ while x$<>"_" if x$<>"_" then item_add 9,x$ x$=file_find_next$ end_while file_find_close return ' ------------------------------------------------------------------------------ Init_Param: if file_exists(Dossier$+"\Param.inf")=1 file_load 6,Dossier$+"\Param.inf" gosub Init_Langue else gosub Change_Langue end_if return ' ------------------------------------------------------------------------------ Init_Langue: clear 8 if count(6)>0 Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt" file_load 8,Langue$ for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x% for x%=2 to 5:caption x%,def$(x%-1):next x% end_if return ' ------------------------------------------------------------------------------ Change_Langue: if object_exists(100)=1 show 100 else form 100 width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2 caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10 command_target_is 100 alpha 101:top 101,10:left 101,10:caption 101,"Langue :" combo 102:top 102,30:left 102,10 for x%=1 to count(7):item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4):next x% on_change 102,New_Langue end_if return '------------------------------------------------------------------------------- New_Langue: If count(6)>0 and Text$(102)<>"" item_delete 6,1 item_insert 6,1,Text$(102) else if Text$(102)<>"" then item_insert 6,1,Text$(102) end_if file_save 6,Dossier$+"\Param.inf" gosub Init_Langue hide 100 return '------------------------------------------------------------------------------- Menu: for x%=2 to 5 if clicked(x%)=1 then M%=x% next x% select M% case 2 jeu%=jeu%+1 if jeu%=1 caption 2,def$(5) gosub Jouer else jeu%=0 caption 2,def$(1) gagne%=0 gosub Arreter end_if case 3 gosub Change_Langue case 4 gosub APp case 5 gosub Aide end_select return ' ------------------------------------------------------------------------------ Jouer: gosub Select_Img return ' ------------------------------------------------------------------------------ Select_img: if object_exists(200)=1 show 200 else form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2 caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10 command_target_is 200 alpha 201:top 201,10:left 201,5:caption 201,def$(7) list 202 :top 202,30:left 202,5:width 202,170:height 202,230:cursor_point 202 for x%=1 to count(9):item_add 202,item_read$(9,x%):next x% on_click 202,Preview picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203 button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204 inactive 204:on_click 204,Choix end_if return ' ------------------------------------------------------------------------------ Preview: view$=Doss_Fond$+"\"+item_index$(202) file_load 203,view$ active 204 return ' ------------------------------------------------------------------------------ Choix: img$=item_index$(202) Doss_img_select$=Doss_Sprite$+"\"+left$(img$,len(img$)-4) hide 200 command_target_is 0 gosub Creation return ' ------------------------------------------------------------------------------ Creation: for x%=1 to 24 img%=10+x% picture img% width img%,100 :height img%,100:cursor_point img% stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp" on_click img%,Selection next x% gosub Placement active 5 return ' ------------------------------------------------------------------------------ Placement: Table%(4,4)=1 for img%=11 to 34 repeat R%=int(rnd(5)) C%=int(rnd(5)) until Table%(R%,C%)=0 Table%(R%,C%)=img% left img%,R%*100 top img%,C%*100 next img% Table%(4,4)=0 return ' ------------------------------------------------------------------------------ Selection: for x%=1 to 24:off_click x%+10:next x% N%=number_click T%=Top(N%) L%=Left(N%) gosub Verif cpte%=0 if debug%=1 then cls for a%=0 to 4 x$="" for b%=0 to 4 if debug%=1 x$=x$ + right$("00"+str$(Table%(a%,b%)),2)+"|" end_if if Table%(a%,b%)=Solution%(a%,b%) then cpte%=cpte%+1 ' caption 800,str$(cpte%) if cpte%=24 gagne%=1 gosub Arreter end_if next b% if debug%=1 then print x$ next a% if debug%=1 then print return
' ------------------------------------------------------------------------------ Verif: T1%=T%/100 L1%=L%/100 ' pour se deplacer vers la gauche il faut au minimum etre dans la colonne 2 if L1%>0 if Table%(L1%-1,T1%)=0 gosub Action_G Table%(L1%-1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers la droite il faut au maximum etre dans la colonne 4 if L1%<4 if Table%(L1%+1,T1%)=0 gosub Action_D Table%(L1%+1,T1%)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour ce deplacer vers le haut il faut etre au minimum sur la ligne 2 if T1%>0 if Table%(L1%,T1%-1)=0 gosub Action_H Table%(L1%,T1%-1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if ' pour se deplacer vers le bas il faut au maximum etre sur la ligne 4 if T1%<4 if Table%(L1%,T1%+1)=0 gosub Action_B Table%(L1%,T1%+1)=Table%(L1%,T1%) Table%(L1%,T1%)=0 end_if end_if z%=11 cpte%=0 for a%=0 to 4 for b%=0 to 4 z%=z%+1 if Table%(a%,b%)=z% then cpte%=cpte%+1 if cpte%=24 gagne%=1 gosub Arreter end_if next b% next a% for x%=1 to 24:on_click x%+10,Selection :next x% return ' ------------------------------------------------------------------------------ Action_G: if L%>=100 for x%=L% to L%-100 step -5:top N%,T% :left N%,x% :wait 5 :next x% end_if return ' ------------------------------------------------------------------------------ Action_D: if L%<400 for x%=L% to L%+100 step 5:top N%,T% :left N%,x% :wait 5 :next x% end_if return ' ------------------------------------------------------------------------------ Action_H: if T%>=100 for x%=T% to T%-100 step -5:top N%,x% :left N%,L% :wait 5 :next x% end_if return ' ------------------------------------------------------------------------------ Action_B: if T%<400 for x%=T% to T%+100 step 5:top N%,x% :left N%,L% :wait 5 :next x% end_if return ' ------------------------------------------------------------------------------ Arreter: if gagne%=1 then message "Youpi!!!!" for img%=11 to 34 : delete img% : next img% for R%=0 to 4: for C%=0 to 4 : Table%(R%,C%)=0 : next C%: next R% return ' ------------------------------------------------------------------------------ APp: return ' ------------------------------------------------------------------------------ Aide: if object_exists(300)=1 show 300 else form 300:height 300,328:width 300,306:caption 300,def$(4) command_target_is 300 picture 301:height 301,290:width 301,290:file_load 301,view$ end_if pause 5000 hide 300 return ' ------------------------------------------------------------------------------ | |
| | | Contenu sponsorisé
| Sujet: Re: Trop de gosub... | |
| |
| | | | Trop de gosub... | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |