اطلاعیه

Collapse
هیچ اطلاعیه ای هنوز ایجاد نشده است .

دوره آموزش swift - درس ۵: ساخت دومین اپلیکیشن, Tapper

Collapse
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
new posts

  • دوره آموزش swift - درس ۵: ساخت دومین اپلیکیشن, Tapper

    با سلام و عرض ادب
    در درس پیشین با تابع ها و دستورات شرطی آشنا شده اید
    حال به نوشتن دومین اپلیکیشن می پردازیم


    اسم این اپلیکیشن رو Tapper میزاریم. در این اپلیکیشن در صفحه اول, در فضای خالی عددی را می نویسیم و سپس با زدن کلید play, در صفحه بعد بر روی شکل ستاره, به همان اندازه که عددی را وارد کرده ایم کلیک می کنیم و وقتی به آن عدد رسیدیم, بازی ریست می شود و وارد صفحه سوم می شود, در صفحه سوم نوشته ای روی صفحه وجود دارد که شما برنده هستید و کلیدی برای بازگشت به صفحه اول.

    در صفحه دوم نیز نوشته زیر ستاره, تعداد کلیک های فعلی را نشان می دهد و عدد آنقدر بالا می رود که به عدد وارد شده برسد.
    برای دانلود شکل المان ها روی این لینک کلیک کنید

    برای ایجاد فضای نوشتاری برای نوشتن, text field را از object library جستجو می کنیم.

    نوشته صفحه دوم که میزان تپ ها را نشان می دهد یک Label است. مهم نیست چه چیزی در label بنویسید زیرا به صورت یک متغیر خواهد بود و تغییر می کند اما برای اینکه در App layout به مشکل نخورید نوشته ای مشابه با آنچه می خواهیم را می نویسید, به طور مثال
    کد:
    0 taps
    بعد از چیدن تمامی المان و تنظیمان App layout

    دو متغیر تعریف می کنیم

    کد:
     
    var maxtaps = 0 var currenttaps = 0
    maxtaps عددی است که در text field نوشته می شود و currenttaps هم تعداد تپ های ما در صفحه دوم است

    در بخش Action, هنگام دادن عملکرد به کلید play, بهتر است تعریف کنیم که اگر بر روی text field عدد صفر وارد شود یا عددی وارد نشود دکمه play عمل نکند و تنها در شرایطی عمل کند که حتما عددی وارد شود و عدد وارد شده بالای صفر باشد. به همین دلیل یک if در action کلید play اضافه می شود دستور به شکل زیر می شود

    کد:
    if texttaps.text != nil && texttaps.text != ""
    در این شرط می گوییم اگر نوشته وارد شده در texttaps ( این texttaps در واقع اسم text field است که در بخش outlet به آن نسبت داده ایم )‌ مساوی با صفر نباشد یا خالی ( "" ) نباشد کارکرد کلید play را انجام بده. کلید play براساس نوشته وارد شده در texttaps کار می کند و خود texttaps نیز می بایست براساس متغیر maxtaps باشد که در اول کار معرفی کردیم. بنابراین در تابع کلید play می بایست این دو را به یکدیگر وصل کنیم

    کد:
                
    maxtaps = Int(texttaps.text!)!
    با این دستور می گوییم که maxtaps برابر است نوشته وارد شده در texttpads . این نوشته که در واقع یک عدد است نیز از نوع int می باشد
    در هنگام زدین کلید play, متغیر currenttaps نیز باید صفر باشد بنابر این انرا نیز به تابع کلید play اضافه می کنیم

    کد:
                
    currenttaps = 0
    و در نهایت با زدن کلید play, عدد زیر ستاره در صفحه دوم نیز می بایست 0 tabs را نشان دهد. بنابراین یک تابع در جای دیگری درست می کنیم و مشخص می کنیم که نوشته زیر ستاره نخست صفر را نشان دهد و سپس با تغییر متغیر currenttaps عدد آن نیز عوض شود

    کد:
    func updateTabsNum() { taps.text = "\(currenttaps) Taps" }
    با ابن دستور می گوییم که taps ( این taps نامی است که به label زیر ستاره نسبت داده شده است ) یک متن است که برابر میزان عددی current taps است و جلوی آن عدد کلمه Taps نیز به صورت ثابت نوشته شود.

    این تابع نیز در کلید play فراخوان می شود.


    در action بعدی در صفحه دوم و بعد از زدن بر روی ستاره که در اینجا آنرا به نام سکه یا همان coin مشخص کرده ایم دستورات زیر وارد می شود

    کد:
    @IBAction func pressCoin(sender: UIButton) { currenttaps = currenttaps + 1 updateTabsNum() if gameIsOver(){ winnerAnnouncement() } }
    در اینجا می گوییم که با زدن بر روی این سکه, میزان current taps به علاوه یک شود. یعنی صفر اول با اولین ضربه به عدد یک تغییر پیدا می کند.
    در اینجا نیز برای بار دوم تابع آپدیت نوشته زیر سکه را فراخوان می دهیم که با زدن هر کلید, نوشته نیز تغییر پیدا کند. اگر به کد ها دقت کتید دو تابع دیگر نیز فرخوان داده اشت که gameIsOver و winnerAnnouncement نام دارند. تابع آنان به شکل زیر است

    کد:
    func gameIsOver() -> Bool { if currenttaps >= maxtaps { return true } else { return false } }
    اگر متغیر ها را خوانده باشید حتما می دانید که متغیر های نوع Bool نوعی هستند که درست یا نادرست را تشخیص دهند. در این حال می گویید که اگر currenttaps مساوی یا بیشتر از maxtaps شود عملیات مورد خواسته ما درست خواهد بود

    و اگر درست باشد کار ادامه پیدا کنید و تابع بعدی که پیرامون معرفی برنده است فراخوان شود

    کد:
    func winnerAnnouncement() { logo.hidden = true playbuttom.hidden = true texttaps.hidden = true coin.hidden = true taps.hidden = true winner.hidden = false gameRepeat.hidden = false }
    در آخر هم هنگام معرفی action کلید repeart the game که در وقع شما را به صفحه اول باز می گرداند باید مشخص کنیم که بعد از بازگشت به صفحه اول, text field دوباره خالی شود ( وگرنه همان عددی را نشان می دهد که دفعه قبل وارد کرده اید ) و currenttaps و maxtaps نیز دوباره صفر شوند.

    ظاهر کار کمی پیچیده به نظر می رسد اما اگر با دقت به منطق کار دقت کنید می بینید که آسان است. نمای کلی کد ها به شکل زیر است

    کد:
    import UIKit class ViewController: UIViewController { //variable var maxtaps = 0 var currenttaps = 0 //outlet //FirstPage @IBOutlet weak var logo: UIImageView! @IBOutlet weak var playbuttom: UIButton! @IBOutlet weak var texttaps: UITextField! //SecondPage @IBOutlet weak var coin: UIButton! @IBOutlet weak var taps: UILabel! //ThirdPage @IBOutlet weak var winner: UILabel! @IBOutlet weak var gameRepeat: UIButton! //Action @IBAction func pressPlay(sender: UIButton) { if texttaps.text != nil && texttaps.text != "" { logo.hidden = true playbuttom.hidden = true texttaps.hidden = true coin.hidden = false taps.hidden = false winner.hidden = true gameRepeat.hidden = true maxtaps = Int(texttaps.text!)! currenttaps = 0 updateTabsNum() } } @IBAction func pressCoin(sender: UIButton) { currenttaps = currenttaps + 1 updateTabsNum() if gameIsOver(){ winnerAnnouncement() } } @IBAction func repeatTheGame(sender: UIButton) { maxtaps = 0 texttaps.text = "" currenttaps = 0 logo.hidden = false playbuttom.hidden = false texttaps.hidden = false coin.hidden = true taps.hidden = true winner.hidden = true gameRepeat.hidden = true } //Functions func updateTabsNum() { taps.text = "\(currenttaps) Taps" } func gameIsOver() -> Bool { if currenttaps >= maxtaps { return true } else { return false } } func winnerAnnouncement() { logo.hidden = true playbuttom.hidden = true texttaps.hidden = true coin.hidden = true taps.hidden = true winner.hidden = false gameRepeat.hidden = false } }
    i-phone.ir
    The Best or Nothing



    Twitter : Rouzbeh7000
صبر کنید ..
X