بارش برف در سی شارپ :: V i R u s Ʒ²

V i R u s Ʒ²

هک و امنیت

V i R u s Ʒ²

هک و امنیت

Virus 32

💢 دوستانم بی دفاع و دشمنانم بی جواب نخواهند ماند 💢

-->
آخرین نظرات
  • ۲۲ مرداد ۰۲، ۰۰:۳۴ - Sami
    مرسی
  • ۱۴ مرداد ۰۲، ۱۴:۴۶ - farhad
    salam

بارش برف در سی شارپ

بنام خالق جهان

میخوایم یکی از با نمک ترین برنامه های سی شارپ که میشه نوشت رو خدمتتون به اشتراک بذارم.

امیدوارم همراه ما باشید و لذت ببرید

امروز با برنامه بارش برف در سی شارپ در خدمتتون هستیم و امیدوارم خوشتون بیاد.

خب اول بگم که من تمامی properties هارو کد مینویسم و دستی نمیدم(به قول استادم که آدمو تنبل میکنه)

خب بریم برا دیدن و نوشتن کد

 

1- کتابخونه ها رو اول اضافه کنید(برای ویژوال استودیو های زیر 2015)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

2- یه مقدار ثابت قرار میدیم مثلا تعدادش رو 50 تنظیم میکنم که متعادل باشه تو صفحه(سلیقه ای مقدارش)

* نکته اینکه باید سراسری مقدارش داده بشه*

const int TEDAD = 50;

3- درون FormLoad قراره این کدارو بنویسیم

توضیحاتی بدم در مورد کد خط به خط:

1-خب برای اینکه نوع برف رو معلوم کنیم باید فونت براش انتخاب کنیم و از اونجایی که چنین فونتی درون سی شارپ نیست ما میریم از Word فونتی از نوع Windingz در میاریم که برف رو بتونیم اوکی کنیم

2-کادر یا همون border رو None میکنیم چرا که قرار بدون هیچ گونه علائم باشه(همون Exit,mini,hide)

3-فرم رو بزرگ قرار میدیم که کل صفحه رو بگیره

4-خب میخوایم پس زمینه برای بارش برف رو مشخص کنیم که چه بهتر رنگش همون رنگ اسمونی باشه(رنگ برف هم میتونه سلیقه ای باشه)

5-حالا میخوایم بطور تصادفی این برفای خوشگلمون توی صفحه پخش بشن در هر میلی ثانیه با توجه به ساعت سیستمتون

خب حالا اگه گفتین نوبت چیه؟ آفرین غلط گفتی

نوبت ساخت Lable هایی که قرار نقش برف رو بازی کنن(چون نمیشه 50 تا Lable توی فرم ایجاد کرد که برای همین با دستور ایجاد میکنیم(حرف استادم رو یادتون نرفته که))

به تعدادی که بالاتر تعریف شده بود میخوایم بسازیم و Properties هاش رو هم با توجه به نیازمون اوکی میکنیم

6-خب میرسیم به Text چون بالاتر گفتم که برف رو باید از Word بیاریم اینجا باید جاش بدیم

7-حالا محل قرارگیری برف هارو مشخص میکنیم میگیم که هرجا که دوست داری بطور تصادفی قرار بده(یعنی تو ارتفاع و عرض هرجا عشقت کشید برف رو ایجاد کن)

8-حالا نوبت به فونت رسیده میگیم نوع فونت همونی که بالاتر گفتیم از همون خانوادس و اندازش رو بطور تصادفی تو این بازه بذار(برای خوشگلی کار که برف ها یه دست نباشن یکی بزرگ و یکی کوچیک تو این بازه باشن)

9-خب حالا مهم ترین بحث اینجاس که این همه Lable داریم چجوری باید حرکت کنن؟(اون معلومه با تایمر) خب و لی چجوری همرو حرکت بدی؟

میایم از Tag استفاده میکنیم چرا چون نمیشه یکی کی نوشت که چجوری حرکت کنن،میشه؟ نه والا

میگم که برفای زیبا شما بیاین با استفاده از تایمیری که پایین تر نوشته میشه با سرعت معقول و مطمئنی حرکت کنین که چجوری حرکت پاببن تر میگم

10-و حالا که تمامی خصوصیات مربوط به Lable  رو گفتیم میایم Lable هارو ایجاد میکنیم.

 
            this.Font = new Font("Wingdings", this.Font.Size);
            this.FormBorderStyle = FormBorderStyle.None;
            this.WindowState = FormWindowState.Maximized;
            this.TransparencyKey = this.BackColor = Color.SkyBlue;
            Random r = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < TEDAD; i++)
            {
                Label l = new Label();
                l.BackColor = Color.Transparent;
                l.AutoSize = true;
                l.Text = "";
                l.Location = new Point(r.Next(this.Width), r.Next(this.Height));
                l.ForeColor = Color.White;
                l.Font = new Font(this.Font.FontFamily, r.Next(1, 25));
                l.Tag = r.Next(5, 25);
                this.Controls.Add(l);
            }            

 4- برای اینکه جلوی موس رو بگیریم که نتونه برف رو قطع کنه از Event ها KeyDown استفاده میکنیم که برف ها با فشرده شدن کیبرد قطع بشن و از برنامه خارج بشین

Application.Exit();

5-حالا نوبت به اصل ماجرا یعنی حرکت برف ها رسید

1-اول یه تایمر به برنامه اضافه کنید و از قسمت Properties این تنظیمات رو درست کنید

Enabled=True
interval=1

2-حالا بروی تایمر دبل کایک کنین و بیاد تو 

3-با استفاده از دستور Forech(امیدوارم این دستور رو بدونید چیه؛اگرم نمیدونید حتما درموردش پایین موضوع میگم بهتون بطور قابل فهم و درک)

تو این دستور میاد تمامی Lable هایی که در فرم قرار دارن رو صدا میزنه و تک تک میخواد بگه چیکار باید بکنن

3-تمامی Lable ها با سرعت خاصی که گفتم بالا قرار حرکت کنن و بیان پایین خب مسلما از بالای صفحه میان که میشه Top و این خط داره مقدار رو تبدیل به عدد میکنه

4-اینجا میگه اگر اینجا که Lable ها دارن میان پایین از عرض صفحه سیستمتون رد شدن چیکار باید بکنی

یعنی اگر برفا رد شدن بطور مرتب اونا رو بازتکرار کن و از بالا بفرست بیان پایین

و بطور تصادفی از سمت چپ سیستم پخش بشن و سرعتشم طبق معمول تو بازه 5 و 25 هستش

 

 Random r = new Random(DateTime.Now.Millisecond);
            foreach (Label item in this.Controls)
            {
                item.Top += Convert.ToInt32(item.Tag);//+= 5;
                if (item.Top > this.Height)
                {
                    item.Top = -item.Height;
                    item.Left = r.Next(this.Width);
                    item.Tag = r.Next(5, 25);
                }
            } 

امیدوارم این برنامه رو اجرا کنید و لذت ببرید.heart

سوال دیگه ای هم بود در خدمتم.yes

 

Foreach چیست:

این دستور هم خونواده حلقه طلایی یعنی for هستش و بجای for که میاد همرو باهم شامل میشه این Foreach تک تک رو بررسی میکنه همین

مثلا ما تو فرم تعداد زیادی Button و ... داریم میخوایم مثلا Lable استفاده کنیم یقینان با For یکمی دردسر میشه پس برای همین میگیم آهای کسایی که توی فرم هستین من با کمک ForEach فقط با Lable کار دارم و شماهارو نیازی ندارم

فک کنم خیلی ساده و روون گفتم

 

نکته دوم:

این کد کاملا درست اجرا میشه و نیاز به دست کاری نیست

چون بالاتر گفتم که باید از Word استفاده کنین (من قبلا انجام دادم و شما نیازی نیت اجرا کنید)

نظر (۴)

به به بعد عمری دو سه تا نویسنده جدید و مطلب های جدید :)

وبلاگ جون گرفت

Virus32 محمدرضا نوربخش :
نظر لطفتونه

مرسی داداش تازه تو وبلاک اومدی؟.،،انگار تا  حالا محمد ندیدم.

Virus32 محمدرضا نوربخش :
سلام
اره عزیزجان
هستم در خدمتتون

سلام... کی گفته forech فقط برای تک تک برسی کردنه؟ معمولا برای آرایه ها بکار گرفته میشه 

البته جفتش یک چیزه آرایه  هم چند تا چیزه  و میاد همه رو باید تک تک بگیره

و for هم همونه ولی متغیر میگیره و متغیر هم یکیه

سلام

#در_متن_بالا_خود_درگیری_دارم_

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی