לדלג לתוכן

מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

שינוי משחק שכתוב ב C

[עריכה]

מה עושים פה?

[עריכה]
  1. מייצרים משחק
    1. מורידים קוד של משחק
    2. מקמפלים אותו
    3. מריצים אותו ומשחקים בכיף שלנו.
    4. מקבלים נקודה בתחום OS.
    5. מרוצים מעצמכם.
  2. משנים את המשחק
    1. עושים שינויים בקוד
    2. מקמפלים אותו
    3. מריצים אותו
    4. מקבלים נקודה בתחום C.
    5. ממש מרוצים מעצמכם.

איך מתחילים?

[עריכה]

מתחילים עם להוריד את הקוד מהאינטרנט.

עברו לכותרת "משיגים את הקוד של המשחק".

ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב

[עריכה]
מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".

ננקה מה שעשינו בנסיון הקודם.

פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:

rm -r ~/games

וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.

משיגים את הקוד של המשחק

[עריכה]

מאיפה מורידים את הקוד?

[עריכה]

מהקישור הזה.

סיים לרדת? קדימה לשלב הבא.

מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים

[עריכה]

יוצרים את תיקיית המשחקים:

mkdir games

נכנסים אליה:

cd games

מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:

mv ~/Downloads/raylib_c_arkanoid-main.zip .

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

ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי?

זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.


ופותחים את הקובץ שהורדנו

[עריכה]

פותחים בעזרת הפקודה unzip:

unzip raylib_c_arkanoid-main.zip

עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.

אל תאמינו לי. תעשו

ls

כדי לבדוק.

נוצרה לכם התיקיה של המשחק?

יופי.

היכנסו אליה והמשיכו לקימפול.

קדימה קימפול. איך מקמפלים את המשחק?

[עריכה]

מורידים ומתקינים את כל הספריות שצריך לקימפול

[עריכה]

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

ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?

אז תצטרכו להתקין אותן, ככה:

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

אז ניכנס לתיקיה של המשחק:

cd raylib_c_arkanoid-main

נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):

su

ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:

./raylib_dependencies_install.sh

מחכים, מחכים מחכים, עד שסיים את ההורדות.

וכשמסיים יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס:

exit


מכינים לקומפיילר את כל מה שהוא צריך

[עריכה]

האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.

אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:

cmake -S . -B build

התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.

ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!

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


סיים? יופי.

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

מקמפלים

[עריכה]

עכשיו מקמפלים אל התיקיה build:

cmake --build build

יופי, רק תבדקו שאכן יש תיקיה build:

ls

ושבתוכה יש את התוכנה שיצרנו:

ls build/arkanoid

רואים שם arkanoid ירוק? זה המשחק שלכם.

מריצים את המשחק

[עריכה]

נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:

./build/arkanoid/arkanoid

עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)

בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.

מקבלים נקודה בתחום OS

[עריכה]

קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.

מרוצים מעצמנו

[עריכה]

ובצדק.

איך משנים את המשחק?

[עריכה]

ננסה לשנות את הגודל של הכדור.

למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.

אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:

vim src/main.c

איפה נמצא פה גודל של כדור?

[עריכה]

אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - הרדיוס של העיגול. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)

איך מחפשים מילה בvim? כתוב לכם בתזכורות של קורס אלפא.

מצאתי את הגודל! איך לשנות אותו?

[עריכה]

מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.

יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.

תזכורת, ככה מקמפלים את המשחק הזה:

cmake --build build

ואז מריצים:

./build/arkanoid/arkanoid

השתנה הגודל של הכדור?

ניצחון.

מקבלים נקודה בתחום C

[עריכה]

קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.

ממש מרוצים מעצמנו

[עריכה]

ובא לנו לשנות עוד דברים במשחק.

מה עוד אפשר לעשות?

[עריכה]

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

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

שיניתי דברים במשחק! איזה כיף.

[עריכה]

יש לי עוד רעיונות לשינויים!

[עריכה]

מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.

בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא.

שזה הקורס שלנו.

שהרגע סיימתם אותו.

מזל טוב! 🥳

מה, זהו?

[עריכה]

נראה לכם?! רק התחלנו!

אלא אם תכנות לא מעניין אתכם ובמפגש האחרון נרדמתם על המקלדת. במקרה כזה עדיף שתלמדו גיאוגרפיה, חשבון וזה. היה כיף, תבואו לבקר.

לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות!

[עריכה]

בדיוק!

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

זה הזמן להתקדם לדרגה 1 ומשם להגיע לחגורה צהובה בבטא.

כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!

יש! איפה נפגשים בשביל להתקדם בבטא?

[עריכה]

המפגשים של בטא במתנ"ס עדיין לא חזרו.

אז בינתיים אפשר להתקדם בדרגות בטא בזמן בית הספר, באותם מפגשים שבהם מתקיים קורס אלפא. ואפשר גם להתקדם בבית.

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

אבל זה כבר לא קשור למדריך הזה.

אז עכשיו

באמת

זהו.