איך עושים משחק מחשב

תכנות · לכיתות ד׳–ט׳

משחק מחשב נראה כמו קסם: עולם שלם שמגיב לכל לחיצה. אבל מאחוריו יש רעיונות שכבר הכרנו — לולאות, תנאים, משתנים ואירועים — ועוד כמה טריקים חכמים. בשיעור הזה נפתח את מכסה המנוע של משחק, ונבין איך בונים אחד, מהרעיון ועד השחקן הראשון.

הכול מתחיל ברעיון

לפני שורת קוד אחת, צריך לדעת מה בונים. מעצבי משחקים שואלים: מה המטרה של השחקן? מה הוא עושה רוב הזמן — קופץ, פותר חידות, בונה? מה מקשה עליו? ומתי הוא מנצח או מפסיד? את כל זה כותבים במסמך עיצוב קצר, ולעתים קרובות מציירים על נייר איך ייראו המסכים. משחק טוב מתחיל לעתים קרובות מרעיון פשוט אחד שכיף לחזור עליו.

משחקים מפורסמים רבים נולדו מרעיון קטן. ״פונג״ מ־1972, אחד ממשחקי הווידאו המצליחים הראשונים, היה בעצם טניס שולחן פשוט: שני מחבטים וכדור. ״טטריס״, שנוצר ב־1984 בידי המתכנת אלכסיי פז׳יטנוב, הוא רק צורות שנופלות וצריך לסדר אותן בשורות. הלקח: לא צריך עולם ענק כדי שיהיה כיף — צריך חוקים ברורים ואתגר שגדל לאט.

לולאת המשחק

בלב כל משחק יש לולאה שרצה כל הזמן, ונקראת לולאת המשחק. בכל סיבוב שלה קורים שלושה דברים: בודקים קלט (האם השחקן לחץ על משהו?), מעדכנים את העולם (מזיזים דמויות, בודקים התנגשויות, מעדכנים ניקוד) ומציירים את המסך מחדש. כל ציור כזה נקרא פריים, ומשחקים רבים מציירים 30 או 60 פריימים בשנייה. זה קורה כל כך מהר שהעין רואה תנועה רציפה, כמו בסרט.

תנועה במשחק היא בעצם שינוי של משתנים. לדמות יש מיקום — x ו־y — ובכל פריים מוסיפים להם קצת. אם בכל פריים מוסיפים 5 ל־x, הדמות זזה ימינה. כוח משיכה נבנה בעזרת משתנה של מהירות אנכית: בכל פריים המהירות כלפי מטה גדלה קצת, ולכן דמות שקפצה עולה, מאטה, ונופלת חזרה — בדיוק כמו כדור שזורקים למעלה.

התנגשויות, אקראיות ושלבים

משחק צריך לדעת מתי דברים נוגעים זה בזה: הדמות במטבע, הכדור בקיר, השחקן באויב. לזה קוראים זיהוי התנגשויות. דרך פשוטה היא לדמיין מלבן סביב כל דמות ולבדוק בעזרת תנאים אם המלבנים חופפים. בסקראץ׳ זה כבר מוכן: בלוק החיישן ״נוגע ב…?״ עושה את הבדיקה בשבילכם.

כדי שמשחק לא יהיה צפוי, משתמשים במספרים אקראיים: המטבע מופיע כל פעם במקום אחר, והאויב בוחר כיוון בהגרלה. בפייתון, למשל, random.randint(1, 6) מגריל מספר שלם מ־1 עד 6, כמו קובייה (אחרי import random). ויש שלבים: כל שלב קצת יותר קשה — אויבים מהירים יותר, פחות זמן — כדי שהשחקן ילמד וישתפר בהדרגה.

הצוות ובדיקות עם שחקנים

משחק קטן אפשר לבנות לבד, אבל משחקים גדולים בונים צוותים: מעצבי משחק שממציאים חוקים ושלבים, מתכנתים שכותבים את הקוד, אמנים שמציירים דמויות ועולמות, מלחינים ואנשי סאונד, כותבים שכותבים את הסיפור, ובודקים שמשחקים שוב ושוב ומחפשים באגים. רוב המשחקים נבנים בעזרת מנוע משחק — תוכנה שכבר יודעת לצייר, לנגן צלילים ולחשב התנגשויות, כדי שהצוות יתמקד במשחק עצמו.

השלב החשוב ביותר הוא לתת לאנשים לשחק — ולשתוק ולהסתכל. איפה הם נתקעים? מה משעמם אותם? מה הם לא הבינו? מה שנראה ברור ליוצר הרבה פעמים לא ברור לשחקן. משנים, ובודקים שוב. ועוד דבר: משחק טוב מכבד את השחקנים — הוא הוגן, לא מבקש פרטים אישיים, ומתאים לגיל שלהם. נסו לבנות בסקראץ׳ משחק קטן, ותנו לבן משפחה לבדוק אותו.

✅ חידון: איך עושים משחק מחשב

1. מה עושה לולאת המשחק בכל סיבוב?

2. מה זה פריים?

3. איך גורמים לדמות לזוז ימינה?

4. מה זה זיהוי התנגשויות?

5. מה עושה ⁦random.randint(1, 6)⁩ בפייתון?

6. מה זה מנוע משחק?

7. איך בונים כוח משיכה במשחק?

8. מה השלב החשוב שבו נותנים לאנשים לשחק ומסתכלים?

🖨️ דף עבודה להדפסה

8 שאלות, שאלות לחשיבה ודף תשובות עם הסברים.

🤖 באקדמיית ה־AI: בינה מלאכותית ומשחקים ←איך מחשבים למדו לשחק — ואיך דמויות במשחקים ״חושבות״.

📘 מושגים מהשיעור

💬 שאלות לשיחה

  1. בחרו משחק שאתם אוהבים. מה הקלט, מה מתעדכן בכל פריים, ומה תנאי הניצחון?
  2. תכננו משחק פשוט עם רעיון אחד. מה יהפוך כל שלב לקשה קצת יותר?
  3. למה לדעתכם קשה ליוצר משחק לראות את הבעיות במשחק שלו?

📖 קטע קריאה בנושא: 🤖 הריקוד של הרובוט

מסיבת חנוכה החליטה הכיתה של יעל לתכנת רובוט קטן שירקוד. הריקוד היה פשוט: צעד ימינה, צעד שמאלה, סיבוב, כף. וכל זה צריך לחזור עשר פעמים.

יעל התחילה לכתוב את ההוראות. אחרי שלוש כבר היו לה שתים־עשרה שורות, והיד התעייפה. ״אם נמשיך ככה, יהיו לנו ארבעים שורות,״ . ״ואם נטעה בשורה אחת, יהיה קשה למצוא את הטעות.״

המדריך מהחוג, רועי, הראה לה דרך קצרה: . ״לולאה היא הוראה שאומרת למחשב: חזור על הפעולות האלה כמה פעמים,״ הסביר. ״במקום לכתוב את אותן הוראות שוב ושוב, כותבים אותן פעם אחת, ומבקשים לחזור עליהן עשר פעמים.״

יעל כתבה: חזור 10 פעמים: צעד ימינה, צעד שמאלה, סיבוב, כף. רק חמש שורות! והרובוט רקד בדיוק כמו שרצתה.

ואז עלה לה רעיון. ״אם אני רוצה שהוא ירקוד לאורך כל השיר, אני צריכה רק לשנות את המספר!״ היא שינתה מ־10 ל־20, והרובוט המשיך לרקוד עד סוף השיר.

רועי חייך: ״לולאות נמצאות כמעט בכל תוכנה. משחק שבודק כל רגע אם לחצת על , אפליקציה שמציגה את כל ההודעות שלך, כולן משתמשות בלולאות.״

📖 מילון הקטע
  • לקראת — לפני, כהכנה ל־
  • מחיאת — מכה של כף יד בכף יד
  • נאנחה — הוציאה אוויר בעייפות או בצער
  • לולאה — הוראה לחזור על פעולות כמה פעמים
  • מקש — כפתור במקלדת
  • חזרות — הפעמים שעושים משהו שוב

שאלות

1. מה הייתה הבעיה בדרך הראשונה של יעל?
2. מה זו לולאה?
3. כמה שורות הייתה יעל כותבת בלי לולאה עבור עשר חזרות?
4. איזה יתרון נוסף של לולאה גילתה יעל בסוף?
5. תנו דוגמה מהחיים שלכם לפעולה שחוזרת כמה פעמים, וכתבו אותה בעזרת ״חזור ... פעמים״.

עוד שיעורים בתכנות

לכל 16 השיעורים בתכנות ←

חוברת ומבחן לדוגמה לכיתה

שאלות נפוצות

באיזו שפה כותבים משחקים?

בהרבה שפות. למתחילים — סקראץ׳, שבה אפשר לבנות משחקים שלמים. משחקים גדולים נכתבים לרוב בשפות כמו C++ ו־C#, בעזרת מנועי משחק. גם בפייתון ובג׳אווהסקריפט אפשר לבנות משחקים פשוטים.

כמה זמן לוקח לבנות משחק?

משחק קטן בסקראץ׳ אפשר לבנות בשעה או שתיים. משחק מסחרי גדול יכול לקחת כמה שנים ולהעסיק מאות אנשים. כדאי להתחיל קטן מאוד ולהשלים — עדיף משחק קטן שגמור מגדול שלא נגמר.

האם בינה מלאכותית משמשת במשחקים?

כן — למשל כדי שדמויות במשחק יגיבו בצורה חכמה לשחקן. באקדמיית ה־AI באתר יש שיעור על בינה מלאכותית ומשחקים.

שווה להסתכל גם על תכנות לילדים, ולומדים.

האם זה עזר?
גננות, מורות והורים: איזה דף חסר לכם?כל שבוע אנחנו מכינים את מה שהכי מבקשים. בחינם.
לבקשת דף ←או בוואטסאפ