>> >> Ciao Manlio e grazie per avermi risposto. >> Progetto, sviluppare una piccola applicazione console, sotto Windows, >> con Python 2.7, che faccia da orologio per giocare a scacchi. >> >> La faccenda è presto detta: 2 timer partono da un tempo definibile >> dall'utente e scendono verso lo zero. Questi due clock si esprimono in >> ore, minuti, secondi. > > [...] >> Prima domanda: come fareste voi, a fare aggiornare le variabili degli >> orologi? > > Dipende dal sistema operativo che usi. > GB: provo a realizzarlo con una tecnica che gli permetta di girare sia sotto Windows che sotto Unix, ovvero anche sotto Mac OS.
>> In alcuni linguaggi, ricordo che si legava un evento allo scorrere del >> tempo, tipo On Time Goto e poi non ci si pensava più, allo scadere >> dell'intervallo specificato, il codice veniva eseguito. >> Qui dovrei controllare time.clock() e, se superiore di un tot a quella >> letta la volta precedente, chiamo il metodo delloggetto orologio che ne >> aggiorna le variabili, giusto? >> > Ci sono molte solutioni: > > 1) SIGALARM su sistemi UNIX > 2) ciclo su select con timeout, e aggiorni il tempo con time.clock > 3) usi il timer messo a disposizione dal sistema operativo > 4) usi il timer messo a disposizione dal tuo framework preferito > GB: interessante la 2, devo approfondire studiando select perché non ho idea di cosa sia e cosa faccia. Ho deciso di usare la 3. - userò il numero di secondi trascorso dall’avvio dell’orologi e fornito da time.time() Affiderò ad un thread secondario il compito di aggiornare gli orologi ogni 0.3 secondi e di avvertire l’utente se uno dei 2 counters è arrivato a 00:00:00. Al thread primario invece, affiderò il compito di ricevere i comandi dall’utente per mezzo dell’immissione di stringhe di 2 caratteri, lette da raw_input. > >> Terza domanda, dovendo stampare i valori dei clocks nella console, come >> faccio a scriverli sempre sulla stessa riga evitando così di riempire la >> console con due colonne di cifre che scorrono verso l'alto? >> > > Su sistemi UNIX puoi usare curses. > Ma ci sono anche altri modi più semplici e limitati. GB: ok, darò un occhio alla documentazione di curses ma volevo usare un metodo valido su più sistemi. Mi accenneresti a qualcuno degli altri metodi di cui scrivevi qui sopra? Io avevo pensato: 1. cancello tutto il contenuto della console e stampo una stringa che contiene entrambi i contatori, ad ogni secondo che passa. 2. Se esiste un carattere di controllo, o sequenza escape che simuli la pressione della freccia sù, potrei costringere la stampa sempre nella medesima riga, invece di farla scorrere verso il basso. Grazie e ciao. GB _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python