Sunday, March 8, 2009

කේතයෙන් මැවෙන ශබ්ද රටා - Random Alien Sounds

ක්‍රමලේඛ කේත පාවිච්චි කරල පොඩි බීප් එකකින් එක එක විධියෙ ශබ්ද රටා මවන්න පුළුවන්. මේක මම ඉස්සර ආතල් එකක් ගන්න කරපු එකක්. මම ඒ දවස් වල හති දම දමා Visual Basic ඉගෙනගත් එක තමයි කළේ. මට VB ඉගැන්නුවෙ කවුද කියල අහන්න එපා. උත්තරයක් නෑ. ඒකට වගකියන්න ඕන අම්බලන්ගොඩ මහජන පුස්තකාලය සහ වතුගෙදර මහජන පුස්තකාලය. මොකද ඒ දවස් වල අපේ පැත්ත පළාතක අන්තර්ජාලය තිබුණෙ නෑ. ඉතින්... දන් ඔන්න කතාව වෙනම පැත්තකට ඇදිල යනවා. ආයෙම එමු මාතෘකාවට...



ගොඩක් අය තමන් දන්න Visual Basic කේත කොටස් අනෙක් අයට දෙන්න කැමති නෑ. මම දන්නෑ මොකද මුස්ටියද ‍ලෝබකමද කියල. ඇත්තටම ඒකෙ ඇති දේකුත් නෑ. මම Visual Basic 6ත් එක්ක ගනුදෙනු බොහෝවිට නවත්තලා තියෙන්නෙ ඒකෙ ටිකක් යල් පැනගිය ගතියක් තියෙන නිසා. Visual Basic 2008 නම් ඇත්තටම ඇති දෙයක් නෑ. IDE එක තියෙනවා... MSDN තියෙනවා... ඉතින් පොඩි ළමයෙකුට වුණත් code කරන්න පුළුවන්. ඒකනෙ Basic (Beginers' All purpose Symbolic Instructions Code) කියන්නෙ. ;)

ඉතින්... මේක අගේ කරන්න දේකුත් නෙවෙයි. අනෙක Microsoft මෘදුකාංග වලින් කළා කියල මෙව්ව හංගන්න දේවලුත් නෙවෙයි. ඒ නිසා code එකම දානව. දැකුම්කළු source code පෝස්ට් කරන්න අපේ ප්‍රවීන් ඉන්ද්‍රනාම ඒ ගැන ලිව්ව සටහනෙන් ලොකු උදව්වක් වුණා.

මෙන්න කේතය... මේක මහ ලොකු දෙයක් නොවන බවත් (සත පනහෙ ටොපියක් කියල) හිතා ගන්ටකෝ... :P
(අළුත් VB project එකක් පටන් ගෙන එහි තිබෙන form එක ඉවත් කරන්න. අළුත් මොඩියුලයක් එක් කර එයට මෙම කේතය එක් කරන්න. ඉන් පසු F5.)
Option Explicit

Public Declare Function Beep Lib "kernel32" _
 (ByVal dwFreq As Long, ByVal dwDuration As Long) _
  As Long

Sub main()
    Randomize
    Dim I As Integer
    For I = 37 To 32767
        Beep (Rnd * I), 10
    Next
End Sub

මේක වෙනස් කරල නිර්මාණාත්මකව යොදා ගන්න පුළුවන්. මේ ඒ වගේ තව එකක්:
Option Explicit

Public Declare Function Beep Lib "kernel32" _
 (ByVal dwFreq As Long, ByVal dwDuration As Long) _
  As Long

Sub Main()
    Do Until False
        Dim I As Integer
        For I = 256 To 512
            Beep I, 10
        Next
        For I = 512 To 256 Step -1
            Beep I, 10
        Next
    Loop
End Sub

1e06 sorries වෙන්න ඕන මේක wine වල නම් වැඩ නෑ :( . වින්ඩෝස් කස්ටිය... ඉතින්, අත්හදා බලන්න. රිසි පරිදි වෙනස් කර අළුත් දෙයක් අත්හදා බලන්න. :)

බාගැනීම්:
මෙන්න VB නැති අයට Win32 Executables [4 KB] බාගන්න. Double click කරලා විවෘත කරන්න. හැබැයි නවත්තගන්න Windows Task Manager පිහිට පතන්න වෙයි. ඒ නිසා මේවා run කරලා මට බනින්න එපා. :P

෴සමීර ශාකුන්තල | Sameera Shaakunthala෴

7 comments:

  1. තෑන්ක්ස් වේවා අයිය ලොක්කා! ඔහොම යං යං!

    ReplyDelete
  2. වැඩේ නං එළ..

    අහං ඉන්න එක තමයි පොබ්ලං එක..

    නිකමට අහන්නේ, වෙන වැඩක් ඇත්තෙම නැද්ද VB වලිං කොරඤ්ඤ ? :-P

    ReplyDelete
  3. මං මේ ආතල් ඒ කාලෙ ගත්තෙ pascal වලින්. VB වල beep දැනගෙන හිටියත් ඒකෙන් loops දාලා run ක‍රලා නෑ.

    එල එල!!!

    ReplyDelete
  4. එල එල. අපේ පැත්තෙ පාන් වැන් එකක් යනවා එකේත් තියෙන්නෙ මේ වගේම ටෝන් එකක්..හික් හික්..
    තැන්කු වේවා ෂෙයාර් කොලාට. ;)

    ReplyDelete
  5. පොඩි දෙයක් කියන්න අමතක වුණා. මේක Visual Basic වල තියෙන සාමාන්‍ය Beep method එක නෙවෙයි. මම මෙතන පාවිච්චි කරල තියෙන්නෙ C:\WINDOWS\System32\kernel32.dll ගොනුව ඇතුලෙ තියෙන Beep function එක. ඒකෙන් VB වල තියෙන Beep එක override වෙනවා.

    Beep (in kernel32.dll) takes two arguements. Frequency (range: 37 Hz - 32767 Hz) in Heartz and time duration in milliseconds.

    ඉතින් මේ කාරණාව ටිකක් විතර VB කියන විෂයයේ මැද හරියට (Intermediate Visual Basic) කිට්ටු වෙනවා. නිකන් චූටි කාලෙ Visual Basicම නෙවෙයි. :)

    ReplyDelete
  6. hey dude programmer,you have forgotten biology

    ReplyDelete
  7. @Anonymous,
    ඇත්ත නේන්නම්... මිනිස්සුන්ට ඇහෙන්නෙ නැහැනෙ 20000ට එහාපැත්තෙ... කමක් නෑ.. ඉතිරිය ගෙදර ඉන්න සුනඛ පෝතකයට අහන්න කියල හිතාගන්ටකෝ... :P

    ReplyDelete

Facebook ප්‍රතිචාර