PureBasic

Forums PureBasic
Nous sommes le Sam 04/Juil/2020 21:48

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 48 messages ]  Aller à la page Précédente  1, 2, 3, 4  Suivante
Auteur Message
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Mer 04/Juil/2018 18:36 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 9001
Regarde aussi du côté de openpreferences()

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.6x / 5.7x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Mer 04/Juil/2018 19:55 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
... En vrai, je n'ai aucune idée de comment débuter avec PB aujourd'hui.

Faut il commencer en utilisant la boucle d’event ou apprendre directement à utiliser des callbacks ?
Faut il commencer par bricoler un peu partout ou directement apprendre à écrire sous forme de modules ?

En gros, faut il commencer rapidement ou prendre le temps d'apprendre les bonnes manières, en sachant que la première solution va donner des résultats plus rapides mais aussi ancrer de mauvais réflexes?

...

Bref, pour la sauvegarde, si tu utilises des structures, il y a une solution beaucoup plus simple : le json. Pour reprendre l'exemple de Boby :
Code:
Structure animal
  faim.i
  sommeil.i
  soif.i
  joie.i
EndStructure

Global pet.animal

pet\faim = 1
pet\sommeil = 2
pet\soif = 3
pet\joie = 4

If CreateJSON(0)
   InsertJSONStructure(JSONValue(0), @pet, animal)
   SaveJSON(0,GetTemporaryDirectory()+"save")
EndIf


et pour charger :
Code:
Structure animal
  faim.i
  sommeil.i
  soif.i
  joie.i
EndStructure

Global pet.animal

If LoadJSON(0, GetTemporaryDirectory()+"save")
   ExtractJSONStructure(JSONValue(0), @pet, animal)
EndIf

Debug pet\faim
Debug pet\soif
Debug pet\sommeil
Debug pet\joie


L'avantage du json, c'est que ça reflète directement la mémoire de ton programme, pas besoin de rentrer manuellement chaque champ de la structure. En plus, ça permet de prendre des objets complexes comme des listes chaînées ou des tableaux. C'est un peu plus dur à utiliser au début, mais ça va te faire gagner teeeeellement de temps sur la suite...

Et je foutrais une baffe à Boby le weekend prochain histoire de lui apprendre à lire la doc en entier è_é


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 7:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2264
Localisation: 50200 Coutances
Cette idée de projet m'en a donner une autre : c'est d'un programme de prise de rendez-vous où on peut régler l'heure de rappel du rendez-vous, le programme étant juste en sommeil dans le systray et s'éveillant au bon moment.

Merci FR4NK13 pour cette idée géniale que tu as eut.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.72 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 11:51 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 9001
@Poshu.
Tu n'as pas tord sur ce doute de "comment débuter en PB". Mais c'est aussi une de ses forces que de proposer plusieurs approches. Pour la grande majorité (à mon avis), nous sommes des hobbyistes de la prog. "Les bonnes manières" sont relatives à nos besoins.
Certes utiliser les nouveaux Callbacks (bind) et les modules peuvent s'avérer utiles et même plus efficaces pour certains projets, mais pour de petits codes/projets, je suis plus d'avis d'y aller au plus simple/facile/traditionnel. Il sera toujours bon d'apprendre et utiliser les fonctions (un peu) plus complexes une fois les rouages de PB maitrisés.
@FR4NK13
Alors tu t'en sors ? :P

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.6x / 5.7x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 12:54 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Coucou à tous et merci pour vos messages.
Je trouve un peu de temps donc je repasse par ici pour reprendre mon programme.

Je suis un peu perdue à vrai dire je me sens noyée sous vos nombreux messages :oops:

Je vais essayer de reprendre dans l'ordre et méthodiquement pour n’oublier personne.


Ar-S

- Merci pour ton code modifié que je garde de côté :)
- openpreferences() sert à quoi, ouvrir le fichier sauvegarder avec les données ?


Microdev :

merci pour tes « plans » j’avoue que c’est l’un de mes (nombreux) points faibles…
Que me recommanderais-tu à la place des timers ?
Boby :

Merci pour ton code, mais je ne comprends pas vraiment son fonctionnement, je vois une structure et des variables, ainsi que l’enregistrement de leur valeur qui est 0 par défaut mais comment cela sauvegarde l’évolution de l’animal ? Je dois faire un lien avec mon système de point déjà établi j’imagine.

- A quoi correspond le \ des variables ?
- A quoi correspond « WriteInteger » ? (Je ne comprends pas la doc, ça parle d’un fichier mais je n’en vois pas dans ton code) 
- Pour charger les données, je ne comprends pas, pourquoi deletefile ? Si cela efface les données, comment les récupérer ensuite ?

Autant je comprends « +save » qui sauvegarde, autant je ne comprends pas son but dans le chargement, dans le deuxième code ?

Poshu : Merci pour ton code, le Json a l’air simple, je vais tester :)

Mircoute : Ah bah, ravie d’avoir pu t’inspirer:)


Et oui Ar-s, j’ai enfin fini de répondre à tout le monde, j’ai eu du mal à trouver le temps ces derniers jours ^^’’

Maintenant je fais quelques tests avec tous vos codes en espérant que mon PC n’explose pas mouahahaha

Et je reviens vous poser mes mille et une questions, merci encore:)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 13:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 9001
Le \ sert à informer le soft que la variable demandée fait partie d'une structure.

Code:
Structure Truc
  A.b
  B.b
EndStructure

Global MaVariable.Truc ; MaVariable va utiliser les param A et B de la structure Truc

; On définit la valeur de A et B pour Mavariable
Mavariable\A = 1
Mavariable\B = 0

; On vérifie
Debug  Mavariable\A
Debug  Mavariable\B


OpenPreference sert bien pour charger/sauver des données dans un fichiers texte.
C'est une variante à la solution JSON que poshu t'a donné.

Regarde dans l'index de la doc OpenPreferences, l'exemple est claire. Ensuite en bas de page clique sur "Preference index", tu auras toutes les commandes liées.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.6x / 5.7x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 14:56 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Merci pour l'explication :)

Est-ce qu'il y a moyen de générer un chiffre aléatoire que l'on pourrait enregistrer définitivement dans la variable en la sauvegardant ?

Exemple ;

si VariableSexe = 1 le chat est un mâle, si VariableSexe = 2 le chat est une femelle.

J'ai essayé de mettre (Random (2,1)) dans le code avec le Json de Poshu comme ceci

pet\faim = (Random(2,1))

sauf que bien entendu le chiffre généré aléatoirement change tout le temps, il ne se sauvegarde pas.


Dernière édition par FR4NK13 le Jeu 05/Juil/2018 15:05, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 14:59 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6931
Localisation: IDF (Yvelines)
Citation:
sauf que bien entendu le chiffre généré aléatoirement change tout le temps, il ne se sauvegarde pas.
Une fois que ta variable à recu 1 ou 2 ne cherche pas à lui donner une autre valeur.

Une piste de réflexion : if .... endif :wink:

_________________

➽ Config PureBasic : Windows 10 - PB 5.72 LTS

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 15:03 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
C'est à dire ? je ne comprends pas :lol:

EDIT : On peut "bloquer" la valeur reçue aléatoirement et la sauvegarder définitivement avec une simple condition ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 15:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6931
Localisation: IDF (Yvelines)
Voila un code trés simple que tu sauvegarderas dans un dossier

L'objectif principal de ce code et de te montrer comment sauvegarder les paramètres de ton Tamagoshi.

Tu lanceras ce code plusieurs fois de suite en prenant soin de quitter l'application depuis la fenêtre de l'application et non pas depuis l'IDE.

Le schéma de l'application
- Une fenêtre qui ne contiendra rien car ce n'est pas l'objectif.
- Une procédure d'initialisation de ton Tamagoshi
- Une procédure d'importation des données du Tamagoshi.
- Une procédure de sauvegarde des données du Tamagoshi.

Chaque fois que tu chargeras les données du Tamagoshi, un point sera ajouté au score. Ce n'est que pour l'exercice.

Les paramètres de ton Tamagoshi seront dans le même dossier que le code.

Le code commenté
Code:
;Oblige à déclarer les variables
EnableExplicit

;Déclaration des variable
Structure NewTamagoshi
  sexe.i
  score.i
EndStructure

;Création du tamagoshi qui aura pour modéle la structure NewPet
Global TamaGoshi.NewTamagoshi

;Nom du fichier associé au Tamagoshi
Global FileName.s = "tamagoshi.json"

;Plan de l'application
Declare Start()

Declare TamagoshiInit()
Declare TamagoshiLoad()
Declare TamagoshiSave()

Declare Exit()

Start()

Procedure Start()
  OpenWindow(0, 0, 0, 800, 600, "Tamagoshi experience", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
 
  ; Chargement des paramétres du tamagoshi
  TamagoshiLoad()
  Debug "Hello"
 
  ; ? Le tamagoshi a t'il un sexe ?
  Select TamaGoshi\sexe
    Case  0 ; il en a pas
      Debug "Ooops je suis assexué !!"
      Debug "Au prochain lancement je vous dirais si je suis une fille ou un garçon"
      TamagoshiInit()
     
    Case 1
      Debug "Je suis un garçon"
     
    Case 2
      Debug "je suis une fille"
  EndSelect
 
  ; ? Quel est mon scrore
  Debug "Mon scrore est de " + TamaGoshi\score + " points"
 
  ; Triggers
  BindEvent(#PB_Event_CloseWindow, @Exit())
 
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

; Je suppose qu'on détermine le sexe du tamagoshi qu'une seule fois
Procedure TamagoshiInit()
  TamaGoshi\sexe = Random(2, 1)
EndProcedure

; Importation des paramétres du tamagoshi
Procedure TamagoshiLoad()
  ;Chargement du fichier JSON associé au Tamagoshi
  Protected JSONFile = LoadJSON(#PB_Any, FileName, #PB_JSON_NoCase)
 
  ;? Si il existe
  If JSONFile
    ExtractJSONStructure(JSONValue(JSONFile), TamaGoshi, NewTamagoshi)
    TamaGoshi\score + 1
  Else
    ;Il n'existe pas de fichier associé au Tamagoshi
  EndIf
EndProcedure

Procedure TamagoshiSave()
  ;Creation du fichier JSON
  Protected JSONFile = CreateJSON(#PB_Any)
 
  ;Insertion de la structure dans la chaine JSON
  InsertJSONStructure(JSONValue(JSONFile), Tamagoshi, NewTamagoshi)
 
  ;Sauvegarde de la chaine JSON
  SaveJSON(JSONFile, FileName)
EndProcedure

Procedure Exit()
  TamagoshiSave()
  End
EndProcedure


PS : Je sais que Tamagoshi s’écrit en fait Tamagotchi ^-^

_________________

➽ Config PureBasic : Windows 10 - PB 5.72 LTS

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 15:55 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1727
Localisation: Belgique
Bon ça fait un petit temps que je ne code plus en Pb, mais voici un petit code qui fait naître l'animal et te donne le nombre de seconde de vie.

Nb: fait en mode de fenêtre simple avec un timer.

Lance le soft plusieurs fois et tu verras que la vie tien compte du premier lancement

J'espère que cela pourra t'aider

Module animal

Code:
; Projet :  CATBOT
; MODULE : Animal
; AUTHOR : microdevWeb

DeclareModule Animal
  Declare naissance()
  Declare getNbrSecondesDeVie()
EndDeclareModule
Module Animal
  Structure _struct
    date_naissance.l
  EndStructure
  Global filePath.s = "animal.pref" ; chemin de sauvegarde
  Global myAnimal._struct
  Declare load()
  Declare save()
  ;*
  ; regarde si l'animal nait
  ;*
  Procedure naissance()
    With myAnimal
      ; on charge les données
      load()
      If \date_naissance = 0 ; il n'est pas né
        \date_naissance = Date()
        save()
      EndIf
    EndWith
  EndProcedure
  ;*
  ; donne le nombre de secondes de vie
  ;*
  Procedure getNbrSecondesDeVie()
    ProcedureReturn ( Date() - myAnimal\date_naissance)
  EndProcedure
 
  ;*
  ; sauve les données dans un fichiers json
  ;*
  Procedure save()
    If CreateJSON(0)
      InsertJSONStructure(JSONValue(0),@myAnimal,_struct)
      If Not SaveJSON(0,filePath)
        MessageRequester("Sauvegarde animal","impossible de sauver le fichier "+filePath,#PB_MessageRequester_Error)
      EndIf
    Else
      MessageRequester("Sauvegarde animal","impossible de créer le Json",#PB_MessageRequester_Error)
    EndIf
  EndProcedure
  ;*
  ; lit les données du fichier json
  ;*
  Procedure load()
    ; Création du fichier si il n'existe pas
        If FileSize(filePath)=-1
            CreateFile(0,filePath)
            CloseFile(0)
        Else
            If Not LoadJSON(0,filePath)
                MessageRequester("Erreur de lecture de l'animal","Impossible d'ouvrir le fichier "+gPreferencesNomFichier,#PB_MessageRequester_Error)
            Else
              ExtractJSONStructure(JSONValue(0),@myAnimal,_struct)
              ; initialise les mois et l'année de départ de la caisse
            EndIf
        EndIf
   
  EndProcedure   
EndModule



Main code
Code:
; Projet :  CATBOT
; main
; AUTHOR : microdevWeb
XIncludeFile "Animal.pbi"
#MAIN_FORM = 0
#TIMER = 0

Procedure Exit()
  CloseWindow(#MAIN_FORM)
  End
EndProcedure

Procedure AfficheMinuteNaissance()
  Debug "Nombre de secondes de vie : "+Animal::getNbrSecondesDeVie()
 
EndProcedure

Procedure openMainForm()
  OpenWindow(#MAIN_FORM,0,0,800,600,"CatBot",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  AddWindowTimer(#MAIN_FORM,#TIMER,100)
  BindEvent(#PB_Event_Timer,@AfficheMinuteNaissance(),#MAIN_FORM,#TIMER)
  BindEvent(#PB_Event_CloseWindow,@Exit(),#MAIN_FORM)
EndProcedure

; fait naitre l'animal si nécessaire
Animal::naissance()

; ouvre la fenêtre
openMainForm()

Repeat
  WaitWindowEvent()
ForEver


_________________
Windows 10 64 bits PB: 5.70 ; 5.72 LST


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 16:02 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6931
Localisation: IDF (Yvelines)
Je pense que Frank est déja englué dans pas mal de chose. Lui balancer un module en pleine gueule n'était pas necessaire. Je rappelle que Frank est un Noob avec Purebasic. Chaque chose en son temps.

_________________

➽ Config PureBasic : Windows 10 - PB 5.72 LTS

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 16:06 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Merci beaucoup Falsam, ça marche, ça donne une fille chez moi lol xD

Je vais un peu bidouiler ce code. (C'est comme ça que j'apprends et comprends ; en bidouillant des codes tout fait)
Je m'en vais de ce pas le sauvegarder et l'archiver dans mon dossier de codes d'exemples.


Microwebdev,

Je dois enregistrer les deux fichiers dans le même dossier puis ouvrir le fichier main, c'est bien ça ?
Merci ! :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 16:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6931
Localisation: IDF (Yvelines)
Citation:
Je vais un peu bidouiler ce code. (C'est comme ça que j'apprends et comprends ; en bidouillant des codes tout fait)
Je m'en vais de ce pas le sauvegarder et l'archiver dans mon dossier de codes d'exemples.
Avance pas à pas même si au début ça ne donne pas grand chose. :wink:

_________________

➽ Config PureBasic : Windows 10 - PB 5.72 LTS

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Premier projet (CatBot)
MessagePosté: Jeu 05/Juil/2018 18:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 27/Jan/2004 10:07
Messages: 877
Hello,

Le pb de bidouiller des codes tout fait c'est que tu n'apprends pas à les faire toi même ;) Le mieux c'est de partir de rien et d'y aller pas à pas, même si le code est bordélique et qu'il ne marche pas. En corrigeant toi même les erreurs, tu verras que tu avanceras bien mieux :)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 48 messages ]  Aller à la page Précédente  1, 2, 3, 4  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye