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 |
|
|
| Les déboires de Yannick avec le compilateur... | |
| | Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Les déboires de Yannick avec le compilateur... Jeu 4 Juil 2019 - 3:07 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Les déboires de Yannick avec le compilateur... Jeu 4 Juil 2019 - 5:04 | |
| Salut Yannick - Jack a écrit:
- B.10 - En prévision d'une version ultérieure, le source est formé de 5 zones;
- une zone où on déclare les variables globales (zone DIM), - une zone où on déclare les labels (zone LABEL), - une zone où on déclare les données intégrées au programme (les DATA accessibles par READ et adressables par RESTORE et RESTORE_LABEL), - une zone pour le programme principal (jusqu'à END), - une zone pour les fonctions et sous-programmes. En fait, ces zones ne sont pas visibles mais sont imposées par un système d'erreurs. On peut commencer un source en définissant un ou des labels, mais si ensuite, une ou des variables locales sont déclarées (DIM), il y a erreur, car un DIM doit être déclaré avant un LABEL, etc.
Voir ici• Déclarer TOUS les DIM d’abord et en dehors d’un SUB. Je parle des variables et/ou des constantes globales. • Déclarer les LABEL ensuite s’il y en a dans le programme, (toujours en dehors d’un SUB) • Déclarer les DATA si … • Les instructions du programme : • L’indispensable commande END Un petit exemple de code - Code:
-
rem ============================================================================ rem Structure d’un programme pour le compilateur rem ============================================================================ rem 1 / Déclarer TOUS les DIM d’abord et en dehors d’un SUB. rem Je parle des variables et/ou des constantes globales. rem 2 / Déclarer les LABEL ensuite s’il y en a dans le programme, rem (toujours en dehors d’un SUB) rem 3 / Déclarer les DATA si besoin est. rem 4 / Viennent ensuite les instructions du programme : affectations, instructions, rem appels aux éventuels sous-programes (SUB et/ou FNC). rem 5 / Terminer par la commande END (ou TERMINATE) rem ============================================================================ rem Voici maintenant un exemple de ce que pourrait être un code rem ============================================================================ rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rem ============================================================================ ' --------------- Debut des déclarations des variables et des constante globales DIM xc,yc : ' déclarations des variables globales et des constantes globales ' DIM toto, tata, titi, etc ' ---------------- Fin des déclarations des variables et des constantes globales ' LABEL machin, truc, bidon : ' déclarations des LABEL (pour les appels par ON_XXX ' ' et éventuellement par GOSUB, GOTO, RESTORE_LABEL rem ============================================================================ ' Ici on peut continuer le code séquentiellement (instruction après instruction : ' définition d'un MENU (par exemple) ou de la (les) FORM(s), et autres PICTURE,etc ' initialisations des constantes, etc. ' ou on fait appel aux sous- programmes (SUB / FNC / GOSUB) picture 10 : full_space 10 : 2d_target_is 10 : ' GUI xc = width_client(10)/2 : yc = height_client(10)/2 : ' initialisations des constantes caption 0,"<ESC> pour arrêter ..." : ' autre commande ' suite des instructions, des commandes, ... ' ------------------------------------------------------------------------------ ' Appel aux sous-progames (gestion du déroulement du programme) Demarrer() Connections(20) ' ------------------------------------------------------------------------------ ' Ici l'indispensable commande END (ou TERMINATE). ' Obligatoire seulement s'il y a du code qui continue en-dessous (SUB, FNC, etc) ' ------------------------------------------------------------------------------ END : ' !!! I N D I S P E N S A B L E !!!! rem ================= FIN DU MODULE PRINCIPAL ================================== ' les Sous-programmes SUB Demarrer() dim_local n,p : ' variables locales utilisées uniquement dans ce même S/P p = 10 : ' temporisation repeat for n = 30 to 3 step -1 : Connections(n) : pause p : next n for n = 3 to 30 : Connections(n) : pause p : next n until scancode = 27 END_SUB rem ============================================================================ SUB Connections(n) dim_local t1,t2,p,r p = 360/n : r = 200 degrees : cls for t1 = 0 to 360 step p for t2 = t1+p to 360 step p 2d_line xc+r*cos(t1),yc+r*sin(t1),xc+r*cos(t2),yc+r*sin(t2) next t2 next t1 END_SUB rem ============================================================================
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Les déboires de Yannick avec le compilateur... Jeu 4 Juil 2019 - 8:05 | |
| Bonjour à tous, @Papydall, Ton code fonctionne bien, mais il reste un petit problème. Pour sortir de ton programme on doit l'arrêter avec la touche [Esc] (Echape) du clavier ET ensuite fermer par la croix rouge du FORMulaire. Tout ça est normal. Le problème c'est que l'exécutable créer avec le compilateur reste en processus dans le gestionnaire des taches une fois qu'il est fermé. Je pense que c'est un bug du compilateur, j'attends l'avis de Jack... En attendant, il y a une solution: modifier le SUB Demarrer() comme suit. - Code:
-
SUB Demarrer() dim_local n,p : ' variables locales utilisées uniquement dans ce même S/P p = 10 : ' temporisation repeat for n = 30 to 3 step -1 : Connections(n) : pause p : next n for n = 3 to 30 : Connections(n) : pause p : next n until scancode = 27 TERMINATE END_SUB
OU ajouter un sous-programme "Fin:" appelé par ON_CLOSE 0,Fin A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 4 Juil 2019 - 11:41 | |
| Cela a donc changé. La dernière fois que j' ai demandé, on m' avait dit "ok pas de pb ca fonctionne" et là, misère, cela ne fonctionne plus. ( merci pour ta réponse Papydall ) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 5 Juil 2019 - 1:54 | |
| Bon, en v'là une autre.... J' ai rendu compilo compatible mon jeu des deux font la paire. La compilation se passe bien sauf que... J' ai deux timer dans ce jeu et si le premier fonctionne normalement, le deuxième prend le TGV et je me retrouve avec un dépassement du temps imparti pour résoudre la planche. Voilà le code source (je mets tout le reste dans un zip sur mon webdav : FLP.zip). - Code:
-
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' VARIABLES ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Incrémentation des objets dim no% ' Incrémentation des timers dim tpsM% dim tpsJ% ' Icon library dim Nicon% ' Variables de jeu dim TpsMemo% dim TpsResol% dim LapsTime% dim VLaps$ dim Mlaps% dim Slaps% dim Vmlaps$ dim Vslaps$ dim Grille%(36) dim Skin$ dim coup%(2) dim ncoup% dim pcoup% dim NumMask% dim NbreHide% dim Etat%
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' CONSTANTES ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' Titre et version dim Titre$ ' Dossier racine dim Path$ ' Disque dim Disq$ ' Dossier Annexes dim DirSkin$ dim DirTemp$ ' Fichiers dim Kgf$ dim Lib$ dim Param$ ' Fichiers en lecture/écriture dim F_or% dim F_ow% ' Objets Panoramic dim Mm% dim Sm%(20) dim Pict%(36) dim Mask%(36) dim BtnShot% dim TimerJeu% dim FenCxSkin% dim CombSkin% dim BtnSkin% ' Objets Kgf dim IL% dim SNAP%
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' LABELS ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
label Clic label ClicPicture label Chrono
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' DATA ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Data "Jeu","Options","Capture","A Propos","Aide" Data "Jouer","Arrêter","-","Quitter" Data "Temps de Mémorisation","Temps de Résolution","Images" Data "5 Secondes","10 Secondes","20 Secondes","30 Secondes" Data "1 Mn","1 Mn 30","2 Mn","2 Mn 30"
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' MAIN ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Init() Gui() end
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' PROCEDURES ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub Init() dim_local v$,m%,mess1$,mess2$,i% ' Initialisation des constantes Titre$="Faites la paire Vs 2.0" application_title Titre$ Path$=dir_current$ if right$(Path$,1)="" : Path$=left$(Path$,len(Path$)-1) : end_if Path$=Path$+"" Disq$=file_extract_disk$(Path$) DirSkin$=Path$+"Skin" DirTemp$=Disq$+"\Temp\FLP_Temp" Kgf$=Path$+"KGF.dll" Lib$=Path$+"ico.ilb" Param$=Path$+"Param.inf"
no%=no%+1 : F_or%=no% no%=no%+1 : F_ow%=no% no%=no%+1 : Mm%=no% for i%=1 to 20 : no%=no%+1 : Sm%(i%)=no% : next i% for i%=1 to 36 : no%=no%+1 : Pict%(i%)=no% : next i% for i%=1 to 36 : no%=no%+1 : Mask%(i%)=no% : next i% no%=no%+1 : BtnShot%=no% no%=no%+1 : TimerJeu%=no% no%=no%+1 : FenCxSkin%=no% no%=no%+1 : CombSkin%=no% no%=no%+1 : BtnSkin%=no% ' Vérification de l' intégrité des fichiers if dir_exists(DirSkin$)=0 m%=message_warning_ok("Dossier :"+chr$(13)+DirSkin$+chr$(13)+"Introuvable !") terminate end_if if file_exists(Kgf$)=0 m%=message_warning_ok("Fichier :"+chr$(13)+Kgf$+chr$(13)+"Introuvable !") terminate end_if if dir_exists(Disq$+"\Temp")=0 : dir_make Disq$+"\Temp" : end_if if dir_exists(DirTemp$)=0 : dir_make DirTemp$ : end_if ' Activation de la dll dll_on Kgf$ ' Création de l' imagelist du skin IL% = dll_call2("CreateImageList",70,70) ' Récupération des paramètres if file_exists(Param$)=1 file_open_read F_or%,Param$ v$=file_readln$(F_or%) : TpsMemo%=val(v$) v$=file_readln$(F_or%) : TpsResol%=val(v$) v$=file_readln$(F_or%) : Skin$=v$ file_close F_or% else TpsMemo%=30 TpsResol%=150 Skin$=DirSkin$+"defaut.ilb" end_if mess1$="Le fichier :"+chr$(13)+Skin$+chr$(13)+"est introuvable !"+chr$(13) mess1$=mess1$+"Vous allez jouer avec les images par défaut."
mess2$="Désolé !"+chr$(13)+"Il n' y a aucune images disponibles."+chr$(13)+chr$(13) mess2$=mess2$+"Téléchargez une librairie d' images sur le site de l' auteur"+chr$(13) mess2$=mess2$+"et installez là dans le dossier :"+chr$(13) mess2$=mess2$+DirSkin$ if file_exists(Skin$)=0 if Skin$<>DirSkin$+"defaut.ilb" if file_exists(DirSkin$+"defaut.ilb")=1 m%=message_information_ok(mess1$) Skin$=DirSkin$+"defaut.ilb" ChargeSkin() else m%=message_warning_ok(mess2$) terminate end_if else m%=message_warning_ok(mess2$) terminate end_if else ChargeSkin() end_if end_sub
sub Gui() dim_local i%,x%,y%,t%,l%,vr$ border_small 0 height 0,560 width 0,500 top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 color 0,0,128,0 caption 0,Titre$ main_menu Mm% for i%=1 to 5 : sub_menu Sm%(i%) : parent Sm%(i%),Mm% : next i% for i%=6 to 9 : sub_menu Sm%(i%) : parent Sm%(i%),Sm%(1) : next i% for i%=10 to 12 : sub_menu Sm%(i%) : parent Sm%(i%),Sm%(2) : next i% for i%=13 to 16 : sub_menu Sm%(i%) : parent Sm%(i%),Sm%(10) : next i% for i%=17 to 20 : sub_menu Sm%(i%) : parent Sm%(i%),Sm%(11) : next i% for i%=1 to 20 : read vr$ : caption Sm%(i%),vr$ : next i% for i%=1 to 20 if i%>2 and i%<>8 and i%<>10 and i%<>11 on_click Sm%(i%),Clic end_if next i% IconMenu() MarkMenu() t%=int((height_client(0)-430)/2) l%=int((width_client(0)-430)/2) i%=0 for x%=1 to 6 for y%=1 to 6 i%=i%+1 picture Pict%(i%) height Pict%(i%),70 width Pict%(i%),70 top Pict%(i%),t% left Pict%(i%),l% color Pict%(i%),0,0,0 Picture Mask%(i%) height Mask%(i%),70 width Mask%(i%),70 top Mask%(i%),t% left Mask%(i%),l% file_load Mask%(i%),DirTemp$+"Carte_"+str$(19)+".bmp" l%=l%+72 next y% l%=int((width_client(0)-430)/2) t%=t%+72 next x%
button BtnShot% hide BtnShot% height BtnShot%,24 width BtnShot%,24 top BtnShot%,height_client(0)-29 left BtnShot%,width_client(0)-29 cursor_point BtnShot% on_click BtnShot%,Clic timer TimerJeu% timer_off TimerJeu% timer_interval TimerJeu%,1000 on_timer TimerJeu%,Chrono end_sub
sub FormChoixSkin() dim_local i%,res% if object_exists(FenCxSkin%)=1 show FenCxSkin% else form FenCxSkin% border_small FenCxSkin% height FenCxSkin%,90 width FenCxSkin%,250 top FenCxSkin%,(screen_y-height(FenCxSkin%))/2 left FenCxSkin%,(screen_x-width(FenCxSkin%))/2 color FenCxSkin%,0,128,0 font_name FenCxSkin%,"Arial" font_size FenCxSkin%,8 font_bold FenCxSkin% caption FenCxSkin%,"Images" combo CombSkin% parent CombSkin%,FenCxSkin% width CombSkin%,width_client(FenCxSkin%)-39 top CombSkin%,int((height_client(FenCxSkin%)-height(CombSkin%))/2) left CombSkin%,5 button BtnSkin% parent BtnSkin%,FenCxSkin% height BtnSkin%,24 width BtnSkin%,24 top BtnSkin%,int((height_client(FenCxSkin%)-height(BtnSkin%))/2) left BtnSkin%,width_client(FenCxSkin%)-width(BtnSkin%)-5 cursor_point BtnSkin% on_click BtnSkin%,Clic end_if RempSkinList() res% = DLL_call2("WindowTopMost",handle(FenCxSkin%),1) end_sub
' ! Clic Menu Clic: ' Capture if number_click = Sm%(3) ' CaptureJeu() end_if ' A Propos if number_click = Sm%(4) end_if ' Aide if number_click = Sm%(5) end_if ' Jouer if number_click = Sm%(6) if Etat%=1 if message_warning_yes_no("Une partie est en cours !"+chr$(13)+"Etes vous sûr de vouloir commencer"+chr$(13)+"une nouvelle partie ?")=1 NewGame() end_if else NewGame() end_if end_if ' Arrêter if number_click = Sm%(7) if etat%=1 timer_off TimerJeu% if message_warning_yes_no("Etes vous sûr de vouloir arrêter ?")=1 MaskAllPicture(0) Etat%=0 caption 0,Titre$ else timer_on TimerJeu% end_if end_if end_if ' Quitter if number_click = Sm%(9) if etat%=1 if message_warning_yes_no("Une partie est en cours !"+chr$(13)+"Etes vous sûr quitter le jeu ")=1 etat%=0 timer_off TimerJeu% caption 0,Titre$ CleanTempDirectory() Quitter() end_if else CleanTempDirectory() Quitter() end_if end_if ' Choix des images if number_click = Sm%(12) if Etat%=0 FormChoixSkin() end_if end_if ' Tps mémorisation 5 secondes if number_click = Sm%(13) TpsMemo%=5 MarkMenu() SaveParam() end_if ' Tps mémorisation 10 secondes if number_click = Sm%(14) TpsMemo%=10 MarkMenu() SaveParam() end_if ' Tps mémorisation 20 secondes if number_click = Sm%(15) TpsMemo%=20 MarkMenu() SaveParam() end_if ' Tps mémorisation 30 secondes if number_click = Sm%(16) TpsMemo%=30 MarkMenu() SaveParam() end_if ' Tps résolution 60 secondes if number_click = Sm%(17) TpsResol%=60 MarkMenu() SaveParam() end_if ' Tps résolution 90 secondes if number_click = Sm%(18) TpsResol%=90 MarkMenu() SaveParam() end_if ' Tps résolution 120 secondes if number_click = Sm%(19) TpsResol%=120 MarkMenu() SaveParam() end_if ' Tps résolution 150 secondes if number_click = Sm%(20) TpsResol%=150 MarkMenu() SaveParam() end_if ' Bouton Snapshot if number_click = BtnShot% ' TakeSnapshot() end_if ' Bouton de choix du skin if object_exists(FenCxSkin%)=1 if number_click = BtnSkin% Skin$ = DirSkin$+text$(CombSkin%)+".ilb" ChargeSkin() SaveParam() if Etat%=0 ReloadSkin() end_if hide FenCxSkin% end_if end_if return ' -
' ! Clic Picture ClicPicture: timer_off TimerJeu% FindClickedMask() hide Mask%(NumMask%) ncoup%=ncoup%+1 coup%(ncoup%)=NumMask% if ncoup%=2 pcoup%=pcoup%+1 if grille%(coup%(1))=grille%(coup%(2)) ncoup%=0 coup%(1)=0 coup%(2)=0 NbreHide%=NbreHide%+2 if NbreHide%=36 timer_off TimerJeu% caption 0,Titre$ message "Bravo !!!"+chr$(13)+"Vous avez gagné cette partie."+chr$(13)+str$(pcoup%)+" Joués" Etat%=0 pcoup%=0 else timer_on TimerJeu% end_if else pause 500 show Mask%(coup%(1)) show Mask%(coup%(2)) ncoup%=0 coup%(1)=0 coup%(2)=0 timer_on TimerJeu% end_if else timer_on TimerJeu% end_if return ' -
' ! Chronos Chrono: LapsTime%=LapsTime%-1 if LapsTime>0 Mlaps%=int(LapsTime%/60) Slaps%=LapsTime%-(Mlaps%*60) Vmlaps$=str$(Mlaps%) if len(Vmlaps$)=1 : Vmlaps$="0"+Vmlaps$ : end_if Vslaps$=str$(Slaps%) if len(Vslaps$)=1 : Vslaps$="0"+Vslaps$ : end_if VLaps$="00 : "+Vmlaps$+" : "+Vslaps$ caption 0,Titre$+string$(50,chr$(32))+"Temps de jeu "+VLaps$ else timer_off TimerJeu% MaskAllPicture(0) Etat%=0 caption 0,Titre$ Message "Désolé !"+chr$(13)+"Le temps est écoulé, vous avez perdu la partie." end_if return ' -
sub ChargeSkin() dim_local i%,res%,v%,bmp$ res% = dll_call1("ClearImageList",IL%) pause 150 res% = dll_call2("LoadImageList",IL%,adr(Skin$)) pause 150 for i%=1 to 19 v%=i%-1 bmp$ = DirTemp$+"Carte_"+str$(i%)+".bmp" res% = dll_call5("ExtractImageFromImageList",IL%,v%,0,0,adr(bmp$)) next i% end_sub
sub IconMenu() dim_local res%,i%,ind%
Nicon% = dll_call2("SetMainMenuImageList",object_internal(Mm%),adr(Lib$)) if Nicon%>0 for i%=1 to 9 ind%=i%-1 if i%<>8 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(i%)),ind%) end_if pause 50 next i% res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(12)),15) end_if end_sub
sub MarkMenu() dim_local i%,res% for i%=10 to 16 mark_off Sm%(i%) if Nicon%>0 and i%<>12 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(i%)),10) end_if next i% res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(10)),10) select TpsMemo% case 5 mark_on Sm%(13) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(13)),9) res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(10)),11) end_if case 10 mark_on Sm%(14) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(14)),9) res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(10)),12) end_if case 20 mark_on Sm%(15) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(15)),9) res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(10)),13) end_if case 30 mark_on Sm%(16) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(16)),9) res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(10)),14) end_if end_select for i%=17 to 20 mark_off Sm%(i%) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(i%)),10) end_if next i% res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(11)),10) select TpsResol% case 60 mark_on Sm%(17) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(17)),9) res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(11)),11) end_if case 90 mark_on Sm%(18) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(18)),9) res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(11)),12) end_if case 120 mark_on Sm%(19) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(19)),9) res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(11)),13) end_if case 150 mark_on Sm%(20) if Nicon%>0 res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(20)),9) res% = dll_call2("SetSubMainMenuImageIndex",object_internal(Sm%(11)),14) end_if end_select end_sub
sub CaptureJeu() SNAP% = dll_call5("CreateScreenSnapshot",1,(screen_x-width(0))/2,(screen_y-height(0))/2,width(0),height(0)) show BtnShot% end_sub
sub TakeSnapshot() dim_local f$,res%,m% f$=mid$(date$,7,4)+mid$(date$,4,2)+mid$(date$,1,2)+"_" f$=f$+mid$(Time$,1,2)+mid$(Time$,4,2)+mid$(Time$,7,2)+".jpg" f$=Path$+"Capture_"+f$
' message f$+chr$(13)+str$(Snap%)+chr$(13)+str$(adr(f$)) res% = dll_call2("TakeScreenSnapshot",SNAP%,adr(f$)) if res%<0 m%=message_warning_ok("Désolé !"+chr$(13)+"Une erreur s' est produite, la capture a échouée.") end_if res% = dll_call1("DeleteScreenSnapshot",SNAP%) hide BtnShot% end_sub
sub SaveParam() file_open_write F_ow%,Param$ file_writeln F_ow%,str$(TpsMemo%) file_writeln F_ow%,str$(TpsResol%) file_writeln F_ow%,Skin$ file_close F_ow% end_sub
sub NewGame() Etat%=1 NbreHide%=0 LapsTime%=TpsResol% MaskAllPicture(0) Distribution() ShowAllPicture() ChronoMemo() if etat%=1 MaskAllPicture(1) timer_on TimerJeu% end_if end_sub
sub Distribution() dim_local i%,Nimg%,x%,nbr%,v$
for i%=1 to 36 : Grille%(i%)=0 : next i% for i%=1 to 36 repeat nbr%=0 Nimg%=int(rnd(18))+1 for x%=1 to 36 if grille%(x%)=Nimg% nbr%=nbr%+1 end_if next x% until nbr%<2 Grille%(i%)=Nimg% file_load Pict%(i%),DirTemp$+"Carte_"+str$(Nimg%)+".bmp" file_load Mask%(i%),DirTemp$+"Carte_"+str$(19)+".bmp" next i% end_sub
sub ChronoMemo() dim_local z%,t$,fin%
fin%=(TpsMemo%*1000)+Number_ticks while Number_ticks<>fin% z%=fin%-Number_ticks if z%<0 or etat%=0 : exit_while : end_if if z%>1000 and z%<10000 t$=left$(str$(z%),1) if len(t$)<2 : t$="0"+t$ : end_if else if z%>0 and z%<1000 t$="01" else t$=left$(str$(z%),2) if len(t$)<2 : t$="0"+t$ : end_if end_if end_if caption 0,Titre$+string$(50,chr$(32))+"Mémorisation 00 : 00 : "+t$ if z%=0 : exit_while : end_if end_while pause 200 caption 0,Titre$ end_sub
sub ShowAllPicture() dim_local i% for i%=1 to 36 hide Mask%(i%) next i% end_sub
sub MaskAllPicture(CP%) dim_local i% for i%=1 to 36 show Mask%(i%) if CP%=1 cursor_point Mask%(i%) on_click Mask%(i%),ClicPicture else cursor_default Mask%(i%) off_click Mask%(i%) end_if next i% end_sub
sub FindClickedMask() dim_local i% for i%=1 to 36 if number_click=Mask%(i%) NumMask%=i% exit_for end_if next i% end_sub
sub RempSkinList() dim_local a$,i%,it%
clear CombSkin% dir_change DirSkin$ a$=file_find_first$ if file_extract_extension$(a$)=".ilb" a$=file_extract_name$(a$) item_add CombSkin%,left$(a$,len(a$)-4) end_if a$=file_find_next$ while a$<>"_" if file_extract_extension$(a$)=".ilb" a$=file_extract_name$(a$) item_add CombSkin%,left$(a$,len(a$)-4) end_if a$=file_find_next$ end_while file_find_close dir_change Path$ if count(CombSkin%)>0 for i%=1 to count(CombSkin%) if item_read$(CombSkin%,i%)+".ilb"=file_extract_name$(Skin$) it%=i% exit_for end_if next i% ' item_select CombSkin%,it% text CombSkin%,item_read$(CombSkin%,it%) end_if end_sub
sub ReloadSkin() dim_local i%,img1$,img2$ img2$=DirTemp$+"Carte_"+str$(19)+".bmp" for i%=1 to 36 img1$=DirTemp$+"Carte_"+str$(grille%(i%))+".bmp" if grille%(i%)>0 file_load Pict%(i%),img1$ end_if file_load Mask%(i%),img2$ next i% end_sub
sub CleanTempDirectory() dim_local i%,bmp$ for i%=1 to 19 bmp$=DirTemp$+"Carte_"+str$(i%)+".bmp" if file_exists(bmp$)=1 file_delete bmp$ end_if next i% dir_remove DirTemp$ end_sub
sub Quitter() dim_local res% res% = dll_call1("KillProcessByHandle",handle(0)) end_sub | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 5 Juil 2019 - 19:04 | |
| Les programmes compilés laissent un processus en cours quand ils sont fermés par la croix. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Les déboires de Yannick avec le compilateur... Ven 5 Juil 2019 - 20:00 | |
| Hé oui Yannick, c'est un problème que j'ai signalé dans ce même post (juste avant tes 3 dernières interventions) et aussi ICI. Ce problème doit être facile à corriger pour Jack, du moins à mon avis. Ce problème devient une galère si on ne s'est pas aperçu du phénomène, car il peut y avoir autant de processus en cours que d'essais .... En attendant j'ai prévu une solution: ajouter un sous-programme "Fin:" appelé par ON_CLOSE 0,Fin - Code:
-
Fin: TERMINATE RETURN A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 6 Juil 2019 - 1:34 | |
| Ok Jean Claude, je vais prendre cette astuce en attendant. J' essaie de reprendre mes vieux prog en les rendant compatible pour le compilateur en attendant un retour peu probable de l'inspiration. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Les déboires de Yannick avec le compilateur... Sam 6 Juil 2019 - 7:40 | |
| Ah ! l'inspiration, c'est ce qu'il me manque aussi, actuellement...
Je te propose de faire un programme pour limiter le réchauffent climatique, car depuis le 15 juin c'est dur. Pas une seule journée en dessous de 35° et la nuit à 19° minimum (à 5H), le plus souvent 22°. C'est bien pour les jeunes, mais en vieillissant c'est plus difficile pour moi et comme je ne veux pas de clim.....
Bref !
A+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Les déboires de Yannick avec le compilateur... Sam 6 Juil 2019 - 7:59 | |
| Salut Yannick ! Ça fait plaisir de te retrouver sur le forum ! Pour l'inspiration t'inquiètes pas ça va revenir... | |
| | | Contenu sponsorisé
| Sujet: Re: Les déboires de Yannick avec le compilateur... | |
| |
| | | | Les déboires de Yannick avec le compilateur... | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |