Добавлен Art35372
Как сделать счетчик, который будет показывать, сколько времени прошло с начала игры?
Принятый ответ
Автор - ScorpioT1000, код из проекта Jack's Company. с моими незначительными переработками.
раскрыть
library GameClock initializer Init
{
// CONSTANTS
#define private LIMIT = 2147483000 // ~596 hours in milliseconds.
#define private MS_SEC = 1000 // One second in milliseconds.
#define private MS_MIN = 60000 // One minute in milliseconds.
#define private MS_HR = 3600000 // One hour in milliseconds.
#define private PERIOD = 0.05 // Tick rate in milliseconds.
// END OF CONSTANTS
private int msPassed = 0
private timer Timer = CreateTimer()
// Master
// Count in real seconds.
float GetTimeInSFloat() {
return I2R(msPassed) / I2R(MS_SEC)
}
// Current hours on clock.
int GetTimeInH() {
return msPassed / MS_HR
}
// Current minutes on clock.
int GetTimeInM() {
if(msPassed >= MS_HR) {
return ModuloInteger(msPassed, MS_HR) / MS_MIN
}
return msPassed / MS_MIN
}
// Current seconds on clock.
int GetTimeInS() {
if(msPassed >= MS_MIN) {
return ModuloInteger(msPassed, MS_MIN) / MS_SEC
}
if(msPassed >= MS_HR) {
return ModuloInteger(msPassed, MS_HR) / MS_SEC
}
return msPassed / MS_SEC
}
// Current milliseconds on clock.
int GetTimeInMS() {
if(msPassed >= MS_SEC) {
return ModuloInteger(msPassed, MS_SEC)
}
if(msPassed >= MS_MIN) {
return ModuloInteger(msPassed, MS_MIN)
}
if(msPassed >= MS_HR) {
return ModuloInteger(msPassed, MS_HR)
}
return msPassed
}
// Auxillary
// Total milliseconds passed since game start.
int GetTimeInAbs() {
return msPassed
}
// Total seconds passed since game start.
int GetTimeInAbsS() {
return msPassed / MS_SEC
}
// Total minutes passed since game start.
int GetTimeInAbsM() {
return msPassed / MS_MIN
}
// Total hours passed since game start.
int GetTimeInAbsH() {
return msPassed / MS_HR
}
// Actual time in formatted string.
string GetGameCount() {
string h = I2S(GetTimeInH ())
string m = I2S(GetTimeInM ())
string s = I2S(GetTimeInS ())
string ms = I2S(GetTimeInMS())
return ( h + ":" + m + ":" + s + "."+ ms )
}
private void Increment() {
if(msPassed > LIMIT) {
PauseTimer(Timer)
return
}
msPassed = msPassed + R2I(1000*PERIOD)
}
private void Init() {
TimerStart(Timer, PERIOD, true, function Increment)
}
}
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
действие - прибавить к переменной типа integer 1
действие - игра - показать сообщение - переводим integer в string