PDA

View Full Version : مبتدی: درخواست



ragbar1
دوشنبه 13 دی 1389, 09:15 صبح
من می خواستم در c# یک برنامه ای بنویسم که وقتی دو دایره ایجاد کردم این دو دایره در فرم حرکت می کنند اگر این دو دایره به هم مماس بیرونی شدند باید دو دایره از فرم پاک شوند و حالت دیگر آن است که ممکن است یک دایره کوچکتر در داخل یک دایره بزرگتر قرار داده شود دراین حالت باید دایره بزرگتر به حرکت خود در فرم ادامه داده و دایره کوچکتر نیز در داخل دایره بزرگتر حرکت خود را داشته باشد ضمن انکه می تواند تعداد دایره ها نا محدود باشد من تا اینجا این برنامه را نوشتم که دایره ها می توانند رسم شوند اما نمی دانم که نحوه حرکت دایره ها چگونه باید باشد و همچنین چه زمانی دو دایره به هم مماس می شوند و چه زمانی در داخل یک دیگر قرار می گیرند اگر اطلاعاتی در این زمینه در اختیارم قرار دهید خیلی ممنون میشوم :ناراحت: با تشکر

tooraj_azizi_1035
دوشنبه 13 دی 1389, 09:27 صبح
سلام،
کد ساخت دایره:

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
int centerX = 50;
int centerY = 50;
int radius = 25;

e.Graphics.DrawEllipse(Pens.CornflowerBlue, centerX, centerY, radius, radius);
}
با استفاده از یک تایمر هر بار باید مرکز دایره رو به اندازه یک واحد تغییر بدی. اگه از این کد استفاده کنی:

Graphics g = form1.CreateGraphics();
در این صورت شیء دایره رو داری. باید یک آرایه از اشیاء از نوع بالا ایجاد کنی. بعد با استفاده از مرکز دایره و شعاع دایره هر بار در تایمر مماس بودن اونها رو چک کنی. اگه مرکز دایره A با شعاعش جمع بشه و برابر جمع مرکز دایره B با شعاعش بشه این دو مماسند.
وقتی دایره ها رو تصادفی ایجاد کنی اگه دو دایره مرکزشون یکی باشه اما شعاعشون مختلف میتونی یگی یکی در داخل دیگری هست و تایمر اونها رو جابجا می کنه و اونا هیچوقت با هم تماس پیدا نمی کنند.