[عزف الموسيقى] سرور 1: حسنا، نحن هنا، ف مشاركة في مجموعة CS50. تهنئة أنفسكم من وجود تأتي حتى الآن منذ مرحبا الأولى عوالم وطبع الأهرامات لماريو. قمت بعمل موقع الأسبوع الماضي. ونحن في طريقنا إلى أن صنع واحدة أخرى هذا الاسبوع، واحد الذي يسمح لك ل حملة في جميع أنحاء الحرم الجامعي في جامعة هارفارد، واختيار حتى الموظفين CS50، و إعادتهم إلى هم المنازل السكنية. الآن الاسبوع الماضي عملنا في PHP، لغة جانب الملقم. لهذا ف مجموعة، ونحن الحصول على قدم لجافا سكريبت، الذي هو العميل اللغة الجانب. لذلك دعونا نلقي نظرة على بعض من كود التوزيع التي وفرت ل لكم لهذا ف مجموعة. في المجلد جافا سكريبت، سوف هناك تكون مجموعة من الملفات جافا سكريبت. هناك buildings.js، الذي يحتوي على مجموعة من المباني في جميع أنحاء هارفارد الحرم الجامعي، مع المعلومات الخاصة بهم والموقف. Houses.js هو مجموعة من هارفارد المنازل السكنية، بما لديها خطوط العرض وخطوط الطول. Passengers.js يحتوي على مجموعة من الركاب - الموظفين CS50 - أن عليك أن تكون اعادة ل البيوت السكنية الخاصة بهم. Math3D.js، الذي يحتوي على الكثير من وظائف للقيام مع الحركة. إذا كنت التفكير رياضيا، ثم أرحب بكم نلقي نظرة. ولكنك لا تحتاج إلى فهم كل شيء هناك. Shuttle.js، التي تتعامل مع حركة المكوك. وindex.html و هو الصفحة الرئيسية حيث كل شيء يحدث، حقا، حيث المستخدم التفاعل مع الموقع. Service.css هو ورقة الأنماط CSS، التي، بالإضافة إلى تويتر مكتبة التمهيد، وضوابط كيف تبدو index.html و. ثم لدينا أيضا service.js، التي يحتوي على وظائف الخدمة ل المكوك. وهنا هو أين أنت ذاهب لتكون ملء بعض لدوس. الآن دعونا نلقي نظرة على الأشياء و صفائف النقابي في جافا سكريبت، الذي لجميع النوايا والمقاصد قابلة للتبادل. إذا أردت أن تجعل كائن متغير دعا عصا، وأود أن نعلن ذلك. وداخل تلك الأقواس المتعرجة أود تحديد جوهر هو يونيكورن. الخشب هو الكرز. وطول هو 13. الآن يمكنني أيضا الوصول إلى القيم من الكائنات باستخدام النقابي تدوين مجموعة. المؤشر الاساسي عصا جدا، وأنا يمكن أن يحدد أن يساوي يونيكورن، أو تحقق ذلك، إذا كنت بحاجة. أو يمكنني استخدام المشغل نقطة. عصا خشب الكرز يساوي نقطة، وهلم جرا، وهكذا دواليك. لذلك ترى أن صفائف النقابي و الكائنات في جافا سكريبت ستكون للتبادل، والإرادة تأتي في متناول اليدين تماما. ثم نرى مجموعة من المباني في buildings.js. مرة أخرى، مجموعة من الكائنات. إذا أردت أن تجعل مجموعة من أفضل المباني في الحرم الجامعي في جامعة هارفارد، ثم وأود أن جعله على النحو التالي. باستخدام هذه الرموز الكائن، حيث أنا تخزين الجذر، الاسم والعنوان و خطوط العرض والطول والعرض لكل كائن مبنى واحد. دعونا نتحدث بسرعة عن المتغيرات في جافا سكريبت. مثل PHP، جافا سكريبت المتغيرات يتم ضعيفة أو فضفاضة كتبته. لإنشاء متغير محلي، أنت البادئة اسم المتغير مع V-A-R، فار. الآن في جافا سكريبت، وسوف الوظائف الحد من نطاق المتغيرات. حتى إذا كان لديك متغير محلي داخل وظيفة، ثم وظائف أخرى لا يمكن الوصول إليه. ولكن خلافا C، الحلقات والظروف لا تحديد نطاق متغير. ذلك حتى لو كنت نعلن ذلك من داخل الشرط، فإن وظيفة كاملة الحصول على ذلك. الآن دون فار، المتغير سوف تكون عالمية. لذلك إذا كنت مجرد إعلان اسم و تعيين قيمة، ثم هذا المتغير سيكون متغير عمومي في جافا سكريبت. الآن في المنازل، لدينا النقابي مجموعة من الكائنات نوع المنزل، حيث كل بيت هو مجرد العرض والطول. ثم لدينا الركاب مجموعة، وهو مجموعة من نوع الكائن الركاب. لذلك كل راكب لديه المستخدم، اسم، ومنزل. تلاحظ أن اراه من نوع الركاب، والتي في الواقع يعني فقط أن كل كائن لديه نفس الزوج قيمة المفتاح. وذلك في كل كائن من النوع الراكب اسم المستخدم، وهو اسم، ومنزل. لذلك ماذا نحن بحاجة إلى قيام لمجموعة P؟ حسنا، نحن في حاجة للسماح للمستخدمين لاختيار حتى الموظفين، لعرض كافة الموظفين التي هي حاليا في المكوك لدينا، وإسقاط أجبرتها على الفرار. ثم سنتحدث أيضا عن اضافية الميزات التي يمكن تنفيذها ل ف مجموعة المكوك. ولكن دعونا نتحدث عن لاقط الأول. وكانت وجوه الموظفين CS50 زرعت في جميع أنحاء الحرم الجامعي، حيث كل ويتم تنفيذ الوجه كعلامة مكان على الأرض 3D، ونتيجة ل علامة على الخريطة 2D. وذلك عندما يقوم المستخدم بالنقر فوق بيك اب الزر، ونحن نريد لإضافة القريبة الركاب على متن المكوك. ونريد أيضا لإزالة مكانها احتفال من العالم، وإزالة الخاصة بهم علامة من على الخريطة، مشيرا إلى أن انهم في المكوك لدينا الآن. لذلك كيف يمكننا الكشف عن حالة الركاب ضمن مجموعة من المكوك لدينا؟ كذلك، والمسافة وظيفة - لذلك المكوك مسافة نقطة، ويمر في خطوط الطول والعرض، وسوف حساب المسافة من الحالية موقف المكوك إلى نشير الذي تحدده مع هذا نظرا خطوط الطول والعرض. بحيث يمكنك استخدام هذا لحساب المسافة من المكوك إلى الركاب. ولكن كيف يمكنك أن تعرف أين الركاب هم؟ حسنا، هذا هو المكان الذي علينا أن تعديل وظيفة تعبئة. ملء الأماكن جميع الموظفين والركاب في العالم، وإلى الخريطة، ولكن لا تخزين مواقعها. لذلك ربما يمكنك تخزين بهم وضع علامات وعلامات في بعض مجموعة العالمية. الآن هناك بالفعل مجموعة والعالمية تخزين المعلومات من الركاب. مخازن الركاب مجموعة كل اسم الراكب ومنزلهم. وربما لذلك يمكنك إضافة قليل من المعلمات هناك لكائنات الركاب. لمساعدتنا على كشف جميع الركاب ضمن مجموعة من المكوك لدينا، دعونا حلقة من خلال جميع الركاب في مجموعة من الركاب. حلقة لفي جافا سكريبت قد تبدو شيء مثل هذا، تشبه الى حد بعيد تلك لحلقة في C. أو يمكننا استخدام بديلة لهيكل الحلقة. لفار ط في مجموعة، حيث كنت وسوف يكون لا يزال المؤشر. ولكنك لا تحتاج إلى تحديد طول مجموعة نقطة الشرط، وأنا زائد زائد. موقع كل راكب هو التي قدمها علامة مكانها. لكن علامة المكان ليس لل العرض والطول. لدينا للوصول إلى تلك المعلمات من قبل الحصول على الهندسة، وذلك باستخدام الحصول على علم الهندسة على علامة المكان. ثم مرة واحدة لدينا هندسة، إما الحصول على العرض أو الطول، وذلك باستخدام تلك الوظائف. حتى الآن نحن نعرف كيفية اكتشاف ما إذا كان الركاب داخل مجموعة من المكوك لدينا. مرة واحدة لدينا تلك الركاب، وسوف نقوم تريد إضافة أي الركاب التي هي ضمن هذا النطاق. نحن نريد للسماح لهم للقفز على، و شغل مقعد على المكوك لدينا، ولكن فقط اذا كان لدينا مساحة كافية لهم. مجموعة مقاعد المكوك نقطة سوف بيان ما إذا كانت المقاعد فارغة، أو من هو هذا المقعد. إذا كان الأمر كذلك مقعد فارغ، ثم وسوف يكون هذا المقعد فارغا. حتى تكرار عبر مجموعة مقعدا، التحقق من وجود مقاعد فارغة، وتخزين الركاب في تلك المقاعد حتى تقوم ليس لدينا أي مقاعد فارغة أكثر. ولسوء الحظ، أي ركاب آخرين سوف تضطر إلى الانتظار ل في المرة القادمة المكوك يأتي حولها. بمجرد الحصول على المكوك، ونحن سترغب لإزالة علامة مكانها، والتي هو صورة في العالم 3D. إذا أردت أن إزالة علامة مكان ع، ثم أود أن الحصول على كافة الميزات من وجهة نظري الأرض، من برنامج Google Earth، ومن ثم إزالة هذا مكان محدد بمناسبة باستخدام وظيفة removeChild. ثم أخيرا، دعونا إزالة علامة، رمز على الخريطة 2D لأي الركاب أننا التقاط. لإزالة علامة، م، ثم سوف أكون أنا مجرد تنفيذ م نقطة setMap فارغة. القيام بذلك لأي الركاب داخل النطاق، والانتهاء من لاقط.