نوشتن برنامه اي كه يك دايره در صفه مانند پرتو نور حركت كرده و با برخورد به ديواره هاي صفحه با همان زاويه بازتاب شود .
با تشكر
لطفا لینک های وبلاگ یا سایت های مورد نظرتان را صرفا در امضاء تان قرار دهید (تنظیمات کنترل پنل کاربری)،
و نه در متن پستی که می نویسید.
کد:
Option Explicit
Private Const [B]Speed[/B] As Double = 100
Private [B]DirectionX[/B] As Double
Private [B]DirectionY[/B] As Double
Private Sub Form_Load()
[B]DirectionX[/B] = 1
[B]DirectionY[/B] = 1
End Sub
Private Sub [B]Form_Resize[/B]()
Picture1.Align = vbAlignLeft
Picture1.Align = vbAlignTop
End Sub
Private Sub [B]Timer1_Timer[/B]()
With Shape1
.Move .Left + DirectionX * Speed, .Top + DirectionY * Speed
If .Left < 0 Then
DirectionX = Abs(DirectionX)
ElseIf .Left + .Width >= Picture1.Width Then
DirectionX = -Abs(DirectionX)
End If
If .Top < 0 Then
DirectionY = Abs(DirectionY)
ElseIf .Top + .Height >= Picture1.Height Then
DirectionY = -Abs(DirectionY)
End If
DoEvents
End With
End Sub
متغیر ثابت Speed سرعت حرکت دایره را مشخص می کند.
متغیر های DirectionX و DirectionY جهت حرکت افقی و عمودی دایره را مشخص می کنند که می تواند 1+ (به جلو)
و یا 1- (به عقب) باشند.
از Picture1 برای بدست آوردن اندازه دقیق Form استفاده شده، چون ابعاد واقعی درون یک Form بدلیل وجود
فریم دور آن، از مشخصه های Width و Height اندکی کوچکتر خواهد بود.
هر زمانی که فرم تغییر اندازه ای پیدا کرد، رخداد Form_Resize اندازه Picture1 را مطابق Form تغییر می دهد.
در هر ثانیه چند بار رخداد Timer1_Timer اجرا می شود تا موقعیت دایره را تغییر داده و جهت های DirectionX و
DirectionY را بررسی کند. هر بار که به دیواره ای رسید، ایندو متغیر تغییر علامت می دهند (مثبت به منفی و منفی
به مثبت).
کد کامل برنامه به همراه فایل اجرایی exe ضمیمه این پست می باشد.