PDA

View Full Version : [C++][NIUBBO] Programma per misurare tempi


Rhapsodyan [ITA]
23-12-2004, 18:12
Salve a tutti, sono uno studente di C++ alle prime armi e so che qui dentro ci sono delle menti pensanti :D
Dovrei creare un programma che dopo 2 minuti dall'avvio del "gioco" (un gioco stupido, tipo indovinare il numero uscito da un lancio di un dado) si interrompa, dicendo ad esempio "Tempo scaduto".
Naturalmente lavoro sotto console (niente oggetti please).
Ho trovato la funzione clock(), che mi può misurare il tempo, ma non so come interrompere il programma dopo 2 minuti.
Ringrazio tutti coloro che mi aiuteranno :)

fuku san
24-12-2004, 05:10
è una stupidata

#include <time.h>
#include <stdio.h>
mi sembra anche
#include <sdtlib.h>

se è da console prendi i secondi in un unsigned con time(NULL),poi il giochetto lo metti dentro un loop che controlla (con time(NULL)) se sono passati 2 minuti * 60 secondi = 120 secondi,cioè vedi se time(NULL) > vecchio valore che avevi preso + 120

fai exit(0) quando sono passati,ed il programma termina,ciaoz

Rhapsodyan [ITA]
24-12-2004, 11:55
mhh..una roba del genere?

do
giochetto
while ((unsigned)time(NULL)<120)

Non ho ben capito, sono molto niubbo :muro:
Puoi farmi un esempio?

Ti ringrazio

cionci
26-12-2004, 02:12
Tipo:

unsigned int start = (unsigned)time(NULL);
do {

giochetto

unsigned int elapsed = start - (unsigned)time(NULL);
if(elapsed >120)
{
cout << "tempo scaduto" << endl;
break;
}
} while(....);

In teoria il controllo lo dovresti fare ogni volta dopo aver letto un dato da tastiera...anche più volte all'interno di giochetto...

Ovviamente questo è il modo più semplice per realizzare questa cosa...

Ziosilvio
26-12-2004, 11:54
Originariamente inviato da cionci

unsigned int elapsed = start - (unsigned)time(NULL);
if(elapsed >120)

Credo sia:

unsigned int elapsed = (unsigned)time(NULL) - start;
if (elapsed>120)

Rhapsodyan [ITA]
26-12-2004, 11:58
Esatto..così l'avevo fatto anche io...Ma essendo il gioco abbastanza lungo dovrei inserirlo un sacco di volte...
Beh, vorrà dire che mi farò una funzione da richiamare a ogni input :D

Gracias ;)

Mixmar
26-12-2004, 16:18
Originariamente inviato da Ziosilvio
Credo sia:

unsigned int elapsed = (unsigned)time(NULL) - start;
if (elapsed>120)


Esatto... chissà perchè faccio sempre anch'io lo stesso errore di cionci quando devo riscrivere questa cosa...

Rhapsodyan [ITA]
26-12-2004, 18:58
OTTIMO, funziona!
Un po' di casino coi parametri perchè l'ho suddiviso molto in funzioni...ma alla fine ce l'ho fatta :D

cionci
28-12-2004, 08:56
Originariamente inviato da Mixmar
Esatto... chissà perchè faccio sempre anch'io lo stesso errore di cionci quando devo riscrivere questa cosa...
Idem ;)

Comunque quello è il metodo più semplice... Altrimenti potresti ricorrere alle API di Windows (sempre che tu stia programmando su Windows) e settare un timer...

LimiT-MaTz
06-01-2005, 22:04
Originariamente inviato da cionci
Idem ;)

Comunque quello è il metodo più semplice... Altrimenti potresti ricorrere alle API di Windows (sempre che tu stia programmando su Windows) e settare un timer...

scusami hai della documentazione da passarmi sulle API ?

Grazie in anticipo!!!

cionci
07-01-2005, 08:20
http://msdn.microsoft.com

Se ti interessa il problema sopra vai a cercare SetTimer...