Stop Tabac

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Stop Tabac

Message par flaith »

Bonjour à Tous,
après qq jours sur PureBASIC, je vous livre mon 1er programme, qui casse pas 3 pattes à un canard, mais bref.
Je l'ai fait car j'ai arrété de fumer et je me suis dit qu'il serait bien d'afficher (à chaque démarrage de mon micro) le montant économisé.

Code : Tout sélectionner

; ************************************************************
; * Project Name: StopTabac
; * Author(s)   : Nicolas 'Flaith' Djurovic
; * Date Started: 04/16/2005
; * Last Updated: 04/18/2005
; * Website     : http://flaith.free.fr
; * Email       : flaith@wanadoo.fr
; * Version     : 2.0
; * Copyright   : CopyLeft 2005 Flaith
; * Licence     : GPL
; * PB Version  : 3.93
; ************************************************************
;
; Procédures utilisées
; --------------------
; Procédures calcul de date
; Auteur : Paneric
; Date : 22/09/2004
;
; Librairie extérieure utilisée
; -----------------------------
; PureCOLOR Librairies v8
; Auteur : Philippe 'gnozal' Guntz
; Date : 02/04/2005

;- Globals
;
Global d.l,m.l,y.l
Global D1.l,M1.l,Y1.l
Global l1$,l2$,l3$,l4$,l5$,l6$
Global Appli_Name$,Version_Appli$
Global NBPaquet.f,PrixPaquet.f,Euro.f
Global NBPaquet_txt$,PrixPaquet_txt$,Euro_txt$

;- Window Constants
;
Enumeration
  #Window
EndEnumeration

;- Gadget Constants
;
Enumeration
  #ALTF4
  #Frame3D
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_5
  #Button
  #Text_Date
  #Text_Today
  #Text_Diff
  #Text_gagne
  #Text_gagen_fr
  #Text_euro
  #Text_fr
EndEnumeration

;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Verdana Ref", 10)
Global FontID2
FontID2 = LoadFont(2, "Courier New", 10)
Global FontID3
FontID3 = LoadFont(3, "Courier New", 12)

;- Procédures
;
Procedure.l NombredeJoursduMois(mois.l, annee.l)
  longueurdumois.l = 0
  If mois = 4 Or mois = 8 Or mois = 9 Or mois = 11
    longueurdumois = 30
  Else
    If mois = 2
      If annee % 4 = 0
        If annee%100 = 0 And annee%400 <> 0
          longueurdumois = 28
        Else
          longueurdumois = 29
        EndIf
      Else
        longueurdumois = 28
      EndIf
    Else
      longueurdumois = 31
    EndIf
  EndIf
  ProcedureReturn longueurdumois
EndProcedure

Procedure.l NombredeJoursentreDate(jour1.l, mois1.l, annee1.l, jour2.l, mois2.l, annee2.l)
  Intervalle.l = 0
  m.l = 0
  If annee1 + 1 <= annee2 - 1
    For j.l = annee1.l To annee2.l
      longueurdumois.l = NombredeJoursduMois(2, j)
      If longueurdumois = 28
        Intervalle + 365
      Else
        Intervalle + 366
      EndIf
    Next j
  EndIf
  If annee1 < annee2
    send.l = 12
  Else
    send = mois2 - 1
  EndIf
  If mois1 < send
    For m = mois1 + 1 To send
      Intervalle + NombredeJoursduMois(m, annne1)
    Next m
  EndIf
  If mois2 > 1 And send = 12
    For m = 1 To mois2 - 1
      Intervalle + NombredeJoursduMois(m, annne2)
    Next m
  EndIf
  If (mois1 = mois2) And (annee1 = annee2)
    Intervalle = jour2 - jour1
  Else
    Intervalle + (NombredeJoursduMois(mois1, annee1) - jour1)
    Intervalle + jour2
  EndIf
  ProcedureReturn Intervalle
EndProcedure

Procedure Load_Prefs()
  ValReturn=0
  If OpenPreferences("StopTabac.prefs")
    PreferenceGroup("InfoAppli")
    Appli_Name$     = ReadPreferenceString("ApplicationName", "")
    Version_Appli$  = ReadPreferenceString("Version", "")

    PreferenceGroup("Global")
    D1.l            = ReadPreferenceLong ("JourDeb", 0)
    M1.l            = ReadPreferenceLong ("MoisDeb", 0)
    Y1.l            = ReadPreferenceLong ("AnneeDeb", 0)
    
    NBPaquet.f      = ReadPreferenceFloat ("NBPaquet", 0.0)
    PrixPaquet.f    = ReadPreferenceFloat ("PrixPaquet", 0.0)
    Euro.f          = ReadPreferenceFloat ("Euro", 0.0)
    
    NBPaquet_txt$   = ReadPreferenceString("NBPaquet", "")
    PrixPaquet_txt$ = ReadPreferenceString("PrixPaquet", "")
    Euro_txt$       = ReadPreferenceString("Euro", "")    
    ClosePreferences()
  Else 
    MessageRequester("Erreur","Fichier "+Chr(34)+"StopTabac.prefs"+Chr(34)+" inexistant !", #PB_MessageRequester_Ok)
    ValReturn = 1
    ProcedureReturn ValReturn
  EndIf
EndProcedure  
;
Procedure CheckDate()
  ; Si pb avec fichier prefs, on quitte
  If Load_Prefs() = 1
    End
  EndIf
  
  ; Date du jour
  y.l = Year(Date())
  m.l = Month(Date())
  d.l = Day(Date())

  ; Nbre de jours depuis l'arrêt
  diff.f = NombredeJoursentreDate(D1, M1, Y1,d, m, y)
  diff - 1      ;j'enlève une journée car il faut qu'elle soit finie
  
  ; Calcul des montants économisés (en Euro et Franc)
  prix_paquet_clope.f = PrixPaquet.f * NBPaquet.f
  money.f = diff.f * prix_paquet_clope.f
  moneyfranc.f = money.f * Euro.f ;6.55957

  ; Prépare l'affichage des valeurs
  l1$ = Str(D1)+"/"+Str(M1)+"/"+Str(Y1)
  l2$ = Str(d)+"/"+Str(m)+"/"+Str(y)+l0$
  l3$ = Str(diff)+" Jours"
  l4$ = StrF(money.f,2)
  l5$ = StrF(moneyfranc.f,2)
  l6$ = "Montant pour "+NBPaquet_txt$+" paquet(s) par jour à "+PrixPaquet_txt$+"€ le paquet !"
EndProcedure

; CallBack pour PureCOLOR
Procedure.l WindowCallBack(WindowID.l, message.l, wParam.l, lParam.l) 
  ReturnValue.l = #PB_ProcessPureBasicEvents
  ;
  ReturnValue = PureCOLOR_CallBack(WindowID, message, wParam, lParam, ReturnValue)
  ;
  ProcedureReturn ReturnValue 
EndProcedure

Procedure Open_Window()
  If OpenWindow(#Window, 216, 0, 371, 271,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered , "Stop Tabac")
    If CreateGadgetList(WindowID())
      AddKeyboardShortcut(0, #PB_Shortcut_F4 | #PB_Shortcut_Alt, #ALTF4)
      Frame3DGadget(#Frame3D, 10, 10, 350, 210, "")
      SetGadgetFont(#Frame3D, FontID1)
      TextGadget(#Text_0, 20, 30, 160, 20, "Date arrêt     :")
      SetGadgetFont(#Text_0, FontID3)
      TextGadget(#Text_1, 20, 50, 160, 20, "Date du jour   :")
      SetGadgetFont(#Text_1, FontID3)
      TextGadget(#Text_2, 20, 70, 160, 20, "Différence     :")
      SetGadgetFont(#Text_2, FontID3)
      TextGadget(#Text_3, 20, 110, 160, 20, "J'ai économisé :")
      SetGadgetFont(#Text_3, FontID3)
      TextGadget(#Text_4, 20, 130, 160, 20, "Soit           :")
      SetGadgetFont(#Text_4, FontID3)
      TextGadget(#Text_5, 20, 170, 330, 40, l6$, #PB_Text_Center | #PB_Text_Border)
      SetGadgetFont(#Text_5, FontID2)
      ButtonGadget(#Button, 140, 230, 90, 30, "Ok")
      SetGadgetFont(#Button, FontID3)
      
      TextGadget(#Text_Date, 190, 30, 120, 20, l1$, #PB_Text_Center | #PB_Text_Border)
      SetGadgetFont(#Text_Date, FontID3)
      TextGadget(#Text_Today, 190, 50, 120, 20, l2$, #PB_Text_Center | #PB_Text_Border)
      SetGadgetFont(#Text_Today, FontID3)
      TextGadget(#Text_Diff, 190, 70, 120, 20, l3$, #PB_Text_Center | #PB_Text_Border)
      SetGadgetFont(#Text_Diff, FontID3)
      TextGadget(#Text_gagne, 190, 110, 100, 20, l4$, #PB_Text_Right | #PB_Text_Border)
      SetGadgetFont(#Text_gagne, FontID3)
      TextGadget(#Text_gagen_fr, 190, 130, 100, 20, l5$, #PB_Text_Right | #PB_Text_Border)
      SetGadgetFont(#Text_gagen_fr, FontID3)
      TextGadget(#Text_euro, 290, 112, 20, 20, "€")
      SetGadgetFont(#Text_euro, FontID3)
      TextGadget(#Text_fr, 290, 132, 20, 20, "Fr")
      SetGadgetFont(#Text_fr, FontID3)
      
    EndIf
  EndIf

  ; Crée un raccourci clavier CTRL+O sur la fenêtre #Window
  ; qui generera un evenement de valeur #CTRL_O.
  AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_O, #Button)

EndProcedure

Procedure Make_Color()
  PureCOLOR_SetGadgetColor(#Text_Date,     #White, BackColor.l)
  PureCOLOR_SetGadgetColor(#Text_Today,    #White, BackColor.l)
  PureCOLOR_SetGadgetColor(#Text_Diff,     #White, BackColor.l)
  PureCOLOR_SetGadgetColor(#Text_gagne,    #White, BackColor.l)
  PureCOLOR_SetGadgetColor(#Text_gagen_fr, #White, BackColor.l)
  PureCOLOR_SetGadgetColor(#Text_5,        #Black, #White)
EndProcedure

;- Programme Principal
;
Quit = 0

CheckDate()
Open_Window()
SetWindowCallback(@WindowCallBack()) 
Make_Color()

Repeat
  Event = WaitWindowEvent() ; on récupère les évènements
  
  If Event = #PB_Event_CloseWindow 
    Quit = 1
  EndIf
  
  If Event = #PB_EventGadget ; si on appuie sur un gadget
    Select EventGadgetID()
      Case #Button ; on appuie sur le bouton OK
        Quit = 1
    EndSelect
  EndIf
  
  If Event = #PB_EventMenu
    Select EventMenuID()
      Case #ALTF4   ; Alt-F4
        Quit = 1
      Case #Button  ; ou Ctrl-O pour quitter
        Quit = 1
    EndSelect
  EndIf 
  
Until Quit = 1 
Fichier des preferences : StopTabac.prefs

Code : Tout sélectionner

[InfoAppli]
ApplicationName = StopTabac
Version = 2.0
;
; Les variables globales
;
[Global]
; Date début arrêt du tabac
JourDeb = 28
MoisDeb = 1
AnneeDeb = 2005
; Nombre de paquet fumé par jour
NBPaquet = 1.5
PrixPaquet = 5.60
Euro = 6.559570
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

:) Excellent fouteur de boules ton programme, pour ceux qui fument encore !

Moi, je fume la pipe :lol: et quand je vais chez le buraliste, je sais combien ça me coûte :mad:
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Arf, je sais :D c'est le but, ca me fait plaisir de voir combien ca m'aurait couté si j'avais continué à fumer !
J'ai envoyé le prog à qq potes gros fumeur, ca les calme 8O
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Je ferais bien voir ça à mon père mais je vais me prendre des baffes :cry:
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Oliv a écrit :Je ferais bien voir ça à mon père mais je vais me prendre des baffes :cry:
Moi je le regarderais bien, mais je me metrais des baffes aussi :roll:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oh :lol: des baffes

pourtant qu'est-ce que les fumeurs claquent en pognon :
Pour flaith, en un an ça donne :
1.5*5.6*365 = 3066€ (soit plus de 20000F) :!:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Pendant un moment mon père (mais heuresement pour sa santé ET son compte en banque) c'était 2 paquets de gitanes par jour (il y a 4-5 ans, c'était un peu moins chère mais bon...) : calculez le prix :cry:
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

ton programme marche pas
quand je lance il trouve pas le fichier StopTabac.prefs...
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

bernard13 a écrit :ton programme marche pas
quand je lance il trouve pas le fichier StopTabac.prefs...
La dernière partie du code citée plus haut doit être enregistrée sous ce nom :wink:
Répondre