1

Тема: AHK: Вычисление

Доброго времени суток
Ниже выложенный код генерирует число, которое нужно умножить на 100 и полученный результат перевести в формат Минуты:Секунды для дальнейшей работы с таймером

#SingleInstance force
Gui,Font, S9 w700 CRed, Courier new
Gui,Add, Text, x20 y110 h15 , %randbot%
Gui,Add, Text, x20 y80 h15  gstart, Старт
Gui,Show
start:
Random, randbot , 7000, 9000

2

Re: AHK: Вычисление

А в чём вопрос?

3

Re: AHK: Вычисление

Александр_ пишет:

А в чём вопрос?

С моим уровнем знания AHK это невозможно осуществить, как это сделать?

4

Re: AHK: Вычисление

Uniors пишет:

С моим уровнем знания AHK это невозможно осуществить, как это сделать?

Что осуществить? Перевести секунды в минуты?

msgbox % NumToTime(1443)

NumToTime(Num)
{
   Hours := Num // 3600
   Num := Mod(Num, 3600)
   Min := Num // 60
   Sec := Mod(Num, 60)
   return Hours " часов, " Min " минут и " Sec " секунд"
}

5 (изменено: Uniors, 2012-11-12 18:06:04)

Re: AHK: Вычисление

Александр_ пишет:

Что осуществить? Перевести секунды в минуты?

Умножить рандомное число на 100 и перевести результат в минуты, секунды

6 (изменено: Uniors, 2012-11-12 18:23:45)

Re: AHK: Вычисление

Вопрос решен частично, как запустить таймер из получившегося времени?

#SingleInstance force
Gui,Font, S9 w700 CRed, Courier new
Gui,Add, Text, x20 y70 h15 vDisplay, % NumToTime(randbot)
SetTimer, UpdateDisplay
Gui,Add, Text, x20 y40 h15  gstart, Старт
Gui,Show

NumToTime(Num)
{
   Hours := Num // 3600
   Num := Mod(Num, 3600)
   Min := Num // 60
   Sec := Mod(Num, 60)
   return Hours " часов, " Min " минут и " Sec " секунд"
}
return

UpdateDisplay:
GuiControl, Text, Display, % NumToTime(randbot)
return

start:
Random, randbot , 7000, 9000
return
 
End::ExitApp

7

Re: AHK: Вычисление

Gui,Add, Text, w75 vDisplay
Gui,Add, Button, w75 glStart, Старт
Gui,Show
return

NumToTime(Num)
{
   if(Num<0)
      Num := 0
   Hours := Num // 3600
   Num := Mod(Num, 3600)
   Min := Num // 60
   Sec := Mod(Num, 60)
   return (Hours>=10?Hours:("0" Hours)) " : " (Min>=10?Min:("0" Min)) " : " (Sec>=10?Sec:("0" Sec))
}

CreateTimer()
{
   Random, randbot, 10, 20
   SetTimer, lGeneralTimer, % randbot*1000
   UpdateDisplay(randbot)
   return randbot
}

UpdateDisplay(randbot)
{
   GuiControl, Text, Display, % NumToTime(randbot)
}

lGeneralTimer:
   msgbox бум!
   SetTimer, lGeneralTimer, off
return

lUpdateTimer:
   if(StartTime+randbot*1000<=A_TickCount)
   {
      SetTimer, lGeneralTimer, off
	  UpdateDisplay(0)
	  randbot := 0
   }
   else
      UpdateDisplay(randbot-(A_TickCount-StartTime)//1000)
return

lStart:
   if(randbot!=0)
   {
      SetTimer, lGeneralTimer, off
	  SetTimer, lUpdateTimer, off
   }
   StartTime := A_TickCount
   randbot := CreateTimer()
   SetTimer, lUpdateTimer, 1000
return

GuiClose:
End::ExitApp

8

Re: AHK: Вычисление

#SingleInstance force
Gui,Font, S9 w700 CRed, Courier new
Gui,Add, Text, x80 y35 h15  gstart, Старт
Gui,Add, Text, x20 y70 h15 vDisplay, % NumToTime(randbot)
Gui,Show
return

NumToTime(Num)
{
   Hours := Num // 3600
   Num := Mod(Num, 3600)
   Min := Num // 60
   Sec := Mod(Num, 60)
   return Hours " часов, " Min " минут и " Sec " секунд     "
}
return

UpdateDisplay:
GuiControl, Text, Display, % NumToTime(randbot)
if randbot
randbot--
else 
{
MsgBox Таймер = 0
ExitApp
}
return

start:
Random, randbot , 7000, 9000
SetTimer, UpdateDisplay, 1000
return
 
GuiClose:
End::ExitApp

9

Re: AHK: Вычисление

Возможно ли отображать минуты и секунды в разных местах окна?
часы х+30 Минуты х+30 секунды

10

Re: AHK: Вычисление

Uniors пишет:

Возможно ли отображать минуты и секунды в разных местах окна?
часы х+30 Минуты х+30 секунды

Ты можешь в тех местах вывести фиксированный текст(например "H" вместо часов и "M" вместо минут)?

11

Re: AHK: Вычисление

Теоретически возможно

Gui,Add, Text, x15 y27 , Часы
Gui,Add, Text, x15 y47 , минуты
Gui,Add, Text, x15 y67 , секунды

12

Re: AHK: Вычисление

А теперь вместо слова "секунды" вывести количество секунд?

13

Re: AHK: Вычисление

Так точно

14 (изменено: Александр_, 2012-11-12 23:29:39)

Re: AHK: Вычисление

Uniors пишет:

Так точно

Тогда в чём проблема? Дальше только математика- выделяем секунды(Mod(Time, 60), т.е. остаток от деления на 60), минуты (Mod(Time//60, 60), целочисленное деление на 60, чтобы отбросить секунды, и остаток от деления на 60 получившегося значения) и часы/сутки по аналогии.

15 (изменено: Uniors, 2012-11-13 14:34:09)

Re: AHK: Вычисление

Ходячая катастрофа , нужно запустить таймер с фиксированной единицой в зависимости от выбранной галочки (радио) по нажатию на кнопку Старт, с учетом формата выводимого времени "Часы:Минуты:Секунды".

#SingleInstance force
Gui,Add, Text, x70 y30 w100 h25 vtimers, X_X
Gui,Add, Radio ,x15 y30 gtimes vtimestyle1, 1ч
Gui,Add, Radio ,x+10 y30 gtimes vtimestyle2, 2ч
Gui,Add, Radio ,x+10 y30 gtimes vtimestyle3, 5ч
Gui,Add, Radio ,x+10 y30 gtimes vtimestyle4, 8ч
Gui,Add, Text, x85 y55 h25 gstart, Старт
Gui,Show, w180 h80
return

times:
Gui, Submit, NoHide
If timestyle1=1
  numbertime:=3600 
If timestyle2=1
  numbertime:=7200
If timestyle3=1
  numbertime:=18000
If timestyle4=1
  numbertime:=28800
return

 
numbertime(Num)
{
   Hours := Num // 3600
   Num := Mod(Num, 3600)
   Min := Num // 60
   Sec := Mod(Num, 60)
   return Hours " часов, " Min " минут и " Sec " секунд"
}

start:
if(numbertime!=0)
   {
      SetTimer, lGeneralTimer, off
      SetTimer, lUpdateTimer, off
   }
   StartTime := A_TickCount
   SetTimer, lUpdateTimer, 1000
return

 
UpdateDisplay(numbertime)
{
   GuiControl, Text, timers, % NumToTime
}
 
lGeneralTimer:
   SetTimer, lGeneralTimer, off
TrayTip, Внимание!, Таймер завершен, 5, 1
return
 
lUpdateTimer:
   if(StartTime+randbot*1000<=A_TickCount)
   {
      SetTimer, lGeneralTimer, off
      Updatetimers(0)
      numbertime := 0
   }
   else
      UpdateDisplay(numbertime-(A_TickCount-StartTime)//1000)
return

End::ExitApp

16

Re: AHK: Вычисление

1. Что за функция Updatetimers? Она вызывается, но нигде не объявлена.
2. numbertime это функция или переменная?

17

Re: AHK: Вычисление

Александр_ пишет:

1. Что за функция Updatetimers? Она вызывается, но нигде не объявлена.
2. numbertime это функция или переменная?

В программировании не силен, мои первый наброски.
Каждому радио (голочке) присвоена фиксированная единица времени (3600сек/7200с/18000с...) в зависимости от активного радио должен запуститься таймер с указанным временем

18 (изменено: creature.ws, 2012-11-13 16:11:13)

Re: AHK: Вычисление

В ваших набросках,  в фрагменте:

      SetTimer, lGeneralTimer, off
      Updatetimers(0)
      numbertime := 0

В чём предназначение второй строки? «Не силён» не объясняет, что вы ожидали получить, написав эту строку.

19

Re: AHK: Вычисление

creature.ws пишет:

В ваших набросках,  в фрагменте:

      SetTimer, lGeneralTimer, off
      Updatetimers(0)
      numbertime := 0

В чём предназначение второй строки? «Не силён» не объясняет, что вы ожидали получить, написав эту строку.

Ожидал помощи от опытных в этом деле людей, данный код был составлен опираясь на коды сторонних скриптов с похожей направленностью

20

Re: AHK: Вычисление

Парадигма «корабль в бутылке»