Segundos em minutos -
Kha - 27.04.2016
Eu tenho uma contagem regressiva aqui que й representada em segundos
pawn Код:
contagems[MAX_PLAYERS] = 120; ////no top
format(esc,sizeof(esc), "tempo: %d" ,contagems);
TextDrawSetString(TempoEscola[o], esc);
Ela aparece somente em segundos, como faзo pra transformar isso em minutos?
Ex:
Aparece 120 segundos
O que eu quero: 2:00
Qual a lуgica eu uso pra fazer isso?
Re: Segundos em minutos -
bruxo00 - 27.04.2016
PHP код:
UptimeSegundos++;
if(UptimeSegundos == 60)
{
UptimeSegundos = 0;
UptimeMinutos++;
if(UptimeMinutos == 60)
{
UptimeMinutos = 0;
UptimeHoras++;
}
if(UptimeHoras == 24)
{
UptimeHoras = 0;
UptimeDias++;
}
}
Este cуdigo й chamado segundo a segundo. Agora e sу tirar ideias daqui.
Re: Segundos em minutos -
F1N4L - 27.04.2016
Vocк pode utilizar o mйtodo do bruxo00, que й mais fбcil e prбtico, sendo que esse mйtodo й com segundos crescentes.
O mйtodo que utilizei no meu minigame de race e estarei te passando foi decrescente:
Код:
new Segundos[MAX_PLAYERS], Timer[MAX_PLAYERS], Tempo[MAX_PLAYERS] = 2;
public OnGameModeInit()
{
Timer[playerid] = SetTimerEx("ConverterSegundos", 100, true, "i", playerid);
return 1;
}
forward ConverterSegundos(playerid);
public ConverterSegundos(playerid)
{
Segundos[playerid] --;
if(Tempo[playerid] == 0 && Segundos[playerid] == 0)
return KillTimer(Timer[playerid]);
if(Segundos[playerid] < 1)
Segundos[playerid] = 59,
Tempo[playerid] --;
new Str[12];
format(Str, sizeof Str, "%02i:%02i", Tempo[playerid], Segundos[playerid]);
return 1;
}
Re: Segundos em minutos -
WLSF - 27.04.2016
Quote:
Originally Posted by Kha
Eu tenho uma contagem regressiva aqui que й representada em segundos
pawn Код:
contagems[MAX_PLAYERS] = 120; ////no top
format(esc,sizeof(esc), "tempo: %d" ,contagems); TextDrawSetString(TempoEscola[o], esc);
Ela aparece somente em segundos, como faзo pra transformar isso em minutos?
Ex:
Aparece 120 segundos
O que eu quero: 2:00
Qual a lуgica eu uso pra fazer isso?
|
Os demais jб responderam com cуdigo, gostaria apenas de responder a duvida sobre a lуgica.
Se vocк for analisar a matemбtica bбsica por trбs desse seu problema, levando em consideraзгo que 1 min seja equivalente a 60 segundos, entгo:
sempre que quisermos transformar segundos em minutos, usamos: segundos / 60 = minutos
sempre que quisermos transformar minutos em segundos, usamos: minutos * 60 = segundos
Entгo pra esse seu problema temos:
120 (seg) / 60 (qtd_min) = 2 (min)
assim vocк consegue transformar os seus segundos em minutos, porйm vocк ainda precisa calcular a parte que vem depois dos 2 pontos, ou seja, caso seja 121 segundos, equivalente a 2 minutos e 1 segundo:
121 / 60 = 2 (min)
121 % 60 = 1 (seg)
Se vocк for passar isso pro pawn, vai ficar:
pawn Код:
new min, seg;
min = contagems[playerid] / 60;
seg = contagems[playerid] % 60;
printf("%02d:%02d", min, seg);
OBS: o cуdigo ficou bem menor do que oque foi postado pelos meninos acima, porque foi usado mais lуgica matemбtica do que estruturas computacionais, eu acho que esse devia ser o principio da programaзгo, vocк usar lуgica matemбtica para resolver o problema, porque se nгo vocк comeзa a gerar cуdigos lentos pro seu processador executar.
Se nгo me engano, a formataзгo fica assim, 02, para informar que vai preencher com 0 as 2 casas caso o valor nгo exista.
Caso reste alguma duvida sobre a lуgica, pode perguntar que eu ou os demais respondem.
Re: Segundos em minutos -
F1N4L - 27.04.2016
Cara, me esqueci completamente do
%02d! Criei 4 condicionais sendo que nem precisaria usб-las, jб que essa funзгo jб iria fazer a conversгo.
Thx @ipsNan.
Re: Segundos em minutos -
PT - 27.04.2016
Mais fбcil usar o que o Will disse.
Use esta funзгo:
PHP код:
SecondsToMinutes(seconds)
{
new tempo[17];
format(tempo, sizeof(tempo), "%02d:%02d", seconds / 60, seconds % 60);
return tempo;
}
uso:
SecondsToMinutes(60)
Resultado: 01:00
Re: Segundos em minutos -
SepZ - 27.04.2016
PHP код:
#define minutos(%0) (1000 * %0 * 60)
#define horas(%0) (1000 * %0 * 60 * 60)
#define segundos(%0) (1000 * %0)
#define dias(%0) (1000 * %0 * 60 * 60 * 24)
#define semanas(%0) (1000 * %0 * 60 * 60 * 24 * 7)
#define meses(%0) (1000 * %0 * 60 * 60 * 24 * 30)
#define anos(%0) (1000 * %0 * 60 * 60 * 24 * 30 * 12)
#define decadas(%0) (1000 * %0 * 60 * 60 * 24 * 30 * 12 * 10)
#define seculos(%0) (1000 * %0 * 60 * 60 * 24 * 30 * 12 * 10 * 10)
Re: Segundos em minutos -
WLSF - 27.04.2016
Quote:
Originally Posted by SepZ
pawn Код:
#define minutos(%0) (1000 * %0 * 60) #define horas(%0) (1000 * %0 * 60 * 60) #define segundos(%0) (1000 * %0) #define dias(%0) (1000 * %0 * 60 * 60 * 24) #define semanas(%0) (1000 * %0 * 60 * 60 * 24 * 7) #define meses(%0) (1000 * %0 * 60 * 60 * 24 * 30) #define anos(%0) (1000 * %0 * 60 * 60 * 24 * 30 * 12) #define decadas(%0) (1000 * %0 * 60 * 60 * 24 * 30 * 12 * 10) #define seculos(%0) (1000 * %0 * 60 * 60 * 24 * 30 * 12 * 10 * 10)
|
Cara, esses seus macros nгo atendem a necessidade do nosso colega...
Se ele inserir minutos(120), isso vai dar
7.200.000
e o resultado esperado por ele й 02:00, e nгo 7.200.000...
Re: Segundos em minutos -
SepZ - 27.04.2016
@edit
tem razгo, nгo tinha interpretado direito.
Re: Segundos em minutos -
Kha - 28.04.2016
Obrigado pela ajuda utilizei "%02d", funcionou direitinho!