រៀនបង្កើត នាឡិកាប៉ោល(Clock)

1នាឡិកាប៉ោល (Clock)

តើយើងអាចសរសេរកូដ ដើម្បីបង្កើតនាឡិកាប៉ោលបែបនេះ ដោយរបៀបណា? ឥលូវខ្ញុំប្រើ ភាសា VB6 ដើម្បីសរសេរកូដ បង្កើតនាឡិកា(Clock)នេះ។ សូមចូលទៅក្នុង VB6 software រួចដាក់ របស់របរ (stuff)  ដែលត្រូវប្រើដូចក្នុងរូបភាព៖
1របស់របរត្រូវប្រើរួមមាន៖ Line ចំនួន៣ Timer ចំនួន១ និងTextbox ចំនួន១។

 កំណត់ properties:
×Timer1 មាន Interval=1000 ឬអាចដាក់តូចជាងនេះ តែបើតូចខ្លាំងអាចបណ្តាលឱ្យញាក់។ Enable=True.
×Line មាន៣ កំណត់ទៅតាមចិត្តរបស់អ្នក តែក្នុងការបង្ហាញកូដនេះ ខ្ញុំយក Line1 ជាទ្រនិចវិនាទី Line2 ជាទ្រនិចនាទី និង Line3 ជាទ្រនិចម៉ោង ដែលមានព៌ណ និងទំហំរៀងគ្នាដូចក្នុងរូប។
×Textbox មិនកំណត់អ្វីច្រើនទេ ព្រោះប្រើគ្រាន់តែបង្ហាញ នាឡិកាជាតួលេខ(Digits)ប៉ុណ្ណោះ។Enable=False.
Code:
កូដទាំងនេះស្ថិតនៅក្នុង Timer តែមួយគត់។
Private Sub Timer1_Timer()
Text1.Text = Format(Now, “hh:mm:ss”)
Dim pi
pi = 4 * Atn(1)
    Dim x0, y0
    y0 = Me.Height / 2
    x0 = Me.Width / 2
    Dim rts, rtm, rth
    rts = 360 / 60
    rtm = 360 / 60
    rth = 360 / 12
    Dim s, m, h
    s = Format(Now, “ss”)
    m = Format(Now, “nn”)
    h = Format(Now, “hh”)
    Dim ds, dm, dh
    ds = s * rts
    dm = m * rtm
    dh = h * rth
    Dim rs, rm, rh
    rs = (ds * pi) / 360
    rm = (dm * pi) / 360
    rh = (dh * pi) / 360
    Dim rms, rmm, rmh
    rms = rs – pi / 2
    rmm = rm – pi / 2
    rmh = rh – pi / 2
    Dim xs, xm, xh, ys, ym, yh
    xs = 1500 * Cos(rms): ys = 1500 * Sin(rms)
    xm = 1300 * Cos(rmm): ym = 1300 * Sin(rmm)
    xh = 800 * Cos(rmh): yh = 800 * Sin(rmh)
    Line1.X1 = x0: Line1.Y1 = y0
    Line2.X1 = x0: Line2.Y1 = y0
    Line3.X1 = x0: Line3.Y1 = y0
    Line1.X2 = x0 + xs: Line1.Y2 = y0 + ys
    Line2.X2 = x0 + xm: Line2.Y2 = y0 + ym
    Line3.X2 = x0 + xh: Line3.Y2 = y0 + yh
End Sub
បន្ទាប់ពី ដំណើរការ(Run) សាកល្បង ពិតថាវាមានដំណើរការ(process)ហើយ យើងនឹងចាប់ផ្តើមសិក្សា និងបកស្រាយអំពីកូដទាំងនេះ តាមដំណាក់កាល។
Text1.Text = Format(Now, “hh:mm:ss”)
×កំណត់ឱ្យ Textbox បង្ហាញនាឡិកាជាតួលេខ(digits)។
Dim pi
pi = 4 * Atn(1)
×ប្រកាសអថេរ pi រួចឱ្យតម្លៃ(value)ទៅ pi=4*atan(1)=3.14…។
  Dim x0, y0
   y0 = Me.Height / 2
   x0 = Me.Width / 2
  ×(x0, y0) ជាកូអរដោនេចំណុចកណ្តាលនៃប្លង់នាឡិកា។ វាត្រូវនឹង បណ្តោយចែកជា២ និងទទឹងចែកជា២។
    Dim rts, rtm, rth
    rts = 360 / 60
    rtm = 360 / 60
    rth = 360 / 12
 ×កំណត់រកថាតើ ១វិនាទី, នាទី ឬមួយម៉ោងស្មើនឹងប៉ុន្មានដឺក្រេ។ រង្វង់មួយមាន 360 ដឺក្រេ។
    Dim s, m, h
    s = Format(Now, “ss”)
    m = Format(Now, “nn”)
    h = Format(Now, “hh”)
×កំណត់ឱ្យ s=វិនាទី m=នាទី និង h=ម៉ោង (ស្ថិតក្នុងបច្ចុប្បន្នភាពជានិច្ច)។
    Dim ds, dm, dh
    ds = s * rts
    dm = m * rtm
    dh = h * rth
×ឩ៖ បើឥលូវដើរដល់ ១២វិនាទី នាទី ឬម៉ោង តើស្មើនឹងប៉ុន្មានដឺក្រេនៃ រង្វង់។
    Dim rs, rm, rh
    rs = (ds * pi) / 360
    rm = (dm * pi) / 360
    rh = (dh * pi) / 360

×បម្លែងពី ដឺក្រេដើរដល់ ទៅជា រ៉ាដ្យង់ដើរដល់។

    Dim rms, rmm, rmh
    rms = rs – pi / 2
    rmm = rm – pi / 2
    rmh = rh – pi / 2

×ដោយម៉ោង ១២ នៅលើអ័ក្ស ស៊ីនុស(sin) ឯរ៉ាដ្យង់ដើរដល់ នៅលើអ័ក្ស កូស.ស៊ីនុស(cos) ខុសគ្នា pi/2 ដូចនេះយើងប្រើរូបមន្តបម្លែងពី sin->cos && cos->sin ដោយកាត់ pi/2។

    Dim xs, xm, xh, ys, ym, yh
    xs = 1500 * Cos(rms): ys = 1500 * Sin(rms)
    xm = 1300 * Cos(rmm): ym = 1300 * Sin(rmm)
    xh = 800 * Cos(rmh): yh = 800 * Sin(rmh)

×កំណត់ទីតាំង គ្រប់ចុងទ្រនិចនាឡិកានៅលើប្លង់។ ទម្រង់ a=bsin(x) គេបាន b ជាអំភ្លីទុតនៃរលក a ដែល a=bsin(x) ក្នុងន័យនេះ b ជាប្រវែងរបស់ទ្រនិចនាឡិកានីមួយៗ។

    Line1.X1 = x0: Line1.Y1 = y0
    Line2.X1 = x0: Line2.Y1 = y0
    Line3.X1 = x0: Line3.Y1 = y0

×ប្តូរទីតាំងចុងម្ខាងនៃគ្រប់ទ្រនិច (បន្ទាត់ Line) ទៅដាក់ចំ ចំណុចកណ្តាលនៃប្លង់នាឡិកា។

    Line1.X2 = x0 + xs: Line1.Y2 = y0 + ys
    Line2.X2 = x0 + xm: Line2.Y2 = y0 + ym
    Line3.X2 = x0 + xh: Line3.Y2 = y0 + yh

×ចុងម្ខាងទៀត ដៅដោយទីតាំងគ្រប់ចុងទ្រនិចនៅលើប្លង់។ ដោយកាន់ភ្ជាប់ ផ្ចិត O (ចំណុចកណ្តាលនែប្លង់) យើងត្រូវប្រើរូបមន្តបម្លែងកិលអ័ក្សឱ្យ (x,y)សន្មត់ ឡើងទៅនៅត្រង់ផ្ចិត O (x0,y0)។

បញ្ជាក់៖ យើងអាចសរសេរកូដនេះ កាត់ឱ្យកាន់តែខ្លីបាន។ ការសរសេរបង្ហាញខាងលើនេះគឺ ក្នុងន័យងាយមើល ងាយយល់ និងងាយបញ្ជាក់ដំណើរការតែប៉ុណ្ណោះ។