Bonjour, je débute en Python, je n'ai aucune base.
J'ai un problème, je dois créer une Horloge principale. Nous devons donner le temps de la partie et l'horloge doit s'arrêter au temps donner.
Par exemple si nous voulons que la partie de jeu dure 10 minutes, au bout de 10min l'horloge s'arrête. Cette partie est faite, je la mettrai quand je l'aurai totalement finit.
Je devais vous expliquer ça pour la partie qui me pose des problèmes. Dans cette partie de jeu, il va y avoir des prisons, il faut que je fasse un programme qui nous demande combien de temps dure la prison et combien il y aura de prison, et qu'au bout du temps donné, le programme envoie un signal du genre un bruit ou une lumière enfin un signal et cela voudra dire que les gens pourront sortir de la prison.
La prison si possible devrait être reliée a l'horloge principale, c'est à dire par exemple:
On rentre dans le programme le temps de la partie, puis le temps de la prison et le nombre de fois où la prison est ouverte pour que les gens puissent sortir.
Merci d'avance pour vos réponses.
Horloge Python
Modérateur : Francois
- dbrion0606
- Raspinaute
- Messages : 164
- Enregistré le : ven. 30 janv. 2015 15:51
Re: Horloge Python
Excusez ma curiosité, mais s'agit il d'un projet scolaire (et certains esprits chagrins , dont je suis, peuvent être choqués par le fait de tenter de se donner un avantage sur ses camarades en demandant une solution toute faite à l'internet; si votre prof fait partie de ces esprits chagrins, imaginez ce que donnera la requête google " python horloge prison".... ou testez la vous même...) Ceci dit, je ne vois pas quel serait le mal à tenter d'améliorer un code existant -encore faudrait il que vous le postiez- , voire à l'adapter à de nouveaux besoins (mettre des joueurs en prison) et je suis conscient qu'il est très frustrant d'être arrêté par un détail -mais encore faut il que ce soit un détail- .
Je voudrais profiter de votre expertise en gestion du temps sous python pour voir si on peut réécrire sans faire d'appel système 'os' le bout de code suivant (à noter que, si on donnait un nom de fichier à chaque joueur quand il va en prison -par construction du nom de fichier à partir du nom du joueur, et si python pouvait dormir une fraction de seconde, il serait assez facile de savoir quand un joueur emprisonné peut sortir de prison (et là, il faudrait détruire son nom de fichier lors de la levée d'écrou-
s
Je voudrais profiter de votre expertise en gestion du temps sous python pour voir si on peut réécrire sans faire d'appel système 'os' le bout de code suivant (à noter que, si on donnait un nom de fichier à chaque joueur quand il va en prison -par construction du nom de fichier à partir du nom du joueur, et si python pouvait dormir une fraction de seconde, il serait assez facile de savoir quand un joueur emprisonné peut sortir de prison (et là, il faudrait détruire son nom de fichier lors de la levée d'écrou-
s
Code : Tout sélectionner
h-4.1$ cat truc.py
import os
os.system("date +%s > truc")
os.system("sleep 10")
fname='truc'
f = open(fname, 'r')
debut = int(f.readline()[:-1])
f.close()
os.system("date +%s > truc")
f=open(fname, 'r')
fin=int(f.readline()[:-1])
print(debut - fin)
-
- Messages : 2
- Enregistré le : mer. 18 mars 2015 09:45
Re: Horloge Python
Horloge principale:
Code : Tout sélectionner
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import time
a=input("Temps en minutes =")
a=a*60
tZero=time.time() #Récupération de tZero
t=time.time() -tZero # Temps après tZero
while t<a : # temps total du chrono
t=time.time() -tZero
# Crée un temps en seconde 1 (0=01/01/1970)
tiTuple=time.gmtime(t)
# Conversion en tuple (1970, 1, 1, 0, 0, 4, 3, 1, 0)
reste=t-tiTuple[3]*3600.0-tiTuple[4]*60.0-tiTuple[5]*1.0
# Recupération du reste
resteS=("%.2f" % reste )[-2::]
#Affiche les dixièmes et centièmes de l'arrondi ex: 84
tt=time.strftime("%H:%M:%S", tiTuple)+","+resteS
print tt
time.sleep(0.01) #Attente en seconde
print "fin"
moderation a écrit :EDIT : pour plus de lisibilité, ajout de la baliseCode : Tout sélectionner
. Merci de votre compréhension. Cdt.[/quote]
- dbrion0606
- Raspinaute
- Messages : 164
- Enregistré le : ven. 30 janv. 2015 15:51
Re: Horloge Python
Code : Tout sélectionner
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import time
a=input("Temps en minutes =")
a=a*60
tZero=time.time() #Récupération de tZero
t=time.time() -tZero # Temps après tZero
users=["toto", "titi"]
dincarceration=[22,15]
def maj(users, dincarceration, debut ):
i=0
t=time.time() - debut # Temps après tZero
status=[]
for x in users :
# print x, i, dincarceration[i]
if ( t > dincarceration[i]) :
status.append( "F")
else :
status.append('J')
i = i+ 1
# print(status)
return(status)
maj(users, dincarceration, tZero )
grain=4 # debug : 0.01 est beaucoup trop rapide pour un oeil; 0.2 est satisfaisant
while t<a : # temps total du chrono
t=time.time() -tZero # Crée un temps en seconde 1 (0=01/01/1970)
# Conversion en tuple (1970, 1, 1, 0, 0, 4, 3, 1, 0)
tt=time.strftime("%H:%M:%S", time.gmtime(t)) #
# print tt
status = maj(users, dincarceration, tZero )
# print status
iu = 0
for u in users :
print tt+ " " + u + " : " + status[iu]
iu = iu + 1
time.sleep(grain) #01) #Attente en seconde
print "fin"
A noter qu'afficher les dixièmes -voire les centièmes- de seconde est très inconfortable, voire illisible (une video est rafraichie environ 25 fois par seconde).
Cette solution "met tout dans la même boucle " .
On peut l'ameliorer en transmettant le statut à "maj" -mise à jour- (qui se contentera de libérer si la durée d'emprisonnement a été dépassée; en espérant qu'un mecanisme permettant de mettre les gens en prison pour une durée donnée existe par ailleurs).