Re: Premier projet (CatBot)
Publié : mer. 04/juil./2018 18:36
Regarde aussi du côté de openpreferences()
Code : Tout sélectionner
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
Code : Tout sélectionner
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
Code : Tout sélectionner
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
Une fois que ta variable à recu 1 ou 2 ne cherche pas à lui donner une autre valeur.sauf que bien entendu le chiffre généré aléatoirement change tout le temps, il ne se sauvegarde pas.
Code : Tout sélectionner
;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
Code : Tout sélectionner
; 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
Code : Tout sélectionner
; 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
Avance pas à pas même si au début ça ne donne pas grand chose.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.