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 |
|
|
| Une calculette basique pour les enfants | |
|
+3Minibug Yannick Jean Claude 7 participants | Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Une calculette basique pour les enfants Dim 30 Aoû 2015 - 11:59 | |
| Comme c'est dit dans le titre, cette calculette est destinée aux enfants. Elle ne fait qu'une opération à la fois. L' opération et son résultat sont affichés dans un list pour que l'enfant puisse visualiser ce qu'il tape. Les touches + - / * = , % sont contrôlées pour éviter les erreurs de saisie. - Code:
-
' Calculette_Basique par JC 08/2015 hide 0 application_title "CALCULETTE (Basique)" message string$(51," ")+"INFORMATION"+chr$(13)+"Cette calculette est destinée aux enfants. Elle ne fait qu'un calcul à la fois." Retourne_Dimension_Bandeau_Et_Bord() Dim_Label() Objets() show 0 reinit() END rem ============================================================================ clics: if number_click=bt_CE% then reinit() if number_click=bt_divise% then divise() if number_click=bt_multipli% then multipli() if number_click=bt_moins% then moins() if number_click=bt_virg% then virg() if number_click=bt_PC% then PC() if number_click=bt_plus% then plus() if number_click=bt_egal% then egal() if number_click=bt_0% then bt_0() if number_click=bt_1% then bt_1() if number_click=bt_2% then bt_2() if number_click=bt_3% then bt_3() if number_click=bt_4% then bt_4() if number_click=bt_5% then bt_5() if number_click=bt_6% then bt_6() if number_click=bt_7% then bt_7() if number_click=bt_8% then bt_8() if number_click=bt_9% then bt_9() RETURN
rem ============================================================================ SUB reinit() tour%=0 : nb=0 : nbP=0 : resultP=0 : nombre$="" : lig$="" : op$="" : mode$="" : inactive bt_PC% clear afi_result% : clear afi_op% : inactive bt_egal% : inactive_boutons() : active bt_virg% END_SUB
' les 4 opérations SUB divise() tour%=0 : active bt_virg% inactive_boutons() : op$="/" : clear afi_result% : lig$=lig$+" : " : affiche_lig() if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$="" END_SUB
SUB multipli() tour%=0 : active bt_virg% : active bt_PC% inactive_boutons() : op$="*" : clear afi_result% : lig$=lig$+" x " : affiche_lig() if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$="" END_SUB
SUB plus() tour%=0 : active bt_virg% : active bt_PC% inactive_boutons() : op$="+" : clear afi_result% : lig$=lig$+" + " : affiche_lig() if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$="" END_SUB
SUB moins() tour%=0 : active bt_virg% : active bt_PC% inactive_boutons() : op$="-" : clear afi_result% : lig$=lig$+" - " : affiche_lig() if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$="" END_SUB
' résultat SUB egal() if numeric(nombre$)=1 nb=val(nombre$) else if right$(nombre$,1)="%" and op$="*" nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%*" end_if if right$(nombre$,1)="%" and op$="+" nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%+" end_if if right$(nombre$,1)="%" and op$="-" nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%-" end_if end_if inactive bt_egal% : tour%=0 : active bt_virg% if op$="%*" then nbP=(nbP*nb)/100 if op$="%+" then nbP=nbP+((nbP*nb)/100) if op$="%-" then nbP=nbP-((nbP*nb)/100) if op$="+" then nbP=nbP+nb if op$="-" then nbP=nbP-nb if op$="*" then nbP=nbP*nb if op$="/" if nb<>0 nbP=nbP/nb else message "La division par zéro n'existe pas" : reinit() : EXIT_SUB end_if end_if clear afi_result% : lig$=lig$+" = "+str$(nbP) : affiche_lig() nb=0 : nombre$="" : mode$="F" : clear afi_result% : item_add afi_result%,str$(nbP) END_SUB
' la touche % SUB PC() inactive bt_PC% Ctrl_Mode() : nombre$=nombre$+"%" : affiche() : lig$=lig$+"%" : affiche_lig() END_SUB
' la virgule SUB virg() inactive bt_virg% if tour%=0 or mode$="F" then nombre$="0" : lig$=lig$+"0" nombre$=nombre$+"." : affiche() : lig$=lig$+"," : affiche_lig() if mode$="F" then inactive bt_egal% : mode$="" : lig$="0," : nbP=0 : affiche_lig() END_SUB
' les chiffres SUB bt_0() Ctrl_Mode() : nombre$=nombre$+"0" : affiche() : lig$=lig$+"0" : affiche_lig() END_SUB SUB bt_1() Ctrl_Mode() : nombre$=nombre$+"1" : affiche() : lig$=lig$+"1" : affiche_lig() END_SUB SUB bt_2() Ctrl_Mode() : nombre$=nombre$+"2" : affiche() : lig$=lig$+"2" : affiche_lig() END_SUB SUB bt_3() Ctrl_Mode() : nombre$=nombre$+"3" : affiche() : lig$=lig$+"3" : affiche_lig() END_SUB SUB bt_4() Ctrl_Mode() : nombre$=nombre$+"4" : affiche() : lig$=lig$+"4" : affiche_lig() END_SUB SUB bt_5() Ctrl_Mode() : nombre$=nombre$+"5" : affiche() : lig$=lig$+"5" : affiche_lig() END_SUB SUB bt_6() Ctrl_Mode() : nombre$=nombre$+"6" : affiche() : lig$=lig$+"6" : affiche_lig() END_SUB SUB bt_7() Ctrl_Mode() : nombre$=nombre$+"7" : affiche() : lig$=lig$+"7" : affiche_lig() END_SUB SUB bt_8() Ctrl_Mode() : nombre$=nombre$+"8" : affiche() : lig$=lig$+"8" : affiche_lig() END_SUB SUB bt_9() Ctrl_Mode() : nombre$=nombre$+"9" : affiche() : lig$=lig$+"9" : affiche_lig() END_SUB SUB Ctrl_Mode() if mode$="F" then inactive bt_egal% : mode$="" : lig$="" : nbP=0 : affiche_lig() if mode$="C" then active bt_egal% : inactive_boutons() if mode$="" then active_boutons() tour%=tour%+1 END_SUB ' l'affichage SUB affiche() clear afi_result% : item_add afi_result%,nombre$ END_SUB SUB affiche_lig() clear afi_op% : item_add afi_op%,lig$ END_SUB ' contrôle des boutons SUB inactive_boutons() inactive bt_divise% : inactive bt_multipli% : inactive bt_moins% : inactive bt_plus% END_SUB SUB active_boutons() active bt_divise% : active bt_multipli% : active bt_moins% : active bt_plus% END_SUB rem ============================================================================ SUB Dim_Label() dim no%,tour% dim nb,nbP,resultP dim virgul$,nombre$,lig$,op$,mode$ virgul$="." dim afi_result%,afi_op% dim bt_CE%,bt_divise%,bt_multipli%,bt_moins%,bt_virg%,bt_PC%,bt_plus%,bt_egal% dim bt_0%,bt_1%,bt_2%,bt_3%,bt_4%,bt_5%,bt_6%,bt_7%,bt_8%,bt_9% label fin,clics END_SUB ' ------------------------------------------------------------------------------ SUB Objets() ' Form 0 border_small 0 : caption 0,"CALCULETTE (Basique)" : width 0,400 height 0,302 : width 0,187 : top 0,(screen_y/2)-(height(0)/2) : left 0,(screen_x/2)-(width(0)/2) color 0,200,240,255 ' Afficheurs no%=no%+1 : afi_op%=no% : list no% : parent no%,0 ' font_name no%,"DejaVu Sans Mono" width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,20 : top no%,5 no%=no%+1 : afi_result%=no% : list no% : parent no%,0 ' font_name no%,"DejaVu Sans Mono" font_bold no% : font_size no%,14 width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,30 : top no%,top(afi_op%)+height(afi_op%)+2 ' les boutons ' la première rangée no%=no%+1 : bt_CE%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"C" top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(afi_result%) on_click no%,clics no%=no%+1 : bt_divise%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"/" top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_CE%)+width(bt_CE%)+1 on_click no%,clics no%=no%+1 : bt_multipli%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"*" top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_divise%)+width(bt_divise%)+1 on_click no%,clics no%=no%+1 : bt_moins%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"-" top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1 on_click no%,clics ' la deuxième rangée no%=no%+1 : bt_7%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"7" top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_CE%) on_click no%,clics no%=no%+1 : bt_8%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"8" top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_7%)+width(bt_7%)+1 on_click no%,clics no%=no%+1 : bt_9%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"9" top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_8%)+width(bt_8%)+1 on_click no%,clics ' la troisième rangée no%=no%+1 : bt_4%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"4" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_7%) on_click no%,clics no%=no%+1 : bt_5%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"5" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_8%) on_click no%,clics no%=no%+1 : bt_6%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"6" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_9%) on_click no%,clics ' quatrième rangée no%=no%+1 : bt_1%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"1" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_4%) on_click no%,clics no%=no%+1 : bt_2%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"2" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_5%) on_click no%,clics no%=no%+1 : bt_3%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"3" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_6%) on_click no%,clics ' cinquième rangée no%=no%+1 : bt_0%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"0" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_1%) on_click no%,clics no%=no%+1 : bt_PC%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"%" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_2%) on_click no%,clics no%=no%+1 : bt_virg%=no% : button no% : parent no%,0 : width no%,40 : height no%,40 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"," top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_3%) on_click no%,clics ' Bouton + no%=no%+1 : bt_plus%=no% : button no% : parent no%,0 : width no%,40 : height no%,80 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"+" top no%,top(afi_result%)+height(afi_result%)+height(bt_moins%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1 on_click no%,clics ' Bouton = no%=no%+1 : bt_egal%=no% : button no% : parent no%,0 : width no%,40 : height no%,80 font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"=" top no%,top(bt_3%) : left no%,left(bt_plus%) on_click no%,clics END_SUB rem ============================================================================ SUB Retourne_Dimension_Bandeau_Et_Bord() ' controle de la position de la procédure dans le programme IF NUMBER_OBJECTS>0 message "La SUB 'Retourne_Dimension_Bandeau_Et_Bord' doit être placée avant la création du premier objet !" terminate END_IF ' création des VARIABLES GLOBALES IF VARIABLE("bandeau%")=0 then DIM bandeau% IF VARIABLE("bord%")=0 then DIM bord% ' Calcul de bandeau% et bord% dim_local w0%,h0%,w1%,h1%,w2%,h2% w0%=WIDTH(0) : h0%=HEIGHT(0) picture 1 : full_space 1 : w1%=WIDTH(1) : h1%=HEIGHT(1) w2%=w0%-w1% : h2%=h0%-h1% : bandeau%=h2%-(w2%/2) : bord%=w2%/2 ' Suppression du Picture devenu inutile delete 1 END_SUB rem ============================================================================ fin: terminate RETURN
A+ PS: je ferais une version avec des boutons de couleurs pour la rendre attrayante. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 30 Aoû 2015 - 14:52 | |
| Elle est chouette cette calculette... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Une calculette basique pour les enfants Dim 30 Aoû 2015 - 15:11 | |
| Super la calculette jean Claude ! Quand GPP fonctionnera, il faudra qu'on la transpose... Ça sent la rentrée des classes tout ça ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une calculette basique pour les enfants Dim 30 Aoû 2015 - 15:34 | |
| Chouette, ça va me servir pour ma rentrée en CM2 ! Ma maîtresse va être contente (enfin, l'autre...) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une calculette basique pour les enfants Dim 30 Aoû 2015 - 17:19 | |
| Un bon vieux classique avec une version aux goûts du jour | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une calculette basique pour les enfants Dim 30 Aoû 2015 - 20:28 | |
| Merci pour vos commentaires sympas.
Je suis entrain de faire la version en image pour enfant.
A+ | |
| | | The Gamer
Nombre de messages : 110 Age : 30 Localisation : Toulouse (31) Date d'inscription : 11/05/2010
| | | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une calculette basique pour les enfants Lun 31 Aoû 2015 - 21:19 | |
| Merci The Gamer, @Tous, J'ai terminé la version spéciale enfant, mais comme j'ai remplacé les boutons par des images (picture), il faut la télécharger sur mon Webdav le dossier s’appelle "Calculette_Enfant.zip" J'ai un peu amélioré le code et je l'ai adapté aux "boutons_image". J'ai un bug (mineur): En cas de dépassement du nombre de caractère dans le LIST afi_result%. Ce bug est dans l'affichage du LIST afi_op%. Normalement, en passant par la SUB reinit(), ce LIST devrait être purgé et ce n'est pas le cas. Et je ne comprends pas pourquoi Pour provoquer ce bug (mineur) il faut taper 15 chiffres (sans opération) à la suite. Vous constaterez (Après le message) que l'afficheur du haut garde en mémoire le dernier chiffre tapé. Je ne vois pas pourquoi A+
Dernière édition par Jean Claude le Mar 1 Sep 2015 - 20:26, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une calculette basique pour les enfants Mar 1 Sep 2015 - 20:22 | |
| Quelqu'un s'est-il penché sur le bug décrit dans mon intervention précédente ?
De mon coté, je sèche.
A+
EDIT: je précise que je parle de la version "Enfant" à télécharger. | |
| | | Cobra
Nombre de messages : 14 Localisation : France Date d'inscription : 05/11/2009
| Sujet: Re: Une calculette basique pour les enfants Mar 1 Sep 2015 - 22:49 | |
| Salut Jean-Claude
Je pense que le problème vient de la ligne 126 (procédure bt). Après avoir fait un clear de la list, n$ contient toujours le dernier chiffre entré et la procédure affiche_lig() à la fin de la ligne 126 le ré-affiche
Bonne soirée | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une calculette basique pour les enfants Mer 2 Sep 2015 - 7:27 | |
| Bien vu Cobra, Pour ceux qui ont téléchargé, il suffit de remplacer la SUB bt(n$) par celle-ci. - Code:
-
SUB bt(n$) Ctrl_Mode() : nombre$=nombre$+n$ : lig$=lig$+n$ : n$="" : affiche() : affiche_lig() END_SUB
Merci Cobra, j'ai cherché longtemps sans voir ce qui était évident. A+ PS: Mon Webdav est à jour. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une calculette basique pour les enfants Lun 14 Sep 2015 - 8:31 | |
| Tel quel, la calculette a un petit bug avec la touche de la division. Voici le nouveau code qui va bien (les images restent les mêmes) - Code:
-
' Calculette_Basique par JC 08/2015 hide 0 application_title "CALCULETTE (Basique)" ' message string$(51," ")+"INFORMATION"+chr$(13)+"Cette calculette est destinée aux enfants. Elle ne fait qu'un calcul à la fois." Retourne_Dimension_Bandeau_Et_Bord() Dim_Label() Objets() show 0 reinit() END rem ============================================================================ clics: if number_click=bt_CE% then reinit() if number_click=bt_divise% then divise() if number_click=bt_multipli% then multipli() if number_click=bt_moins% then moins() if number_click=bt_virg% then virg() if number_click=bt_PC% then PC() if number_click=bt_plus% then plus() if number_click=bt_egal% then egal() if number_click=bt_0% then bt("0") if number_click=bt_1% then bt("1") if number_click=bt_2% then bt("2") if number_click=bt_3% then bt("3") if number_click=bt_4% then bt("4") if number_click=bt_5% then bt("5") if number_click=bt_6% then bt("6") if number_click=bt_7% then bt("7") if number_click=bt_8% then bt("8") if number_click=bt_9% then bt("9") RETURN
rem ============================================================================ SUB reinit() tour%=0 : nb=0 : nbP=0 : nombre$="" : lig$="" : op$="" : mode$="" : inactive bt_PC% clear afi_op% : clear afi_result% : inactive bt_egal% : inactive_boutons() : active bt_virg% Ctrl_bouton() : set_focus 0 END_SUB SUB Ctrl_bouton() if active(bt_egal%)=0 then file_load bt_egal%,"egal_nb.bmp" if active(bt_egal%)=1 then file_load bt_egal%,"egal.bmp" if active(bt_virg%)=0 then file_load bt_virg%,"virgule_nb.bmp" if active(bt_virg%)=1 then file_load bt_virg%,"virgule.bmp" if active(bt_PC%)=0 then file_load bt_PC%,"Pourcentage_nb.bmp" if active(bt_PC%)=1 then file_load bt_PC%,"Pourcentage.bmp" if active(bt_plus%)=0 then file_load bt_plus%,"plus_nb.bmp" if active(bt_plus%)=1 then file_load bt_plus%,"plus.bmp" if active(bt_moins%)=0 then file_load bt_moins%,"moins_nb.bmp" if active(bt_moins%)=1 then file_load bt_moins%,"moins.bmp" if active(bt_multipli%)=0 then file_load bt_multipli%,"multiplication_nb.bmp" if active(bt_multipli%)=1 then file_load bt_multipli%,"multiplication.bmp" if active(bt_divise%)=0 then file_load bt_divise%,"division_nb.bmp" if active(bt_divise%)=1 then file_load bt_divise%,"division.bmp" END_SUB
' les 4 opérations SUB divise() tour%=0 : active bt_virg% inactive_boutons() : op$="/" : clear afi_result% : lig$=lig$+" : " : affiche_lig() if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$="" END_SUB SUB multipli() tour%=0 : active bt_virg% : active bt_PC% inactive_boutons() : op$="*" : clear afi_result% : lig$=lig$+" x " : affiche_lig() if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$="" END_SUB SUB plus() tour%=0 : active bt_virg% : active bt_PC% inactive_boutons() : op$="+" : clear afi_result% : lig$=lig$+" + " : affiche_lig() if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$="" END_SUB SUB moins() tour%=0 : active bt_virg% : active bt_PC% inactive_boutons() : op$="-" : clear afi_result% : lig$=lig$+" - " : affiche_lig() if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$="" END_SUB ' résultat SUB egal() if numeric(nombre$)=1 nb=val(nombre$) else if right$(nombre$,1)="%" and op$="*" nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%*" end_if if right$(nombre$,1)="%" and op$="+" nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%+" end_if if right$(nombre$,1)="%" and op$="-" nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%-" end_if end_if inactive bt_egal% : tour%=0 : active bt_virg% if op$="%*" then nbP=(nbP*nb)/100 if op$="%+" then nbP=nbP+((nbP*nb)/100) if op$="%-" then nbP=nbP-((nbP*nb)/100) if op$="+" then nbP=nbP+nb if op$="-" then nbP=nbP-nb if op$="*" then nbP=nbP*nb if op$="/" if nb<>0 nbP=nbP/nb else message "La division par zéro n'existe pas" : reinit() : EXIT_SUB end_if end_if clear afi_result% : lig$=lig$+" = "+str$(nbP) : affiche_lig() nb=0 : nombre$="" : mode$="F" : clear afi_result% : item_add afi_result%,str$(nbP) Ctrl_bouton() END_SUB ' la touche % SUB PC() inactive bt_PC% Ctrl_Mode() : nombre$=nombre$+"%" : affiche() : lig$=lig$+"%" : affiche_lig() Ctrl_bouton() END_SUB ' la virgule SUB virg() inactive bt_virg% : Ctrl_bouton() if tour%=0 or mode$="F" then nombre$="0" : lig$=lig$+"0" nombre$=nombre$+"." : affiche() : lig$=lig$+"," : affiche_lig() if mode$="F" then inactive bt_egal% : mode$="" : lig$="0," : nbP=0 : affiche_lig() END_SUB ' les chiffres SUB bt(n$) Ctrl_Mode() : nombre$=nombre$+n$ : lig$=lig$+n$ : n$="" : affiche() : affiche_lig() END_SUB SUB Ctrl_Mode() Ctrl_bouton() if mode$="F" then inactive bt_egal% : mode$="" : lig$="" : nbP=0 : affiche_lig() if mode$="C" then active bt_egal% : inactive_boutons() if mode$="" then active_boutons() tour%=tour%+1 END_SUB ' l'affichage SUB affiche() if len(nombre$)>14 then message " 14 chiffres maximum ! " : reinit() : Exit_Sub clear afi_result% : item_add afi_result%,nombre$ END_SUB SUB affiche_lig() clear afi_op% if len(lig$)>26 then Exit_Sub item_add afi_op%,lig$ END_SUB ' contrôle des boutons SUB inactive_boutons() inactive bt_divise% : inactive bt_multipli% : inactive bt_moins% : inactive bt_plus% Ctrl_bouton() END_SUB SUB active_boutons() active bt_divise% : active bt_multipli% : active bt_moins% : active bt_plus% Ctrl_bouton() END_SUB rem ============================================================================ SUB Dim_Label() dim no%,tour% dim nb,nbP dim virgul$,nombre$,lig$,op$,mode$ virgul$="." dim afi_result%,afi_op% dim bt_CE%,bt_divise%,bt_multipli%,bt_moins%,bt_virg%,bt_PC%,bt_plus%,bt_egal% dim bt_0%,bt_1%,bt_2%,bt_3%,bt_4%,bt_5%,bt_6%,bt_7%,bt_8%,bt_9% label fin,clics END_SUB ' ------------------------------------------------------------------------------ SUB Objets() ' Form 0 border_small 0 : caption 0,"CALCULETTE (Basique)" : width 0,400 height 0,302 : width 0,187 : top 0,(screen_y/2)-(height(0)/2) : left 0,(screen_x/2)-(width(0)/2) color 0,150,240,255 ' Afficheurs no%=no%+1 : afi_op%=no% : list no% :' font_bold no% width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,20 : top no%,5 no%=no%+1 : afi_result%=no% : list no% : color no%, 255,255,0 font_color no%,0,100,255 font_bold no% : font_size no%,14 width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,30 : top no%,top(afi_op%)+height(afi_op%)+2 ' les boutons ' la première rangée no%=no%+1 : bt_CE%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"clear.bmp" top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(afi_result%) on_click no%,clics no%=no%+1 : bt_divise%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"division.bmp" top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_CE%)+width(bt_CE%)+1 on_click no%,clics no%=no%+1 : bt_multipli%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"multiplication.bmp" top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_divise%)+width(bt_divise%)+1 on_click no%,clics no%=no%+1 : bt_moins%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"moins.bmp" top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1 on_click no%,clics ' la deuxième rangée no%=no%+1 : bt_7%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"7.bmp" top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_CE%) on_click no%,clics no%=no%+1 : bt_8%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"8.bmp" top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_7%)+width(bt_7%)+1 on_click no%,clics no%=no%+1 : bt_9%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"9.bmp" top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_8%)+width(bt_8%)+1 on_click no%,clics ' la troisième rangée no%=no%+1 : bt_4%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"4.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_7%) on_click no%,clics no%=no%+1 : bt_5%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"5.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_8%) on_click no%,clics no%=no%+1 : bt_6%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"6.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_9%) on_click no%,clics ' quatrième rangée no%=no%+1 : bt_1%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"1.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_4%) on_click no%,clics no%=no%+1 : bt_2%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"2.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_5%) on_click no%,clics no%=no%+1 : bt_3%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"3.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_6%) on_click no%,clics ' cinquième rangée no%=no%+1 : bt_0%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"0.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_1%) on_click no%,clics no%=no%+1 : bt_PC%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"Pourcentage.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_2%) on_click no%,clics no%=no%+1 : bt_virg%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"virgule.bmp" top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_3%) on_click no%,clics ' Bouton + no%=no%+1 : bt_plus%=no% : picture no% : width no%,40 : height no%,80 : file_load no%,"plus.bmp" top no%,top(afi_result%)+height(afi_result%)+height(bt_moins%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1 on_click no%,clics ' Bouton = no%=no%+1 : bt_egal%=no% : picture no% : width no%,40 : height no%,80 : file_load no%,"egal.bmp" top no%,top(bt_3%) : left no%,left(bt_plus%) on_click no%,clics END_SUB rem ============================================================================ SUB Retourne_Dimension_Bandeau_Et_Bord() ' controle de la position de la procédure dans le programme IF NUMBER_OBJECTS>0 message "La SUB 'Retourne_Dimension_Bandeau_Et_Bord' doit être placée avant la création du premier objet !" terminate END_IF ' création des VARIABLES GLOBALES IF VARIABLE("bandeau%")=0 then DIM bandeau% IF VARIABLE("bord%")=0 then DIM bord% ' Calcul de bandeau% et bord% dim_local w0%,h0%,w1%,h1%,w2%,h2% w0%=WIDTH(0) : h0%=HEIGHT(0) picture 1 : full_space 1 : w1%=WIDTH(1) : h1%=HEIGHT(1) w2%=w0%-w1% : h2%=h0%-h1% : bandeau%=h2%-(w2%/2) : bord%=w2%/2 ' Suppression du Picture devenu inutile delete 1 END_SUB rem ============================================================================ fin: terminate RETURN A+ | |
| | | Contenu sponsorisé
| Sujet: Re: Une calculette basique pour les enfants | |
| |
| | | | Une calculette basique pour les enfants | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |