Swift یک نوع دادهای داخلی به نام Bool ارائه میدهد که برای نمایش مقادیر درستی به کار میرود: true و false.
Swift سه عملگر منطقی (!، && و ||) ارائه میدهد که عبارتهای منطقی را با هم ترکیب و ارزیابی میکنند.
&&)عملگر and (&&) تنها زمانی true را برمیگرداند که هر دو عملوند true باشند.
اگر یکی از عملوندها false باشد، مقدار false را برمیگرداند.
یک عبارت یا مقدار منطقی را در هر طرف نماد && قرار دهید:
true && true // true
true && false // false
||)عملگر or (||) اگر حداقل یکی از عملوندها true باشد، true را برمیگرداند.
تنها زمانی false را برمیگرداند که هر دو عملوند false باشند.
یک عبارت یا مقدار منطقی را در هر طرف نماد || قرار دهید:
true || true // true
true || false // true
false || false // false
!)عملگر not (!) یک مقدار منطقی را معکوس میکند.
اگر مقدار false باشد true را برمیگرداند و اگر مقدار true باشد false را برمیگرداند.
عملگر ! را بلافاصله قبل از مقدار یا عبارت قرار دهید:
!true // false
!false // true
())میتوانید از پرانتز برای گروهبندی عبارتها و کنترل ترتیب ارزیابی استفاده کنید. در Swift، عبارتهای داخل پرانتز اول ارزیابی میشوند:
true && false && false || true // true
true && false && (false || true) // false
گروهبندی با پرانتز همچنین تعیین میکند که عملگر NOT چگونه روی عبارتهای پیچیده اعمال میشود:
!true && false // false (evaluates (!true) first, then false && false)
!(true && false) // true (evaluates (true && false) first to false, then !false)
هر جا لازم است ترتیب ارزیابی را روشن کنید یا خواندن شرطهای پیچیده را آسانتر کنید، از پرانتز استفاده کنید. وقتی اولویت پیشفرض از پیش روشن است، از افزودن پرانتزهای بیمورد بپرهیزید.
شما در حال ساخت بازی جدید و پرطرفدار «Wings Quest» هستید. در این بازی شما یک پرنده هستید که اینطرف و آنطرف حرکت میکند و دانه جمع میکند. بازیکن با برداشتن همهی دانهها برنده میشود. اگر بازیکن با عقابی تماس پیدا کند، همهی دانههایش را از دست میدهد و بازی را میبازد. یک استثنا برای این قاعده وجود دارد: بازیکن میتواند یک «پاورآپ» فعال داشته باشد که باعث میشود بالاتر از پرندههای دیگر پرواز کند.
هدف شما نوشتن چند قاعده است که در بازی استفاده خواهند شد.
در بازی، پرنده اگر در حالی که پاورآپ دارد با عقابی تماس پیدا کند، امتیاز جایزه میگیرد.
تابع bonusPoints(powerUpActive:touchingEagle:) را تعریف کنید که دو ورودی میگیرد: powerUpActive که نشان میدهد آیا پرنده پاورآپ فعال دارد یا نه، و ورودی touchingEagle که نشان میدهد آیا پرنده با عقابی در تماس است یا نه.
تابع باید فقط زمانی true برگرداند که پرنده پاورآپ فعال داشته باشد و با عقابی در تماس باشد، و در غیر این صورت false برگرداند.
bonusPoints(powerUpActive: false, touchingEagle: true)
// Returns false
در بازی، بازیکن با برداشتن یک دانه یا یک پاورآپ امتیاز میگیرد.
تابع score(touchingPowerUp:touchingSeed:) را تعریف کنید که دو ورودی میگیرد: touchingPowerUp که نشان میدهد آیا پرنده با پاورآپی در تماس است، و ورودی touchingSeed که نشان میدهد آیا پرنده با دانهای در تماس است.
تابع باید اگر پرنده با پاورآپ یا دانهای در تماس باشد true برگرداند، و در غیر این صورت false برگرداند.
score(touchingPowerUp: true, touchingSeed: true)
// Returns true
تابع lose(powerUpActive:touchingEagle:) را تعریف کنید که دو ورودی میگیرد: powerUpActive که نشان میدهد آیا پرنده پاورآپ فعال دارد یا نه، و ورودی touchingEagle که نشان میدهد آیا پرنده با عقابی در تماس است یا نه.
تابع باید اگر شخصیت بازی با عقابی در تماس باشد و پاورآپ فعال نداشته باشد true برگرداند، و در غیر این صورت false برگرداند.
lose(powerUpActive: false, touchingEagle: true)
// Returns true
تابع win(hasPickedUpAllSeeds:powerUpActive:touchingEagle:) را تعریف کنید که این ورودیها را میگیرد:
hasPickedUpAllSeeds اگر پرنده همهی دانهها را برداشته باشد.powerUpActive اگر پرنده پاورآپ فعال داشته باشد.touchingEagle اگر پرنده با عقابی در تماس باشد.تابع باید اگر پرنده همهی دانهها را جمع کرده باشد و بر اساس ورودیهای تعریفشده در بخش ۳ بازی را نباخته باشد true برگرداند، و در غیر این صورت false برگرداند.
win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false