PureBasic

Forums PureBasic
Nous sommes le Mer 26/Juin/2019 5:09

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 74 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5  Suivante
Auteur Message
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 11:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6823
Localisation: IDF (Yvelines)
Citation:
Pour le repeat effectivement j'ai compris le soucis maintenant, j'ai fait un système involontaire de variable avec le "event" sur une ligne seule. Je retiens donc de le maître à la suite du until.
Citation:
Concernant le passage dans le code que tu me montres, de ce que j'ai compris hier, j'ai mal placé les bind, c'est ça ?
Regarde cet exemple :wink:
viewtopic.php?f=1&t=17370

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 11:14 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Merci Falsam, j'avais déjà regardé vite fait quand tu me l'a montré hier :)

Pour les bind ils sont dans la procédure là comme les miens, mais il n'y a pas de IF à ton openwindows, alors ça ne m'aide pas pour que je place mes bind correctement dans la procédure :oops:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 11:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6823
Localisation: IDF (Yvelines)
FR4NK13 a écrit:
Pour les bind ils sont dans la procédure là comme les miens, mais il n'y a pas de IF à ton openwindows, alors ça ne m'aide pas pour que je place mes bind correctement dans la procédure
Mon code est modifié. Tu peux regarder.

PS : J'ai ajouté un Else vers la sortie de l'application au cas ou la fenêtre ne pourrait pas être créer :mrgreen:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 11:35 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Merci, maintenant j'ai confirmation que mon erreur et d'avoir mis mes binds hors du IF, du coup ça devait planter pour autre chose alors les binds qui ne marchaient pas dedans, ou alors j'ai jamais essayé dedans, je ne sais même plus :lol:

Donc les binds en toute logique doivent faire partie du IF, puisque c'est une prolongation des gadgets, merci :)


Par contre, je me suis rendue compte qu'une modification que j'ai appliquée fait planter mon programme :

Code:
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow


Comme cela ça marche très bien, mais dès que je mets sur les deux lignes donc comme ça :

Code:
Repeat
Until WaitWindowEvent= #PB_Event_CloseWindow


Ca fait planter avec pour message

[12 :34 :39] Type d'exécutable: Windows - x86 (32bit, Unicode)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 11:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
FR4NK13 a écrit:
Code:
Repeat
Until WaitWindowEvent= #PB_Event_CloseWindow


Ca fait planter avec pour message

[12 :34 :39] Type d'exécutable: Windows - x86 (32bit, Unicode)

Je vois très facilement le problème, relis toi bien sur ce coup.

Citation:
Concernant le passage dans le code que tu me montres, de ce que j'ai compris hier, j'ai mal placé les bind, c'est ça ?

Je vais essayer de détailler ce que j'ai voulu faire :

1 : J'ouvre la fenêtre dans une procédure, j'y place les gadgets.
2 : Je place les bind dans la procédure, mais après le endif afin qu'il ne soit pas dans la condition. (Si tu me demandes pourquoi hors de la condition, je ne saurais pas te répondre et effectivement ça paraît illogique... :roll: me semblait que dedans ça plantait.

3 : j'ai appelé la procedure à la fin pour deux raisons ; la première, c'est que j'avais une erreur qui me disait en gros qu'il fallait au moins une fenêtre d'ouverte pour ne je sais plus quoi ; je n'ai pu régler ce problème qu'en appelant la procédure. La deuxième, j'ai choisi cette procédure à appeler car c'était la première à appeler selon moi vu que c'est la fenêtre.

Et bien, non, c'était beaucoup plus basique que ça : pourquoi mettre tout ça dans une procédure si tu ne l'appelles qu'une fois, surtout si tu l'appelles juste après l'avoir créée?
Code:
Procedure fenetre()
   If OpenWindow(0, 0, 0, 1000, 1000, "Pierre, Papier, Ciseaux V.1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
     
      TextGadget(#Texte,470,100,100,100,"Bon jeu!")
      TextGadget(#Score,490,370,100,100,"0 - 0")
     
      ButtonGadget(#Pierre, 400,  190, 200, 20, "Pierre")
      ButtonGadget(#Papier, 400,  220, 200, 20, "Papier")
      ButtonGadget(#Ciseaux, 400, 250, 200, 20, "Ciseaux")
     
   EndIf
   
   BindGadgetEvent(#Pierre, @Partie())
   BindGadgetEvent(#Papier, @Partie())
   BindGadgetEvent(#Ciseaux, @Partie())
EndProcedure
fenetre()

et ça
Code:
If OpenWindow(0, 0, 0, 1000, 1000, "Pierre, Papier, Ciseaux V.1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   
   TextGadget(#Texte,470,100,100,100,"Bon jeu!")
   TextGadget(#Score,490,370,100,100,"0 - 0")
   
   ButtonGadget(#Pierre, 400,  190, 200, 20, "Pierre")
   ButtonGadget(#Papier, 400,  220, 200, 20, "Papier")
   ButtonGadget(#Ciseaux, 400, 250, 200, 20, "Ciseaux")
   
EndIf

BindGadgetEvent(#Pierre, @Partie())
BindGadgetEvent(#Papier, @Partie())
BindGadgetEvent(#Ciseaux, @Partie())

Ca donne exactement le même résultat. Découper son code en procedure c'est cool, mais faut pas non plus faire ça systématiquement : si ça ne sert pas, autant ne pas rajouter des lignes de codes inutiles.


Dernière édition par poshu le Mer 01/Aoû/2018 11:46, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 11:43 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Ce que je vois déjà, c'est qu'il faut redéfinir une variable pareil qu'avant, donc le problème n'est pas vraiment résolu pour le coup de ne pas stocker la valeur dans une variable. Je reflechis mais là je sèche :lol:

D'accord Poshu, j'ai un peu trop pris à coeur l'utilisation des procédures :lol: Donc je note de n'utiliser les procédures que lorsque c'est un peu comme un boucle en soit ? enfin pas une boucle, mais une partie qui est souvent sollicitée.
En l'occurence effectivement, une fois appelé, la fenêtre ne le sera plus puisqu'elle l'est déjà.

Il me semblait avoir vu un peu partout que les fenêtres se plaçaient dans des procédures ? J'imagine que cela dépend du contenu de la fenêtre.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 11:54 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
FR4NK13 a écrit:
Ce que je vois déjà, c'est qu'il faut redéfinir une variable pareil qu'avant, donc le problème n'est pas vraiment résolu pour le coup de ne pas stocker la valeur dans une variable. Je reflechis mais là je sèche :lol:
Il faut redéfinir une variable? Vraiment? Ça devrait pourtant te mettre sur la voie :p

FR4NK13 a écrit:
D'accord Poshu, j'ai un peu trop pris à coeur l'utilisation des procédures :lol: Donc je note de n'utiliser les procédures que lorsque c'est un peu comme un boucle en soit ? enfin pas une boucle, mais une partie qui est souvent sollicitée.
En l'occurence effectivement, une fois appelé, la fenêtre ne le sera plus puisqu'elle l'est déjà.

Il me semblait avoir vu un peu partout que les fenêtres se plaçait dans des procédures ? J'imagine que cela dépend du contenu de la fenêtre.
Y'a aucune règle sur le placement d'une fenêtre dans une procédure. Les procédures sont 100% facultatives dans PB : tu peux techniquement tout faire sans elles MAIS ton code va devenir illisible très vite.
L'important, c'est donc de choisir quand créer une procédure et quand mettre son code directement. Dans ce cas spécifique, c'est effectivement plus simple et plus propre de ne pas utiliser de procédure.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 12:04 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
D'accord merci, bon, pour le repeat/until je sèche toujours par contre :oops:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 12:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
Bon, bah WaitWindowEvent c'est une variable, ce que tu veux, c'est la fonction WaitWindowEvent() ;p


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 12:09 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Mon dieu que je suis nulle xD

Merci, avec les parenthèses ça marche nickel, même si du coup ça fait une procédure vide ? Enfin je comprends pas trop là, c'est une procedure donc ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 12:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1140
Euh... Je suis pas sur de bien comprendre, WaitWindowEvent() est une fonction qui appartient à PureBasic lui même : tu peux appuyer sur F1 pour avoir plus d'information dessus.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 12:24 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Oui on va oublier ce que je viens de dire xD

Voilà en passant maintenant après avoir rectifié ce qui n'allait pas, mon setgadget marche nickel.

Cela dit j'ai du mal à comprendre son utilisation ici.

Il est dit dans la doc "Modifie le texte contenu dans un gadget. "

Est-ce que l'on pourrait plutôt dire "Modifie le contenu DE LA VARIABLE dans un gadget." ?
Car le seul truc qui est modifié ici, c'est la valeur des variables Mes_points et Ses_Points.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 12:59 
Hors ligne

Inscription: Jeu 07/Juin/2007 22:54
Messages: 261
Ce veux dire que ça change le texte contenu dans le gadget, que ce texte soit stocké dans une variable ou non ne change rien.
setgadgettext(gadget,"bla bla bli bli blo blo")
c'est la même chose que
variable.s = "bla bla bli bli blo blo"
setgadgettext(gadget,variable)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 13:10 
Hors ligne

Inscription: Mar 03/Juil/2018 9:30
Messages: 72
Merci Boby, mais je n'ai compris que la première phrase, qui confirme cela dit que j'ai plus ou moins compris :lol:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Pierre Papier Ciseaux
MessagePosté: Mer 01/Aoû/2018 20:12 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8675
Tu chipotes, et tu chipotes à tord.
Boby à bien répondu.

setgadgettext() affiche un texte dans le gadget dédié. Que ton texte soit stocké dans une variable.s ou pas.

En gros cette commande dit :
"Affiche ce texte."
Que le texte soit directement écris ou qu'il soit dans une variable.s peu importe !
et il te le prouve avec cette exemple
Code:
setgadgettext(gadget,"bla bla bli bli blo blo")
;c'est la même chose que
variable.s = "bla bla bli bli blo blo"
setgadgettext(gadget,variable)

C'est donc bien la bonne définition : "Modifie le texte contenu dans un gadget. "

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


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

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 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 à:  
cron

 


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