ROB BOWDEN: مرحبا. أنا روب، وآمل الخاص لعبة لعبة 15. الآن، وهناك أربع وظائف تحتاج لتنفيذ هذا البرنامج في - الحرف الأول، رسم، تتحرك، وفاز. لذلك، دعونا ننظر في الحرف الأول. هنا، ونحن نرى أول شيء نحن بصدد القيام به هو تعريف متغير دعا العداد. انها تسير ليتم تهيئتها إلى العصور د د ناقص 1. تذكر أن د هو البعد من مجلسنا. كيف الحرف الأول هو الذهاب إلى العمل هو انه سيكون لتكرار عبر المجلس بأكمله ونحن في طريقنا للبدء في الجزء العلوي الأيسر. ودعنا نقول فقط نحن لديك لوحة 4 بنسبة 4. وبالتالي فإن أعلى اليسار نحن أريد أن أقول هو 15. ثم نحن ذاهبون لمجرد الاعتماد من خلال لوحات، قائلا 15، 14، 13، 12، 11، 10، 9، 8، 7، 6، 5، 4، وهلم جرا. حتى الجزء العلوي الأيسر، ونحن نتوقع أن تكون أوقات د د ناقص 1، والتي في 4 بنسبة 4 الحالة ستكون 16 تحت الصفر 1، الذي هو بشكل صحيح 15. والآن هنا حيث نحن ذاهبون ل تكرار عبر المجلس بأكمله. ونحن في طريقنا إلى تعيين كل موقف في المجلس إلى القيمة الحالية لل مكافحة دينا، ومن ثم مكافحة يجري لإنقاص، بحيث المقبل موقف نصل ستكون لدينا عداد تكون أقل من واحد الموقف السابق. لذلك كان علينا في البداية 15 و إنقاص العداد. حتى ذلك الحين ونحن في طريقنا لتعيين 14 إلى موقف المقبل، إنقاص العداد، ونحن في طريقنا للتعيين 13، وهلم جرا. أخيرا، نحن بحاجة الى التعامل مع تلك الزاوية الحالة التي يكون فيها، وإذا كان المجلس لديه حتى البعد، ثم القيام بعد 15، 14، 13، 12، على طول الطريق وصولا الى 3، 2، 1، هو تسير على ترك لنا مع لوحة غير قابلة للحل. وعلينا أن مبادلة 1 و2. لذلك، إذا د زارة الدفاع 2 يساوي 0، وهذا كيف ونحن في طريقنا للتحقق لمعرفة ما اذا كان حتى. إذا د زارة الدفاع 2 يساوي 0، ثم في الصف د ناقص 1، والذي هو الصف السفلي، و موقف د ناقص 2 أو عمود د ناقص 2، ونحن في طريقنا إلى تعيين هذا إلى 2، و العمود د ناقص 3 نحن الذهاب الى تعيين إلى 1. ذلك أن مجرد عكس حيث 1 و 2 حاليا. أخيرا، ونحن في طريقنا لتعيين جدا أسفل اليمين يساوي فارغة، حيث فارغة تم تجزئة المعرفة في الجزء العلوي ك 0. لذلك، لم يكن ذلك ضروريا تماما، لأن هذا لحلقة ستكون لدينا تعيين أسفل اليمين إلى 0، منذ وسوف تصل بشكل طبيعي مضادة 0. ولكن هذا يعتمد علينا مع العلم أن تم تجزئته فارغة لإيجاد 0. إذا ذهبت إلى هذا البرنامج في وقت لاحق و تغيير فارغة في الجزء العلوي إلى 100، فإنه يجب أن لا تزال تعمل. لذلك هذا هو مجرد التأكد من أن أسفل اليمين هو في الواقع يساوي لدينا قيمة فارغة. أخيرا، لدينا اثنين من المتغيرات العالمية، لذلك أنا وفارغة ي فارغة، ونحن نرى تلك المعلنة في الأعلى. ونحن في طريقنا إلى استخدام تلك العالميتين المتغيرات للحفاظ على تعقب من موقف فارغة، لذلك ما نقوم به لا بحاجة الى ان ننظر من خلال بأكمله مجلس للعثور على كل واحد فارغ مرة ونحن في محاولة لجعل هذه الخطوة. وبالتالي فإن موقف فارغة دائما سوف تبدأ في أسفل اليمين. بحيث يتم إعطاء الحق السفلي بواسطة المؤشرات 1 د ناقص 1، د ناقص. لذلك، وهذا هو الحرف الأول. الآن ننتقل إلى رسم. لذلك، التعادل ستكون مماثلة أين نحن ذاهبون إلى تكرار على المجلس بأكمله. ونحن نريد فقط لطباعة القيمة وهذا في كل موقف للمجلس. حتى هنا، ونحن طباعة قيمة هذا في كل موقف للمجلس. وتلاحظ أن نقوم به -. وهذا مجرد إخبار أن printf بغض النظر عن ما اذا كان رقم واحد أو عدد اثنين من أرقام، ونحن لا تزال تريد أن يستغرق عمودين في الطباعة بها، بحيث إذا كان لدينا اثنين من أرقام واحد أرقام أرقام في المجلس نفسه، لدينا ويكون لمجلس تزال تبدو لطيفة ومربع. لذلك نحن نريد أن نفعل ذلك كل قيمة في المجلس، فيما عدا فارغا. لذلك، إذا كان الموقف في مجلس يساوي الفراغ، فإننا على وجه التحديد تريد طباعة فقط تسطير لتمثيل فارغة، بدلا من مهما كانت قيمة فارغ هو في الواقع. أخيرا، ونحن نريد لطباعة من سطر جديد. لاحظ أن هذا لا يزال داخل الخارجي للحلقة، ولكن خارج والداخلية للحلقة. لأن هذا الخارجي للحلقة وبالتكرار على كل الصفوف، وهكذا هذا هو printf الذهاب الى مجرد طباعة سطر جديد، لذلك نحن الانتقال إلى طباعة الصف التالي. وهذا كل شيء عن التعادل. لذا، دعونا الآن ننتقل إلى التحرك. الآن، ونحن تمرير الخطوة، البلاط أن يتم إدخال المستخدم في اللعبة - أنها أدخل البلاط كانوا يريدون التحرك - و كنت من المفترض أن ترجع منطقي، لذلك إما صحيحة أو خاطئة، اعتمادا على إذا كان هذا التحرك في الواقع صالحة - سواء كان ذلك يمكن أن يكون البلاط انتقل إلى مساحة فارغة. حتى هنا، فإننا نعلن متغير محلي، tile_1 وtile_j، والتي تسير على تكون مشابهة لblank_i وblank_j، إلا انها سوف تتبع موقف البلاط. الآن هنا، ونحن ذاهبون الى استخدام blank_i وblank_j ويقول كل الحق، لذلك وهنا فارغة على متن الطائرة. الآن، هو فوق البلاط فارغة؟ هو البلاط إلى يسار فارغة؟ هو البلاط على يمين الفراغ؟ هو البلاط تحت فارغة؟ لذلك، إذا كان البلاط هو في أي من تلك مواقف، ثم نحن نعلم أن البلاط يمكن نقل الى المركز فارغة و يمكن نقل فارغة إلى حيث بلاط حاليا. حتى هنا، ونحن نقول إذا متن على الموقف blank_i ناقص 1 blank_j. لذلك هذا هو القول هو البلاط أعلاه الفراغ الحالي؟ وإذا كان الأمر كذلك، ونحن في طريقنا إلى تذكر هذا هو موقف البلاط. البلاط هو في موقف blank_i ناقص 1 وblank_j. الآن أول، لدينا أيضا هذا الاختيار الحق هنا، ذلك هو blank_i أكبر من 0. لماذا نريد أن نفعل ذلك؟ حسنا، إذا كان الفراغ هو في الصف العلوي مجلس الإدارة، ثم نحن لا نريد ل تبدو فوق فارغة لبلاط منذ لا يوجد شيء فوق قمة صف من المجلس. هذه هي الطريقة التي كنت قد ينتهي الحصول على شيء من هذا القبيل خطأ أو تجزئة البرنامج قد يكون مجرد عمل بطرق غير متوقعة. لذلك، وهذا هو التأكد من أننا لا البحث في الأماكن التي هي غير صالحة. الآن ونحن في طريقنا للقيام بنفس الشيء ل جميع التوليفات الممكنة الأخرى. حتى هنا، نحن نبحث أدناه فارغة لمعرفة ما إذا كان هذا هو البلاط. وعلينا أيضا أن نتأكد من أننا ليس على الصف السفلي، وإلا فإننا يجب أن لا ننظر للبلاط. هنا، ونحن في طريقنا للبحث على يسار فارغة لمعرفة ما اذا كان البلاط. وعلينا أن لا ننظر إلى اليسار إذا نحن في العمود أقصى اليمين. وهنا ونحن في طريقنا للنظر إلى حق فارغة، ونحن لا ينبغي نتطلع إلى الحق إذا كنا في العمود أقصى اليمين. لذلك، إذا لم تكن أي من تلك الأشياء الحقيقية، وهذا يعني ان لا البلاط المجاورة إلى فارغة ويمكن أن نعود كاذبة. ان هذه الخطوة غير صالح. ولكن، إذا كانت واحدة من تلك الحقيقية، ثم في هذه النقطة، ونحن نعلم أن tile_i و tile_j هي مساوية ل موقف البلاط. وهكذا، يمكننا استكمال المجلس في مواقف tile_i وtile_j. ونحن نعلم أن القيمة الجديدة أن تكون فارغة وأن موقف blank_i blank_j، الذي كان الأصلي فارغة - ونحن نعلم البلاط هو الذهاب الى الانتقال إلى هناك. لاحظ أننا لا نملك في الواقع للقيام مبادلة حقيقية هنا، لأننا نعرف القيم التي ينبغي إدراجها في تلك المواقف. نحن لسنا بحاجة مؤقت المتغير حولها. أخيرا، علينا أن نتذكر أننا لديك متغيرات العالمية التي هي لدينا تتبع الموقف من فارغة. لذلك نحن نريد لتحديث موقف الفراغ ليكون فيها البلاط كان في الأصل. وأخيرا، فإننا العودة الحقيقية منذ كانت خطوة ناجحة. نحن مبادلة بنجاح فارغة مع البلاط. كل الحق، ونحن لذلك الماضي تحتاج إلى التحقق وون. لذلك، فاز بالمثل بإرجاع منطقي حيث صحيح هو الذهاب للإشارة إلى أن وقد فاز مستخدم اللعبة. وكاذبة وتشير إلى أن اللعبة لا يزال مستمرا. لم يفز المستخدم. لذلك، وهذا سيكون الى حد كبير على العكس من الحرف الأول، حيث الحرف الأول، نتذكر، ونحن تهيئة المجلس إلى 15، 14، 13، 12، هلم جرا. في حين فاز، ونحن نريد لمعرفة ما اذا كان المجلس هو 1، 2، 3، 4، 5، وهلم جرا. لذلك، نحن ذاهبون لتهيئة لدينا مواجهة ل1 منذ هذا ما أعلى وينبغي أن يكون الأيسر من اللوحة. ثم نحن في طريقنا للحلقة على المجلس بأكمله. دعونا تجاهل هذا الشرط لثانية واحدة. وهذا الشرط هو مجرد الذهاب الى الاختيار هو لوحة في هذا الموقف يساوي التهم الحالية؟ إذا كان الأمر كذلك، زيادة العد بحيث موقف القادمة ونحن ننظر إلى أعلى واحد من الموقف ونحن في الوقت الراهن. لذلك هذا هو كيف نحصل على أعلى اليسار يجب أن يكون 1. زيادة العد إلى 2. ننظر إلى موقف المقبل. هذا هو 2؟ إذا كان الأمر كذلك، زيادة العدد إلى 3. موقف المقبل، وهذا هو 3؟ إذا كان الأمر كذلك، زيادة العد إلى 4، وهلم جرا. لذلك، إذا كان هناك أي موقف بشأن المجلس الذي لا يساوي العد لدينا، ثم نريد أن عودة كاذبة منذ ذلك يعني هناك بعض البلاط التي هي ليس في الموضع الصحيح. حتى هنا، ما هو هذا الشرط تفعل؟ كذلك، تذكر أن الفراغ هو من المفترض أن تذهب في أسفل اليمين. وربما قيمة فارغة لن يساوي بالضرورة قيمة مواجهة ذلك سوف يتم التوصل في أسفل اليمين. لذلك نحن نريد تحديدا للتحقق مما إذا ط يساوي يساوي د ناقص 1 وي التساوي د يساوي ناقص 1 - الذي يقول إذا كنا تبحث في أسفل يمين مجلس - ثم نحن فقط تريد الاستمرار. نحن نريد لتخطي هذا خاص التكرار من حلقة ل. وهكذا، إذا ما تمكنا من الحصول من خلال هذا متداخلة للحلقة، وهذا يعني أن لم يكن هناك البلاط التي كانت في موقف غير صحيحة. ونحن خروج من حلقة وتأتي هنا، حيث يمكننا العودة الحقيقية. كانت جميع البلاط في المواضع الصحيحة وهذا يعني أن المستخدم لديه فاز في المباراة. وهذا كل شيء. اسمي روب بودين، وكان هذا 15.