| Auteur |
pause pdt l'execution d'un programme |
|
|
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 21-04-2008 à 14:13  
Slt !
Je suis en trian de créer un jeu sur ma graph 35+ et je ne sais pas comment faire pause pendant l'execution du jeu . J'ai déjà vu des exemples sur certains programmes que j'ai téléchargé, mais je n'arrive pas à les reproduire. Merci d'avance à celui (ou ceux) qui me répondra(ont)
|
 |
dunedune Utilisateur Graph

 Messages: 186 Calculatrice : Graph 35+ | Message posté: 21-04-2008 à 15:44  
'Pause' ???
Si tu entends par là un boucle infinie (là c'est impossible d'en sortir) tu peux utiliser :
Do:LpWhile1
Si tu veux juste attendre que l'on appuie sur EXE :
Do:LpWhile Getkey =/ 31 (je te conseille de mettre ca dans tes mems je l'utilise tout le temps).
Ou alors utiliser le symbole triangle noir en bas à droite qui est accessible dans SHIFT-PGRM-F6-F5 je crois.
Si tu veux faire en fonction du temps :
For 1->I To 5000 (plus c'est grand, plus c'est long)
Next
Si tu veux attendre que l'utilisateur appuie sur une touche précise :
Do:LpWhileGetkey =/ n) de la touche
Voilà
 |
 |
dafp Utilisateur Graph

 Messages: 404 Calculatrice : Graph 25+ | Message posté: 21-04-2008 à 17:03  
ya la fonction break aussi
 |
 |
PierrotLL Administrateur

 Messages: 762 Calculatrice : Graph 85 | Message posté: 21-04-2008 à 20:07  
Non, break ça sert a sortir d'une boucle
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 22-04-2008 à 11:00  
c'est bon, j'ai trouvé , j'ai utilisé :
Getkey=29=>Goto 0
~
~
~
Lbl 0
Locate 5,5,"PAUSE"*(l'étoile c'est le petit triangle, je sais pas comment le faire sur le PC )
Locate 5,5," "
Goto ~
Merci à toi dunedune, tes réponses m'ont bien aidées, et mon programme est bientôt fini. A+ tt le monde !
|
 |
dunedune Utilisateur Graph

 Messages: 186 Calculatrice : Graph 35+ | Message posté: 22-04-2008 à 17:29  
Tu peux mieux faire :
If Getkey=29 (F6 donc)
Then...
Else...
IfEnd
Pour connaître les Getkey voici un pgrm très simple :
Do:Locate 10,4,Getkey
LpWhile 1
Evite d'utiliser les Labels-Goto. Dans l'ancien temps je le faisais mais c'est pas fiable Ca fait parfois des GoError ou des trucs complètements stupides .
Préfère les Whiles.
 |
 |
dafp Utilisateur Graph

 Messages: 404 Calculatrice : Graph 25+ | Message posté: 22-04-2008 à 19:10  
Quote:
|
On 2008-04-21 20:07, PierrotLL message:
Non, break ça sert a sortir d'une boucle
|
|
a ok, maintenant je sais ... (pour moi break c'est ... pause nan ?) bon ça change rien ...
 |
 |
Rastabeuher Administrateur

 Messages: 886 Calculatrice : ClassPad 300 | Message posté: 22-04-2008 à 23:59  
Non, break ça veut dire casser. Son utilisation est logique puisqu'il permet de "casser" une boucle.
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 23-04-2008 à 11:56  
Quote:
|
On 2008-04-22 17:29, dunedune message:
Tu peux mieux faire :
If Getkey=29 (F6 donc)
Then...
Else...
IfEnd
Pour connaître les Getkey voici un pgrm très simple :
Do:Locate 10,4,Getkey
LpWhile 1
Evite d'utiliser les Labels-Goto. Dans l'ancien temps je le faisais mais c'est pas fiable Ca fait parfois des GoError ou des trucs complètements stupides .
Préfère les Whiles.
|
|
Ok, jveu bien essayer d'utiliser tes Lp-While, While End, mais j'y comprends rien du tout , même après (et surtout) avoir lu le manuel de ma Graph.
Pour, connaître le Getkey d'une touche, j'ai déjà un petit programme. Merci quand même.
|
 |
dafp Utilisateur Graph

 Messages: 404 Calculatrice : Graph 25+ | Message posté: 23-04-2008 à 12:52  
Quote:
|
On 2008-04-22 23:59, Rastabeuher message:
Non, break ça veut dire casser. Son utilisation est logique puisqu'il permet de "casser" une boucle.
|
|
je sais que c'est casser (break / broke / broken, je crois ...), mais quand on fait ac c'est break, pour moi c'était pause ...
mais bon, j'ai dit que c'était pas grave ...
 |
 |
PierrotLL Administrateur

 Messages: 762 Calculatrice : Graph 85 | Message posté: 23-04-2008 à 13:50  
Pour les boucles, c'est très simple:
While condition  instructions  WhileEnd   Do  Instructions  LpWhile condition   For (valeur initiale)->(variable) To (valeur finale) Step (pas)  Instructions  Next Pour While et Do-LpWhile, la boucle tourne tant que la condition est vraie. La seule différence entre les deux, c'est qu'avec Do-LpWhile, la condition est testée a la fin, donc la boucle s'exécute au moins une fois.
Pour For To Next, le Step est facultatif, par défaut il est de 1.
Par exemple:0->B  For 1->A To 5  A+B->B  Next  B Ce programme affiche 15 (=1+2+3+4+5)
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 23-04-2008 à 15:00  
Quote:
|
On 2008-04-23 13:50, PierrotLL message:
Pour les boucles, c'est très simple:
While condition  instructions  WhileEnd   Do  Instructions  LpWhile condition   For (valeur initiale)->(variable) To (valeur finale) Step (pas)  Instructions  Next Pour While et Do-LpWhile, la boucle tourne tant que la condition est vraie. La seule différence entre les deux, c'est qu'avec Do-LpWhile, la condition est testée a la fin, donc la boucle s'exécute au moins une fois.
Pour For To Next, le Step est facultatif, par défaut il est de 1.
Par exemple:0->B  For 1->A To 5  A+B->B  Next  B Ce programme affiche 15 (=1+2+3+4+5)
|
|
Si j'ai bien compris, While/While-End correspond à If/Then/If End, mais je n'ai pas vraiment compris Do/LpWhile
|
 |
dunedune Utilisateur Graph

 Messages: 186 Calculatrice : Graph 35+ | Message posté: 23-04-2008 à 16:46  
Pause en anglais se dit pause
Do ne fait rien. C'est juste un marqueur si tu veux.
S la condition LpWhile est vraie, on repart à Do.
Code équivalent :
Do  'Instructions (le guillemet sert aux commentaires)  LpWhile X=1 (ou LpWhile X, ca marche aussi mais c'est un peu sp  cial  ) 
Effet : tant que (en anglais cela se traduit justement par while) X=1, on fait la boucle.
Avec des If et des labels :
Lbl 0  'Instructions  If X=1  Then Goto 0  Else continuer dans le code If End
Voilà
Edit : J'ai une petite question : connaissant le code sur ordi (merci à toi d'ailleurs), j'ai découvert pas mal de choses sur Casio et... je me demandais s'il y avait des paramètres falcultatifs pour les For
 |
 |
Rastabeuher Administrateur

 Messages: 886 Calculatrice : ClassPad 300 | Message posté: 23-04-2008 à 17:16  
EDIT: grillé, mon message s'adressait à Max
While/WhileEnd n'est pas vraiment comme If...Then: c'est une boucle. Il peut s'exécuter plusieurs fois de suite, selon une condition définie. Il faut comprendre "while" comme "pendant que" ou "tant que".
Donc...
1-While A!=B  2-"A"?->A  3-"B"?->B  4-WhileEnd  5-...
...veut dire: "tant que A est différent de B, demander A, demander B".
Voici le cheminement du programme:
Ligne 1: Test de la condition. Si A=B (condition fausse), il saute à la ligne 5 et continue le programme en ignorant les instructions L2 et L3.
Si A est différent de B, il exécute L2 et L3; l'utilisateur rentre ainsi 2 valeurs.
Ligne 4: C'est la fin des instructions conditionnelles (L2 et L3 ici). Le programme revient L1, et reteste la condition... Si faux, il saute jusqu'à L5, si vrai (A!=B), il exécute L2, L3 et arrivé à L4 il saute à L1 et reteste la condition, etc... Je vais pas continuer ça peut être très long encore!
Tu vois bien qu'ici L2 et L3 peuvent ne pas être exécutées du tout si la condition est fausse dès le début. Ici, si A=B quand le prog arrive pour la première fois L1, il ne demandera pas A et B à l'utilisateur et sautera L5.
Pour Do...LpWhile, c'est un peu le même principe... mais pas tout a fait.
1-Do  2-"A"?->A  3-"B"?->B  4-LpWhile A!=B  5-...
Ici, ça veut dire aussi "demande A et B tant que A est différent de B" (LpWhile est l'abbréviation de "Loop While", soit "boucler tant que"). Mais ici L2 et L3 seront forcément exécutée au moins une fois, vu que la condition est testée à la fin de la boucle (L4).
Le cheminement varie donc un peu:
"Je demande A, je demande B, je regarde si A!=B, si non, je continue L5, si oui, je revient L1, je redemande A et B, je regarde si A!=B etc..."
Bon, sur un petit exemple comme celui-là, on voit pas trop l'intérêt, mais dans des situations que tu rencontreras, l'une te conviendra mieux que l'autre. Ici, je choisirais Do...LpWhile car l'utilisateur doit rentrer A et B au moins une fois, et AVANT que je vérifie que A=B.
Avoue que c'est plus propre (et plus simple) que de faire:
Lbl 0  "A"?->A  "B"?->B  If A=B  Then Goto 1  Else Goto 0  IfEnd  Lbl 1  ...
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 24-04-2008 à 11:18  
Rastabeuher :
C'est vrai que dans certains cas, LpWhile est plus simple et plus court à utiliser que If-Then...
Merci de ton aide, grace à toi je comprendes ENFIN LpWhile et cie.
Au fait, est-ce que la classPad 300 est bien ? C'est plus un petit ordinateur qu'une calto, j'imagine !
dunedune :
C'est à moi que tu as addressé ta question sur les For-To-Step-Next ? Si oui, je n'ai pas compris ce que tu demandais !...
PS : Comme je l'ai dit plus tôt, je suis en train de créer un jeu sur ma graph 35+ , c'est le jeu où des éléments tombent du haut de l'écran et il faut les rattraper à l'aide d'un mobile. Je ne sais pas comment le nommer . Existe-t-il déjà un nom à ce jeu assez connu ?
|
 |
dunedune Utilisateur Graph

 Messages: 186 Calculatrice : Graph 35+ | Message posté: 24-04-2008 à 12:05  
Non je m'adressais à Rastabeuheur...
Je n'ai pas trsè bien compris ton idée de jeu.
Sache que pour moi, le principal avantage des Whiles est qu'ils ne plantent jamais bizarrement.
Pour l'anecdote, un jour, j'ai fait un jeu de 3500 bytes... Et à la fin, les Goto ont plantés. A chaque nouveau programme que je le faisait : BANG.
Donc, maintenant, 99% While
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 24-04-2008 à 14:26  
Mon idée de jeu, c'est de reproduire le jeu sur PC dont tu trouvera une des nombreuses variantes sur game un peu gamin, c'est juste le principe qui compte .
Compte tenu de ton témoignage palpitant sur ton programme de 3500bytes, je pense que j'utiliserais le plus possible les While.
|
 |
Rastabeuher Administrateur

 Messages: 886 Calculatrice : ClassPad 300 | Message posté: 24-04-2008 à 14:31  
EDIT: Encore grillé, je m'adressait à DuneDune
Je suis pas sûr de bien avoir compris ta question pour les boucles for.
En tout cas le seul paramètre facultatif est le pas, qui est par défaut de 1 si tu ne renseigne pas le paramètre. Tu peux faire le pas (Step) que tu veux: positif, négatif, entier, décimal...
For 10->X To 0 Step -1  Locate 1,1, X  Next
par exemple...
Sinon je confirme, abuser des Labels (en multipliant les codes comme mon dernier exemple plus haut) ralentit voir fait planter les programmes...
 |
 |
dunedune Utilisateur Graph

 Messages: 186 Calculatrice : Graph 35+ | Message posté: 24-04-2008 à 17:32  
Quote:
| For X->10 To 0 Step -1
Locate 1,1, X
Next
|
|
QUOI QUOI QUOI ?
Depuis quand on peut attribuer une valeur à un nombre ?
Max, j'espère que tu as une 65 et du courage pour reproduire ce jeu . Ca m'a la'air plutôt hard, même si tu veux le faire en noir et blanc.
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 24-04-2008 à 18:15  
Ne t'inquiètes pas , je ne vais pas reproduire le jeu au pixel près , c'est juste le principe du jeu que je fais. Je ne suis pas mazo à ce point !!! .
|
 |
Rastabeuher Administrateur

 Messages: 886 Calculatrice : ClassPad 300 | Message posté: 24-04-2008 à 18:32  
Quote:
| QUOI QUOI QUOI ?
Depuis quand on peut attribuer une valeur à un nombre ? |
|
Depuis jamais.
Désolé, erreur de frappe, c'est corrigé. Mais j'imagine que tu avais compris...
En fait c'est parce que dans certains langages, le nom de la variable se place avant quand on leur assigne une valeur, alors j'ai mélangé.
 |
 |
dunedune Utilisateur Graph

 Messages: 186 Calculatrice : Graph 35+ | Message posté: 24-04-2008 à 19:40  
Quote:
| En fait c'est parce que dans certains langages, le nom de la variable se place avant quand on leur assigne une valeur, alors j'ai mélangé |
|
C'est les languages ordis comme le C/C++ c'est ca ?
Mais attends en C, il faut faire
X=10
et non X->10
 |
 |
PierrotLL Administrateur

 Messages: 762 Calculatrice : Graph 85 | Message posté: 24-04-2008 à 20:25  
En aucun cas un langage n'est attribué à une plateforme. "langage ordi" ne veut donc rien dire
 |
 |
Rastabeuher Administrateur

 Messages: 886 Calculatrice : ClassPad 300 | Message posté: 25-04-2008 à 01:50  
Quote:
|
C'est les languages ordis comme le C/C++ c'est ca ?
|
|
Oui, c'est à ceux là que je pensais en particulier, même si c'est pas des "langages ordi" (même si on comprend ce que tu veux dire).
Quote:
|
Mais attends en C, il faut faire
X=10
et non X->10 |
|
Oui, bien sûr, mais quand j'ai dit que j'ai mélangé, j'ai bien dit que j'avais pris la manière d'assigner une valeur à une variable, pas la syntaxe exacte.
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 25-04-2008 à 14:48  
Donc, pour en revenir au sujet, comment peut on écrire "PAUSE" aux coor 5,5 sur l'écran, puis l'effacer au contact de la touche EXE à l'aide d'une série de 5 espaces puis reprendre l'éxécution normale du jeu. En gros, comment encadrer :
Locate 5,5,"PAUSE"¤ (le ¤ est le petit triangle)
Locate 5,5,"_____" (5 espaces entre les guillemmets)
|
 |
PierrotLL Administrateur

 Messages: 762 Calculatrice : Graph 85 | Message posté: 25-04-2008 à 16:29  
Avec le disp, il y aura écrit "-Disp-" a l'écran, si tu ne veux pas de ce disp, tu peux le remplacer par une simple boucle.While Getket!=31:WhileEnd ouDo:LpWhile Getkey!=31
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 25-04-2008 à 17:03  
Donc je peux faire :
LpWhileGetkey=79=>Locate 5,5,"PAUSE"¤
Locate 5,5,"_____"
WhileEnd
???
|
 |
dunedune Utilisateur Graph

 Messages: 186 Calculatrice : Graph 35+ | Message posté: 25-04-2008 à 17:53  
Nonnnnnn c'est pas vrai
T'as tout mélangé.
Pour ça ce serait plutôt :
Locate 5,5,"PAUSE"  Do:LpWhile Getkey!=79  Locate 5,5," " 
Relis un peu ce qu'on a dit au début : LpWhile se met avec Do, et c'est une cboucle, pas une condition, donc la => n'a rien à faire ici
 |
 |
max Programmeur Basic

 Messages: 31 Calculatrice : Graph 35+ | Message posté: 26-04-2008 à 10:49  
Alors, je vais tenter de faire marcher le truc qui me sert de cerveau et vous sortir ... :
While Getkey=79
Locate 5,5,"PAUSE"¤
Locate 5,5,"_____"
While End
Comme ça, si on appuie sur F6 (getkey 79),ca affiche PAUSE jusqu'à ce qu'on appuie sur EXE parce que le -Disp- est apparu, alors PAUSE s'éfface et le jeu reprend son cours normal, si on appuie pas sur F6, le programme continue à la ligne qui se situe après le While End Reste plus qu'à savoir si cette fois j'ai compris (ce serait la 1ere fois depuis un bon bout de temps ).
|
 |
dunedune Utilisateur Graph

 Messages: 186 Calculatrice : Graph 35+ | Message posté: 26-04-2008 à 11:18  
Rndjiiiiiiiiiiiiiiiiiiiiiii
D'abord je veux plus voir ce ¤
Tu remplaces par Do:LpWhile Getkey!=31, même effet sauf qu'il y a pas Disp.
Rentre toi dans la tête que While veut dire TANT QUE.
Donc, je traduis, tant que F6 sera enfoncé, afficher pause, attendre EXe, effacer pause, et afficher encore pause .
Si tu veux simplement une pause avec EXE tu fais :
"PAUSE"  Do:LpWhile Getkey!=31  "_____"
Si tu veux une pause avec F6 tu fais :
"PAUSE"  Do:LpWhile Getkey!=29  "_____"
While : tant que la condition est vraie la boucle est exécutée en continu.
 |
 |