CSCIENCE

CSCIENCE

۲۵ مطلب در شهریور ۱۳۹۲ ثبت شده است



بخش چهارم: پیاده سازی نمای گرافیکی - بخش پایانی


در این قسمت منطق بازی به گرافیک متصل می‌شود و ساخت بازی کامل می‌شود.
مدت زمان:     30 دقیقه
حجم:           48 مگابایت
کیفیت:         720p
فرمت:          mp4


* آخر این قسمت براتون یه تمرین گذاشتم (:دی). خیلی خوشحال خواهم شد اگر دوستانی که این تمرینو انجام میدن، یک آموزش در قالب فایل متنی بسازند و برای من بفرستن تا من هم برای بقیه روی وبلاگ بذارم.
۳ موافقین ۰ مخالفین ۰ ۲۱ شهریور ۹۲ ، ۱۷:۳۱
cscience


بخش سوم: پیاده سازی بدنه‌ی اصلی بازی


در این قسمت بخش اصلی بازی Snake یعنی ساختمان داده‌ها و الگوریتم‌های بازی رو پیاده سازی می‌کنم
مدت زمان:     30 دقیقه
حجم:           48 مگابایت
کیفیت:         720p
فرمت:          mp4

۱ موافقین ۰ مخالفین ۰ ۱۹ شهریور ۹۲ ، ۰۰:۴۰
cscience

حتما تابه‌حال برنامه‌های زیادی رو دیدید که وقتی عبارتی رو برای جستجو وارد می‌کنید، در همون لحظه همزمان با تایپ شما، نتایج ممکن رو نشون می‌ده. تو این پست قصد دارم با استفاده از امکانات Binding و Linq در #C و WPF این کار رو آموزش بدم.


گام اول: ایجاد TextBox و ListBox

در ابتدا لازمه که برای گرفتن ورودی از کاربر و نمایش نتایج جستجو، از یک عدد TextBox به همراه ListBox استفاده کنیم. نام TextBox را textbox قرار دهید.


گام دوم: تعیین منبع داده

با توجه به اینکه می‌خواهیم از این منبع برای ItemsSource یک ListBox استفاده کنیم، لازم است که جنس آن یک IEnumerable باشد. من در این مثال ابتدا یک کلاس Static تعریف کرده‌ام و سپس در آن یک لیست Static از چند رشته Url ساخته‌ام


static class MyData
    {
        public static List<string> urls = new List<string>
        {
            "cscience.blog.ir",
            "cscience.mihanblog.ir",
            "google.com",
            "bing.com",
            "microsoft.com",
            "bayan.ir",
            "yahoo.com",
            "outlook.com"
        };
    }


گام سوم: نوشتن مبدل رشته به لیست

برای Binding مرحله بعد لازم است که یک مبدل یکطرفه با قابلیت تبدیل رشته (عبارت مورد جستجو) به نتیجه‌ی جستجو نوشته شود


class StringToLinqConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string temp = value as string;
            return MyData.urls.Where(url => url.Contains(temp.Trim())).ToList();
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }


گام چهارم: Bind کردن ItemSource

در نهایت کافیست ItemSource مربوط به ListBox را به مقدار Text کنترل TextBox با استفاده از مبدل مرحله قبل Bind کنیم.


<Window.Resources>
        <local:StringToLinqConverter x:Key="StringToLinqConverter"/>
</Window.Resources>

<ListBox ItemsSource="{Binding Text, Converter={StaticResource StringToLinqConverter}, ElementName=textBox}"/>

اکنون با تایپ کردن عبارت مورد نظر برای جستجو در TextBox تمامی نتایج ممکن همزمان با تایپ حروف نمایش داده می‌شوند.
۰ موافقین ۰ مخالفین ۰ ۱۸ شهریور ۹۲ ، ۲۳:۳۷
cscience


بخش دوم: پیاده‌سازی تنظیمات و کنترل سفارشی


در این قسمت پیاده‌سازی بازی رو شروع می‌کنم و دو قسمت از بازی (قسمت تنظیمات و کنترل سفارشی برای نمایش قطعات بازی) رو کامل می‌کنم.
مدت زمان:     31 دقیقه
حجم:           48.6 مگابایت
کیفیت:         720p
فرمت:          mp4

۳ موافقین ۰ مخالفین ۰ ۱۴ شهریور ۹۲ ، ۱۵:۴۲
cscience


در نهایت تصمیم گرفتم که آموزش رو به صورت ویدئویی تهیه کنم. آموزش در چند بخش خواهد بود (هنوز تصمیم نگرفتم دقیقا چند بخشش کنم). با توجه به اینکه اولین تجربه‌ی آموزش ویدئوییمه و اینکه امکانات حرفه‌ای موجود نیست (:دی) ممکنه کیفیت کار خیلی بالا نباشه. در هر صورت سعی من این خواهد بود که آموزش‌ها با بهترین کیفیت آماده بشن. شما هم با نظراتتون به ادامه‌ی این آموزش کمک کنید. با تشکر.


بخش اول: طرح بازی Snake


در این قسمت در مورد اجزا و الگوریتم بازی و اینکه چه ابزارهایی از #C و WPF استفاده خواهند شد، توضیح می‌دهم.

مدت زمان:   11 دقیقه

حجم :         15.15 مگابایت

کیفیت:       720p

فرمت:        mp4


دانلود ویدئو

دانلود اسلایدها



* به دلیل نامناسب بودن نوع میکروفون، کمی کیفیت صدا مناسب نیست.
۳ موافقین ۰ مخالفین ۰ ۱۳ شهریور ۹۲ ، ۱۴:۲۹
cscience

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


یه فایل تک مثل mp3 یا انواع عکس و یا ... رو با مرورگر کروم یا فایرفاکس یا IE دانلود کنید بعدش اونو با آنتی ویروس اسکن کنید. بهتون چندتا فایل اسکن شده گزارش میده؟


من با Eset که اسکن میکنم میگه 2تا فایل اسکن شد!


حالا اتفاق جالبتر اینکه فایلتونو یه بار فشرده کنید و دوباره بازش کنید. اکنون اسکن کنید.


من وقتی این کارو انجام میدم میگه 1 فایل اسکن شد. ینی اون فایل دومی با این کار حذف میشه.


حالا شما هام این کارو انجام بدین با آنتی ویروسای دیگه و اینجا بگین که نتیجه مشابه بوده یا نه. اینجوری حداقل میشه فهمید مشکل آنتی ویروسه یا اینکه نه واقعا یه موجود دیگه ای هم هست با فایل!

این مشکل وقتی که با download manager دانلود کنید وجود نخواهد داشت.

۳ موافقین ۰ مخالفین ۰ ۱۲ شهریور ۹۲ ، ۰۱:۱۶
cscience

به زودی یک آموزش خلاصه

برای ساخت بازی Snake با WPF

آغاز خواهد شد

(شاید ویدئویی آموزش بدم!)

۱ موافقین ۰ مخالفین ۰ ۱۱ شهریور ۹۲ ، ۲۳:۴۸
cscience

انتخاب فونت مناسب، یکی از مسائلیه که در طراحی UI خیلی مهمه. نکته‌ی مهم‌تر اینه که اگر از فونت سفارشی یا فونتی که فقط روی سیستم خودمون داریم، استفاده کنیم، وقتی که برنامه روی سیستم دیگه‌ای بخواد اجرا بشه، در صورتی که سیستم مقصد فونت مورد نظر شمارو نداشته باشه به مشکل می‌خوره. پس باید کاری کرد که فونت هم با برنامه جابجا بشه.

یه راهش اینه که هروقت برنامه رو جای دیگه میبرین به طرف مقابل بگید "لطفا فونت(های) ... را روی سیستم خود نصب نمایید". درسته که روش ساده و کارامدیه اما "کاربر پسند" نیست. کاربر دوست داره فقط رو فایل اجرای برنامه کلیک کنه و برنامه راحت و روون اجرا بشه.

روش دیگه‌ای که می‌خوام توضیح بدم اینه که فونت(های) مورد نیاز داخل یک فولدر کنار برنامه شما قرار می‌گیرن و فقط کافیه برنامه رو هرجا بردین این فولدر هم ببرین به عبارت دیگه توی پکیج برنامتون این فولدرو بذارید و تمام.

توضیحات روش در ادامه‌ی مطلب.

۳ موافقین ۰ مخالفین ۰ ۰۷ شهریور ۹۲ ، ۱۵:۴۷
cscience

فایل زیر چارت درسی کارشناسی ارشد رشته‌ی علوم کامپیوتر

مصوب 1376/11/19

می‌باشد

دانلود

۰ موافقین ۰ مخالفین ۰ ۰۶ شهریور ۹۲ ، ۲۱:۵۴
cscience

افرایش طول عمر با اسارت*!


می‌دانیم که:

متغیرهای محلی که در یک تابع تعریف می‌شوند، با خروج از تابع از بین می‌روند و به عبارتی پایان عمر آن‌ها همزمان با پایان تابع می‌باشد.

 

اکنون باید دانست که:

متغیر محلی یک تابع، در صورتی که در یک Lambda Expression استفاده شود (Capture شود) طول عمرش به اندازه‌ی نمونه‌ی delegate ساخته شده برای آن Expression، افزایش می‌یابد.


public Func<int> GetFunction()
 {
       int x = 0;
       return () => x++;
 }


Func<int> Inc = GetFunction();
Inc();
Inc();
MessageBox.Show(Inc().ToString());     // 2


 

* از بین معانی کلمه‌ی Capture، به نظرم انتخاب جالبی برای عنوان بود :دی

۰ موافقین ۰ مخالفین ۰ ۰۶ شهریور ۹۲ ، ۱۹:۳۴
cscience