ZAMYLA צ'אן: בואו כיף עם חמישה עשר. חמש עשרה הוא המשחק הראשון שאתה מקבל כדי ליישם וזה אינטראקטיבי. עכשיו, שלא תדאג. אתה לא צריך לכתוב כל הדבר בעצמך. תסתכל על קוד ההפצה בגלל הרבה מבנה המשחק הוא כבר להגדיר עבורך. היא מקבלת ומנתח שורת הפקודה טיעון מהמשתמש ויוצר לוח המבוסס על קלט זה. הוא בודק אם המשחק מסתיים בנצחון ויציאות ברגע שהמשתמש של ניצח את המשחק. וכדי לנצח את המשחק, זה נהיה קלט מהמשתמש ו קורא לפונקציה על העברה. אז אנחנו הולכים להיות יישום ארבעה פונקציות למשחק של חמש עשרה, init, לצייר, מהלך, וזכה. ראשית, בואו להתמודד עם init. בinit, לאתחול, שאנו מייצגים הלוח במערך שלם 2D. וזה משתנה גלובלי בשם לוח עם הממדים מקס, ומקס, המידות המרביות של הלוח. עכשיו, הממד הממשי של הלוח ניתן על ידי המשתמש, המיוצגת ב ד המספר השלם, אשר יכול להיות פחות מ MAX. אבל, ב-C, אתה לא יכול לשנות את גודל מערכים, אז אתה תקוע עם ממד מרבי. התפקיד שלך בinit הוא כדי לאכלס הערכים של הלוח עם הערך הנכון. עכשיו, שראינו מערכי 1D, אבל איך מערכי 2D עובדים? יש מדד של הרציפות, אפס אינדקס כמו תמיד, ולאחר מכן גם של העמודה. ואתה ממלא את הרשת שלך ב יורד ערכים, בדיוק כמו זה. גריד, 0, 0, 0 שורה, עמודה 0, הוא 8, רשת 0, 1 היא 7. זה מיועד לדוגמא שבה ד, ד הקטן, הוא 3. עכשיו, את הלוח בחמש עשר גם חייב מכיל אריחים ריקים, אם יש לך אי פעם שיחק עם המשחק הפיזי. אבל, לוח הוא מערך של מספרים שלמים, ולכן כל הערכים חייבים להיות מספרים שלמים. אז זה תלוי בך כדי להחליט שלם ערך לייצג אריח ריק. כדי לאתחל את הלוח שלך, אתה יכול להשתמש מבני לולאה להכיל מצב התחלתי של הלוח, שבו לוח i j מייצג את האלמנט ב i שורה והעמודה j. הם מתחילים בסדר יורד ו, תזכור, שאם מספר האריחים הוא מוזר, ואז אתה הולך צריך להחליף את המיקום של 2 ושל 1. אז הנה, יש לנו שלנו לוח מאותחל. עכשיו, שאנחנו כבר אותחלנו לוח, זה זמן לצייר אותו. תיקו ידפיס את המצב הנוכחי של לוח, אבל אתה צריך לוודא להדפיס אריחים באותו סדר כי אתה כבר אותחל אותם. ואתה גם צריך לעצב המספרים שלך נכון. מכיוון שייתכן שיש לנו ספרות אחת ו דו ספרתי, אז אתה רוצה להדפיס חלל ריק לפני כל מספרים חד ספרתיים. אתה משתמש שעל ידי שימוש מציין המיקום -. אבל תזכור השטח הריק שלנו. אנחנו לא רוצים להדפיס את המספר האמיתי שאנחנו כבר נבחרו לייצג ששטח ריק בלוח, אבל אנחנו גם לא רוצה להדפיס שום דבר בכלל. אז מה שאתה יכול לעשות הוא להגדיר סמל או תו כדי לייצג את אריח ריק. בדוגמאות קודמות שבחרתי להדגיש, ואז אתה פשוט להדפיס כי בכל פעם שתגיע לריק חלל בתיקו הפונקציה שלך. אז לצייר יהיה מקונן ללולאות. משהו כזה. לכל שורה, ולאחר מכן עבור כל ערך ב השורה, אתה הולך להדפיס ערך במרחב זה. לאחר שהדפסת את כל הערכים בשורה, אז אתה ניתן להדפיס שורה חדשה. זכור כי על מנת שהתיקו שלך פונקציה צריכה להדהד או לשקף את הסדר בפונקציה אותחלה שלך. עכשיו שאתה לאתחל את הלוח ו כי אתה כבר ציירת אותו, הגיע זמן לתת לי המשתמש לערוך אותו ולעשות את המהלכים שלהם. אז בפונקצית Fifteen.c, תכנית לוקחת קלט מהמשתמש ו לאחר מכן קורא לפונקצית המהלך, עובר במספר האריחים ש משתמש רוצה להעביר. עכשיו, להיות זהיר. זה המספר האמיתי של האריח ולא עמדתה בפועל. אז, אתה תצטרך לחפש את האריח של עמדה לדעת איפה זה. עכשיו, אתה צריך לאפשר למשתמש היחיד לעשות צעד אם זה חוקי. מהלך חוקי הוא כל אריח שהוא בצמוד למשבצת הריקה. כלומר, מעל ומתחת, כדי השמאל והימין. אז אתה צריך לדעת איפה האריח הריק הוא גם כן. עכשיו, על כל מהלך שאתה מחפש אריח המשתמשים, אבל זה כנראה לא הטוב ביותר לחפש את האריח הריק בכל פעם, כי אתה עושה את זה בכל פעם משתמש רוצה להעביר. לכן, במקום זאת, עדיף לזכור איפה האריח ריק באמצעות כמה גם שם משתנה. אז ברגע שאתה מאפשר למשתמש לבצעם מהלכים, שהם גם עליהם דרך לנצחון במשחק של חמישה עשר. כדי לנצח את המשחק של חמש עשרה, האריחים צריך להיות בסדר מסוים, ו הפונקציה בודקת אם זכתה המשחק מסתיים בנצחון. זה מחזיר True אם המשחק מסתיים בנצחון ו האריחים הם בסדר הנכון, ושקר אחר. אז כדי לנצח במשחק של חמש עשרה, אריחים צריך להיות הגדלת סדר, עם אריח ריק בפינה ימנית התחתונה. אז איך אתה לבדוק האם המשתמש עבר את הלוח לתוך תקין נטייה? ובכן, תוכל לחזר על הלוח ו לבדוק את הערכים לוודא כי הם נמצאים במקום הנכון. כדי לעשות זאת, אתה יכול להשתמש מקונן ללולאות בדיוק כמו שעשית בתיקו ובinit. יש כמה דרכים לבדוק ולאמת אם הלוח הוא נכון ומנצח היווצרות, אם כי. אם אתה הולך משמאל לימין, החל מהשורה העליונה כלפי מטה, ולאחר מכן כל מספר חייב להיות גדול מ מקודמתה. להיות זהיר לגבי מה שמעריך שיש לך למרות שנבחר למשבצת הריקה שלך. או שאתה יכול להשתמש במשתנה בניגוד ל להבטיח כי כל ערך הוא במקום, אם אתה בא עם איזושהי נוסחה כדי לייצג את זה. אז יש לי כיף להתנסות עם המתמטיקה. ברגע שיש לך לבוא עם דרך, תמורה נכון ברגע שהמשתמש ניצח את המשחק. אבל אם כל ערך הוא שגויה, שיבה שקר, המשתמש צריך להמשיך לנוע בגלל שהם לא ניצחו את המשחק. ברגע שאתה ליישם סימון זו, ויחד עם אתחול, לצייר, ולזוז, אתה כבר סיימת את המשחק של חמישה עשר. יש מזל טוב וכיף לשחק. השם שלי הוא Zamyla וזה CS50.