Programmer un compteur en larp

Résolu/Fermé
math161098 Messages postés 8 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 19 mars 2016 - 2 oct. 2015 à 18:08
math161098 Messages postés 8 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 19 mars 2016 - 4 oct. 2015 à 17:57
Bonjour,
j'aimerais savoir comment programmer un compteur de seconde en pseudo-code larp.
voici mon algorithme

DÉBUT
requete "temps:",a
b=0
repeter
b=HEURE[3]
repeter
c=HEURE[3]-b+1
ECRIRE C
JUSQU'a c=a
JUSQU'a c=a
fin

mon problème est que dès que l'ordinateur passe d'une seconde un chiffre tout a fait farfelu est afficher sur la console (un chiffre négatif).
A voir également:

4 réponses

totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
3 oct. 2015 à 00:32
Bonjour,

que représente HEURE[3] ?

Une boucle seulement n'aurait pas été suffisante ?

Sympa LARP
0
math161098 Messages postés 8 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 19 mars 2016
Modifié par math161098 le 3/10/2015 à 12:34
HEURE[3] représente l'heure en seconde de l'ordinateur et non une boucle n'aurait pas été suffisante car lorsque je lancerais le programme la console démarre a la seconde de l'ordis. Mettons si l'horloge du pc indique 30 secondes au moment du démarrage alors le comptage démarre à 30 or je voudrais que le comptage démarre a 1.
0
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
Modifié par totodunet le 3/10/2015 à 14:09
ok je pense du coup savoir d'où vient ton problème de nombre négatif.
en lisant la doc de LARP (j'ai réussi à la trouver), HEURE[3] te donne le nombre de secondes écoulées depuis le début de la minute donc de 0 à 59. Soit si tu lances ton compteur par exemple à la 56ème seconde et que tu demandes d'attendre 10 secondes par exemple :

56-56+1 = 1 -> OK!
57-56+1 = 2 -> OK!
58-56+1 = 3 -> OK!
59-56+1 = 4 -> OK!
0-56+1 = -55 -> Problème!

Je comprends donc que tu veuilles que ça démarre à 0. Mais tu ne pourras pas saisir une durée supérieure à 1min parce que toutes les 60 secondes on repart à 0. L'idéal serait d'avoir une instruction PAUSE par exemple où on met en paramètre le temps en seconde. Mais je ne la trouve pas. Il ne faut pas que tu fasses des opérations avec HEURE[3], ce serait trop compliqué. Tu dois te servir de ça pour détecter un changement de seconde.

DEBUT

REQUETE "temps :", a

REPETER

c=0
b=HEURE[3]

\\boucle vide d'attente d'une seconde
TANTQUE b=HEURE[3] FAIRE
FINTANTQUE

\\une seconde est passée -> instructions
c=c+1
ECRIRE c

JUSQU'A a=c

FIN


à tester ;)

Qui ne tente rien n'a rien
0
math161098 Messages postés 8 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 19 mars 2016
3 oct. 2015 à 20:08
merci pour votre réponse, mais la solution que vous avez proposé ne marche pas, il n'y a que des 1 sur la consoles :/
0
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
Modifié par totodunet le 3/10/2015 à 23:58
effectivement une erreur de ma part. l'as tu trouvée ?
0
math161098 Messages postés 8 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 19 mars 2016
4 oct. 2015 à 13:08
le c n'est pas dans une boucle donc la commande ne se répète pas
d'ailleurs un amis m'a donné la solution au problème la voici:
requete " le temps :",a

c=0
b=HEURE[3]
REPETER
si c!=a alors
repeter
si HEURE[3]!=b alors
b=HEURE[3]
C=C+1
ecrire c
finsi
jusqu'a b=HEURE[3]
finsi
jusqu'a c=a
0
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
4 oct. 2015 à 15:45
voilà! la variable c était initialisé à chaque tour de boucle à 0

DEBUT

REQUETE "temps :", a

c=0

REPETER

b=HEURE[3]

\\boucle vide d'attente d'une seconde
TANTQUE b=HEURE[3] FAIRE
FINTANTQUE

\\une seconde est passée -> instructions
c=c+1
ECRIRE c

JUSQU'A a=c

FIN


marche aussi si tu veux avoir un code légèrement différent que ton ami
0
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
Modifié par totodunet le 4/10/2015 à 16:21
DEBUT

REQUETE "temps :", a

c=0
b=HEURE[3]

REPETER

SI b!=HEURE[3] ALORS
c=c+1
ECRIRE c
b=HEURE[3]
FINSI

JUSQU'A a=c

FIN


une autre version sans double boucle cette fois-ci
0
math161098 Messages postés 8 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 19 mars 2016
4 oct. 2015 à 17:57
merci beaucoup vous m'avez grandement aidé ;)
0