تعلم الكودات (السطور البرمجية ) الخاصة بتطبيقات ال IOS مع البرنامج التعليمي للغة Swift الجزء الثاني مشروعك الاول

ملاحظة // هذا البرنامج التعليمي حدث ل ios او  swift2 بواسطة  Brian Moakley. .  والذي بالاصل نشره  Mike Jaoudi و Ry Bristow. 

في هذا الجزء الثاني من هذه السلسلة، وعليك أن تضع مهاراتك سويفت الجديدة ، من خلال عمل لعبة تخمين عدد بسيط!
سوف تقوم باستخدام الكثير من المفاهيم التي تعلمتها في القسم الأول، لذلك لا تتردد في استخدام ملف ملعب النهائي الخاص بك من البرنامج التعليمي السابق للبحث عن الأشياء التي كنت قد نسيت كيفية القيام به.

ملاحظة // تاكد من ان لديك الاصدار Xcode 6.1 . للعمل مع هذه السلسلة .

كتابة النموذج : 

في هذا الجزء من سلسلة البرنامج التعليمي ,سوف تقوم بانشاء أحد تطبيقات التي تشغل اللعبة الكلاسيكية “اعلى أو أسفل “. الكمبيوتر يولد رقم سري عشوائي ويطالبك بتخمين الرقم. بعد كل تخمين ,يخبرك الكمبيوتر أذا كان التخمين لخاص بك عالي جدا” او منخفض جدا” حتى تحصل ع التخمين الصح. اللعبة ايضا” تحتفظ بعدد التخمينات التي كنت تأخذها. أولا”,أنت ذاهب الى نموذج التطبيق الخاص بك قبل ان تذهب لخلق “تطبيق أداة سطر الاوامر”. أفتح Xcode وأنشئ ملق ملف للعبة عن طريق الضغط على “Get started with a playground” :

كما هو الحال في البرنامج التعليمي السابق, قم ب تعيين الاسم “My Playground” , التطبيق باسم “iOS” ,وبالضغط على “Next”.

أحفظ Playground اينما تريد.

قم بازالة الامر في الاعلى وبعد ذلك قم بتعريف “string” .

import UIKit

بعد ذلك قم بنسخ الاوامر التالية :

func randomIntBetween(low:Int, high:Int) -> Int {
  let range = high - (low - 1)
  return (Int(arc4random()) % range) + (low - 1)
}

 

ليس عليك ان تقلق حول ماذا يعني كل هذه الاوامر, ماعدا طريقة كتابة الكود الذي يعطيك رقم عشوائي بين اعلى واوطئ عدد. في نهاية المطاف سوف تحصل على كتابة الاساليب الخاصة بك فقط, ولكن الان انت فقط تستطيع استخدام هذه الطريقه التي تم توفيرها لك ,تماما” كما استخدمت ()Int في الجزء الاول من هذه السلسلة.

حان وقت صنع اللعبة : 

أول شي تحتاج القيام به هو ان نقول للبرنامج لتكوين رقم عشوائي للأجابة . احد الطرق أو الاساليب التي تم توفيرها لك في متناول اليدين هنا. أكتب السطر التالي في الجزء الاسفل من الملف الخاص بك في الملعب.

let answer = randomIntBetween(1, high: 100)

 مافعلت للتو كان تعريف ثابت من نوع 
 Int وتهيئته الى رقم عشوائي  بين 1 و100.
 بهذه الطريقة سوف تكون الاجابة مختلفة في كل مره بدون الحاجة للذهاب وتغيير الكود بشكل يدوي .
 الآن المستخدم سوف يحتاج لمعرفة مايفترض عليه القيام به. يمكنك استخدام عبارة () print لهذا.
 أدخل السطر التالي:
print("Enter a number between 1 and 100.")

 

ولسوء الحظ لاتسمح الملاعب ( playground)  لادخال المستخدم . بامكانك الانتقال الى “اداة سطر الاوامر Command Line Tool” .

الآن ,قم فقط بإنشاء متغير جديد للاحتفاظ بعدد صحيح يمثل التخمين  مثل هذا :

var guess = 7

حان الوقت لاستخدام المزيد من الاشياء التي تعلمتها من الجزء الاول . انت بحاجه لاستخدا بعض الجمل الشرطية لاخبار المستخدم

ما أذا كان اختياره ,أقل من ,أو مساوية للاجابة الصحيحة. امضي قدما” واعطاء نفسك الفرصة للمحاولة . لاتخاف للتحقق مره اخرى مع الجزء الاول من سلسلة الدروس أو ملف اللعبة الذي قمت بانشائه.اذا واجهتك مشكلة

هذا هو الحل :

 

إنشاء تطبيق سطر الاوامر “”Command Line Tool Application :

الملاعب ( playgrounds)  انشئت لاختبار اجزاء من الكودات (السطور البرمجية ) لكن فلا لاتستطيع الحصول على اي ادخال من مستخدم 

أو جعله تطبيق ومع ذلك. للقيام بذلك , شوف تحتاج الى إنشاء نوع مختلف من المشروع في Xcode . في هذا البرنامج التعليمي , انت سوف تستخدم اداة سطر الاوامر OS X command Line Tool هذا هو واحد من أسهل الطرق للبدء. 

تذكر يجب ان تمتلك الاصدار Xcode 6.1 للبرنامج أو في وقت لاحق لمواصلة هذا الجزء من البرنامج التعليمي!

قم بفتح Xcode إذا لم يكن مفتوحا بالفعل واضغط على الزر الذي يقول Create a new Xcode project.

إذا كنت غير متقصد إغلاق نافذة “Welcome to Xcode” أو بالفعل لديك مشروع Xcode مفتوح، يمكنك إنشاء مشروع جديد من خلال الذهاب الى File menu واختيار New > Project. ثم، في المقطع OS X اختر Application ثم Command Line Tool ثم اضغط Next. : 

 

على الشاشة التالية، املاء الحقول كما هو موضح :

  • Product Name : My First Project
  • Organization Name :  This field can be left blank. Or you can enter your company name.
  • (Organization Identifier : Enter com.yourname,  (com.rybristow
  • Language: Swift

اضغط Next ثم اختيار مكان لتخزين ملفات المشروع. الآن انقر فوق Create و Xcode  سوف ينشا مشروع جديد وفتحه بالنسبة لك.

تشغيل تطبيقك

تماما مثل عندما بدأت لأول مرة انشاء ملف  ملعب (Playground) خاص بك … Xcode يخلق الملف مع بعض التعليمات البرمجية في ذلك بالفعل. جرب النقر على زر Run في اعلى الشاشة هو المثلث الذي يبدو وكأنه زر “تشغيل”. 

عندما تقوم باضغط على هذا الزر Xcode يقوم بتشغيل تطبيقك  ..تحقق من الجزء السفلي من الشاشة. هناك مربع والتي تمتد عبر الجزء السفلي. في النصف الأيمن من هذا الإطار، يجب أن تشاهد البرنامج أنتج بعد تنفيذه الكتابة (Hello, World!)  كالتالي :

 

 

ملاحظة: إذا كان لديك شاشة أضيق، قد لا تكون قادرا على عرض جانبي المربع السفلي في وقت واحد. ربما كنت ترى هذا:

 

إذا كان هذا هو الحال، هناك أزرار في الزاوية اليمنى السفلى من مربع. انقر على واحد يحتوي على النصف الأيمن من المربع المظلل.

قبل أن تذهب إلى كتابة التطبيق الأول، وهنا بعض من الخصائص المختلفة لل Xcode

Xcode : في الجز الايمن من Xcode يعرض قائمة من الملفات التي هي جزء من المشروع . تم إنشاء الملفات ترى تلقائيا بواسطة القالب المشروع الذي استخدمته اوحد main.swift داخل My First Project Folder واضغط عليها  كما هو مبين أدناه :

 

يجب أن تبدو نافذة المحرر مشابهة جدا لقطة شاشة التالية :

 

وهذا ينبغي أن تبدو مألوفة جدا لك. السطر الأخير في  print("Hello, World!") هو تماما مثل عبارة ()print الذي عمل مع في الجزء 1 من هذه السلسلة ومع ذلك، ليس كل شيء هو نفسه. كما كنت عملت داخل Playground 

إذا كنت تستخدم Objective-C لإنشاء التطبيقات، مثل الذي استخدمته لديك، سيكون هناك المزيد لهذا الملف الأساسي. سيكون هناك خط آخر أعلن عنه دالة تسمى main. سويفت لم يعد يتطلب هذه الوظيفة، ولكن يتم تعيين المشروع حتى يتطلب ملف يسمى main.swift، لذلك تأكد من أنك لا تحاول إعادة تسمية هذا الملف.

 

الانتقال من النموذج الى المشروع :

أولا، المضي قدما وحذف () print لذلك كل ما تبقى هو مقطع التعليق في الجزء العلوي والسطر  import Foundation

الآن، يمكنك وضع في بعض التعليمات البرمجية من playground الخاص بك ….Copy and paste التعليمات البرمجية التالية من ملف playground الى main.swift الخاص بك اسفل  السطر import Foundation  

let answer = randomIntBetween(0, high: 100)
 
print("Enter a number between 1 and 100.")
 
var guess = 7
 
if(guess > answer) {
  print("Lower!")
} else if(guess < answer) {
  print("Higher!")
} else {
  print("Correct! The answer was \(answer.")
}

 

اوه لا! رمز وجود خطأ. لا داعي للقلق، وهذا فقط لأن الكمبيوتر لا يعرف طريقة لاستخدام هذا الملف الجديد، وتريد أولا لتحميل البرنامج

() randomIntBetween،لحل هذه المشكلة، تحتاج إلى تحميل helper file

ثم فتح مجلد التحميل الخاص بك (أو أينما كنت قد اكملت تحميلها) وجرها الى نافذة Xcode في المجلد My First Project.

تأكد من تحديد الخيار لنسخ العناصر في المشروع. بهذه الطريقة، إذا تم نقل موقع الملف الأصلي، للمشروع الخاص بك :

 

 

احفظ المشروع والان يجب ان يذهب  الخطأ .

السماح بادخالات المستخدم : دعونا نكون صادقين هذه اللعبة فيها عيب وهو ان عليك اعاده تشغيل اللعبة يدويا  في كل مرة تريد التخمين  يمكنك إصلاح ذلك عن طريق السماح للمستخدم إدخال تخمين من خلال helpers.swift file في main.swift هكذا :

print("Enter a number between 1 and 100.")
و
var guess = 7
الان لديك عدة اماكن للعمل امسح السطر :
var guess = 7 
الان عليك القيام بخلق ثابت يقوم بحفظ القيم التي يقوم المستخدم بادخالها 
أدخل السطر التالي من التعليمات البرمجية في الفضاء الذي أنشأته للتو.
let userInput = input()

قمت بانشاء ثابت لخزن الجملة التي تم إدخالها من قبل المستخدم على لوحة المفاتيح.
هذا أمر عظيم، ولكن لا يمكن مقارنة الجمل string مع ال Int لمعرفة ايها اكبر او اصغر من الاخر 
للقيام بذلك، تحتاج أولا إلى تحويل قيمة string المدخلة من قبل المستخدم إلى Int .
لنرى ما اذا كان يمكنك القيام بذلك بنفسك من ما تعلمته في الجزء 1 من هذه السلسلة . 
إذا واجهتك مشكلة، لقد قدمناالحل لك : 
الحل:
let inputAsInt = Int(userInput)
if let guess = inputAsInt  {
 
}  else  {
}
كتلة التعليمات البرمجية الموجودة بين 
if let 
و الاقواس المجعدة سيتنفذ اذا كانت القيمة
 Int 
هذا هو المكان الذي يجب عليك ان تضع
if/else 
التعليمات البرمجية الآن يجب أن تبدو هكذا:

import Foundation
 
let answer = randomIntBetween(1, high:100)
 
print("Enter a number between 1 and 100.")
 
let userInput = input()
let inputAsInt = Int(userInput)
 
if let guess = inputAsInt {
  if(guess > answer) {
    print("Lower!")
  } else if(guess < answer) {
    print("Higher!")
  } else {
    print("Correct! The answer was \(answer).")
  }
}  else  {
 
}

الآن، يجب أن يأتي مع رسالة للمستخدم إذا مدخلاتها غير صالح. او شيء من هذا القبيل:
في else block  قم باضافة السطر الاتي :
print("Invalid input! Please enter a number.")
اضغط على زر التشغيل لمحاولة تشغيل اللعبة



 

نجاحا كبيرا! ولكن من الصعب تحقيق الفوز في المباراة في تخمين واحد فقط. 

 

القيام بتنفيذ جولات متتالية للعبة : اكتملت العبة الخاصة بك تقريبا! كل ما عليك القيام به هو إضافة أشياء قليلة أخرى وستكمل اول لعبة Swift لك  الآن، اللعبة فقط تتيح  لك تخمين مرة واحدة ولجعل اللعبة تسمح لك باعادة التخمين حتى الوصول الى الاجابة الصحيحة ستستخدم الحلقة while loop فقط ستحتاج  حلقة while بسيطة وسوف تستخدم التعليمات البرمجية قم باضافة السطر البرمجي الاتي في نهاية في نهاية الكود الخاص بك :

 

قم بنقل السطور البرمجية داخل الحلقة

while(true)

عدا الاعلان عن الثابت  answer  الفايل الخاص بك سيبدو هكذا :

 

 

إذا حاولت تشغيل التطبيق الآن اللعبة لن تتوقف (إذا حدث شي ما ، اضغط على زر التوقف على يمين زر تشغيل) تحتاج إلى طريقة

لوقف اللعبة . لعمل ذلك  استخدام العبارة break statement التي  تعلمتها في الجزء 1 من هذه السلسلة.

break statement يجب ان تضعها داخل else هكذا : 

 

سيؤدي هذا إلى برنامج للخروج من حلقة  while عندما يدخل المستخدم قيمة مساوية للمتغير answer اخيرا وليس اخرا 

تحتاج إلى وسيلة لتشمل عدد المحاولات  للمستخدم أن يخمن الإجابة الصحيحة. قم ب إنشاء متغير جديد قبل while loop  اسمه turn يساوي 1.

var turn = 1

الان اضبط الدالة () print بحيث تتضمن ماهو الرقم المخمن من قبل المستخدم

هكذا :

print("Guess #\(turn): Enter a number between 1 and 100.")

ان افضل مكان لزيادة المتغير turn هو في نهاية ال while loop ادخل السطر البرمجي التالي قبل القوس الاخير {  : 

turn = turn + 1

ثم ضع الدالة ()print بعد الحلقة while loop ليتمكن المستخدم من معرفة عدد المحاولات الصحيحة

كالتالي :

print("It took you \(turn) tries.")

الاقتراح الاخير سيكون في استخدام عبارة continue في الحالة التي يتم إدخال مدخلا غير صحيح. بهذه الطريقة لايتم معاقبة المستخدم على الخطأ  else statement يجب ان تنتمي الى if let statement هكذا   : 

 

في النهاية الفايل الخاص بك يجب ان يبدو هكذا : 

 

رائع! الآن قم بتشغيل التطبيق الخاص بك والتمتع بالعبة!

تعليقان 2

  1. That’s what we’ve all been waiting for! Great posintg!

    الرد
  2. شرح وافي

    الرد

أرسل

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *