ויקיספר
hewikibooks
https://he.wikibooks.org/wiki/%D7%A2%D7%9E%D7%95%D7%93_%D7%A8%D7%90%D7%A9%D7%99
MediaWiki 1.46.0-wmf.26
first-letter
מדיה
מיוחד
שיחה
משתמש
שיחת משתמש
ויקיספר
שיחת ויקיספר
קובץ
שיחת קובץ
מדיה ויקי
שיחת מדיה ויקי
תבנית
שיחת תבנית
עזרה
שיחת עזרה
קטגוריה
שיחת קטגוריה
שער
שיחת שער
מדף
שיחת מדף
TimedText
TimedText talk
יחידה
שיחת יחידה
אירוע
שיחת אירוע
מבוא לתכנות של קבוצת בטא/קורס אלפא
0
30658
180346
179294
2026-05-04T09:24:02Z
The duke
19
/* איך מחפשים משהו בvim? */
180346
wikitext
text/x-wiki
דף מידע מקוצר לתלמידי קורס אלפא - קורס מבוא לקבוצת בטא שמתאים לבתי ספר.
= מעקב מיקרו הרצאות באלפא =
[[מבוא לתכנות של קבוצת בטא/קורס אלפא/מיקרו הרצאות|זה פה.]]
= תזכורות - לינוקס =
=== מה כותבים כדי להפעיל את הלינוקס? ===
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
virtualbox
</source>
=== יש לי כבר משתמש במחשב שם אבל לא מתחבר לי פה ===
כי אין לך משתמש במחשב פה. זה לא חשבונות גוגל, כל מחשב מנהל את המשתמשים של עצמו.
=== איך בודקים אם יש לי משתמש על המחשב? ===
מריצים את הפקודה הזו עם שם המשתמש שלכם במקום username:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
id username
</source>
אם יש לכם משתמש הוא יכתוב לכם מה מספר המשתמש שלו ועוד פרטים עליו.
אם אין לכם, הוא יגיד שאין משתמש כזה.
=== אין לי משתמש ושכחתי את הפקודה ליצירת משתמש ===
זאת הפקודה, עם שם המשתמש שלכם במקום username:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
adduser username
</source>
* '''זה מבקש סיסמה, אנחנו לא יודעים מה הסיסמה שנתנו לנו מבית הספר'''
לא מעניין אותנו סיסמת משרד החינוך. זה לא קשור. אנחנו צריכים שתמציאו סיסמה למשתמש שאתם יוצרים עכשיו בלינוקס.
* '''הוא לא כותב לי את הסיסמה!'''
הוא קיבל את הסיסמה שכתבת, הוא פשוט לא רוצה שאני אראה את הסיסמה שלך.
* '''כתבתי סיסמה ולחצתי enter, מה הוא רוצה עכשיו?'''
שוב את אותה סיסמה. לוודא שלא טעיתם.
* '''הוא שואל אותי דברים'''
אל תענו לו, הוא לא חייב לדעת. תלחצו enter כדי לא לענות.
==== זהו, סיימתי ליצור משתמש, מה עכשיו? ====
עכשיו לחזור לטרמינל 7:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
CTRL+ALT F7
</source>
ולהתחבר עם שם וסיסמה.
=== יצרתי כבר משתמש אבל שכחתי את הסיסמה ===
1) עברו לטרמינל 1:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
CTRL+ALT F1
</source>
2) הכניסו שם משתמש root
3) הכניסו סיסמת root (עוזרי המדריכים ועופר יעזרו עם הסיסמה)
4) השתמשו בפקודה של שינוי הסיסמה, עם שם המשתמש שלכם במקום username:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
passwd username
</source>
5) סיימתם? חזרה לטרמינל 7:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
CTRL+ALT F7
</source>
ולהתחבר עם שם וסיסמה.
== פקודות לא עובדות, הטרמינל השתגע. מה עושים? ==
לוחצים כמה פעמים
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
CTRL+C
</source>
זה מרגיע את הטרמינל.
== איך מגדילים את המסך? ==
בוחרים בתפריט של הציפור System settings, ואז screen resolution.
הרזולוציה שאנחנו רוצים היא 1920x1080.
אחרי שבוחרים, לוחצים ok כדי שלא יחזור לרזולוציה הקודמת, ואז save כדי שישמור.
וזהו, אפשר לסגור את החלון של הגדרות מסך.
== הפקודה whatis לא עובדת לי ==
נתקן את זה בגירסה 3 של הלינוקס של הכיתה.
בינתיים תצטרכו לתקן בעצמכם, שזה אומר לייצר את מסד הנתונים של whatis שחסר אצלכם.
וזה אומר להיכנס בתור root (המנטורים יעזרו עם זה), להריץ את הפקודה שמתקנת את מסד הנתונים הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mandb
</source>
וכשהוא מסיים עם התיקונים שלו לצאת מהחשבון של root בעזרת הפקודה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
עכשיו whatis יעבוד.
== קיבלתי מחשב נייד ממשרד החינוך! איך דואגים שיהיה עליו לינוקס? ==
למחשבים שנותנים משרד החינוך יש דיסק די קטן, לכן לא נתקין עליהם מכונה וירטואלית עם לינוקס מלא, אלא נפעיל את מערכת הלינוקס שקיימת בwindows ונתקין עליה רק מה שאנחנו צריכים. שלא יתפוס הרבה מקום. ובשביל זה יש לנו את [[מבוא_לתכנות_של_קבוצת_בטא/קורס אלפא/המדריך המהיר להתקנת לינוקס WSL על הנייד של משרד החינוך|המדריך המהיר להתקנת לינוקס WSL על הנייד של משרד החינוך]].
= תזכורות - כלים ליצירת תוכנה =
=== מה היתה הפקודה של העורך טקסט כדי לכתוב קוד בשפת C? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
vim hello.c
</source>
=== מה זה vim? ===
זה העורך טקסט החביב עליכם, שאיתו אתם עורכים את הקוד.
=== ואיך מקמפלים? ===
כתוב ב[[מבוא_לתכנות_של_קבוצת_בטא#קימפול_(הידור)|בטא ספר]].
=== מה זה בכלל לקמפל? ===
גם כתוב ב[[מבוא_לתכנות_של_קבוצת_בטא#קימפול_(הידור)|בטא ספר]].
=== איפה הקוד hello world שאני אמור לקמפל? ===
בקובץ hello.c שכתבתם במפגש הקודם. אם כתבתם ושמרתם אותו. בואו נחפש אותו:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
הוא שם?
אם כן, נסו לראות מה יש בתוכו:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
cat hello.c
</source>
אם ראיתם את הקוד, מצוין.
לא מצאתם את הקובץ? מצאתם אבל אין בתוכו את הקוד? אז תצטרכו לכתוב את הקוד מחדש. [[מבוא_לתכנות_של_קבוצת_בטא#כתיבת_הקוד|רק 7 שורות, לא סיפור]].
=== הקומפיילר כועס עלי וכותב דברים ===
אז יש באג בקוד: משהו כתוב לא נכון. בדקו לאן הקומפיילר מצביע, שם הבעיה.
=== קימפלתי, הצליח, מה עכשיו? ===
[[מבוא_לתכנות_של_קבוצת_בטא#הרצה|להריץ את התוכנה]] ולוודא שהיא עושה מה שצריך.
==== היא לא עושה מה שצריך ====
יש באג. לכו לתקן את הקוד בvim.
לא לשכוח לקמפל שוב אחרי שמתקנים.
==== תיקנתי, אבל התוכנה עדיין עושה את אותה בעיה ====
קימפלתם אחרי התיקון? אם לא מקמפלים, המחשב לא בונה את התוכנה לפי ההוראות החדשות.
=== קימפלתי, הרצתי, עובד. מה עכשיו? ===
מזל טוב, עליתם מחגורה שקופה לחגורה לבנה!
# בקשו מעופר שיכניס אתכם לטבלת משחק קוד נינג'ה של בטא.
# פתרו [[betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|אתגרי C נוספים מטבלת האתגרים של בטא]] וקבלו עוד נקודות!
==== זה אתגרים קשים מדי! לא הבנתי כלום! ====
היעזרו בתזכורות שפת C שמופיעות למטה בתור התחלה. ואז לימדו מ[https://he.wikibooks.org/wiki/%D7%A9%D7%A4%D7%AA_C ויקיספר C] ותצליחו לפתור.
= תזכורות - שפת C =
=== איך נראה הקוד של תוכנה בסיסית? ===
ראו [[מבוא_לתכנות_של_קבוצת_בטא#כתיבת_הקוד|הhello world בבטא ספר]].
=== איך מדפיסים למסך? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
printf("hello");
</source>
=== איך מגדירים משתנה למספרים שלמים? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
int foo;
</source>
=== איך מקבלים מספר שלם מהמקלדת? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
scanf("%d", &foo);
</source>
=== איך מדפיסים למסך טקסט עם ערך ממשתנה? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
printf("here: %d", foo);
</source>
=== איך כותבים תנאי? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
if(a > b) {
}
</source>
=== איך כותבים תנאי עם else? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
if(a > b) {
} else {
}
</source>
=== איך כותבים שרשרת תנאים? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
if(a > b) {
} else if(a <= b) {
} else {
}
</source>
[[קטגוריה:מבוא לתכנות של קבוצת בטא]]
=== איפה אתגרי בטא בשפת C? ===
ב[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|טבלה בויקיברסיטה]].
=== מאיפה אפשר ללמוד עוד שפת C? ===
ב[[:b:he:שפת C|ויקיספר C]].
=== איפה כתוב כמה נקודות עשיתי בשפת C? ===
ב[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#פעילים|טבלת משחק קוד נינג'ה בויקיברסיטה]].
==== מה המיקום שלי במשחק "סמוראי C"? ====
אם יש לכם פחות מ5 נקודות בשפת C, אז עדיין לא נכנסתם למשחק "סמוראי C".
אם יש לכם 5 נקודות ומעלה, חפשו ב[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#הטבלה_2|טבלת סמוראי C בויקיברסיטה]].
= תזכורות - עבודה עם vim =
=== איך כותבים פה קוד? ===
לוחצים על
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
i
</source>
ואז vim עובר למצב insert. במצב הזה אפשר לכתוב.
=== כתבתי קוד. איך שומרים? ===
קודם כל מקש
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
Esc
</source>
כדי לצאת ממצב insert למצב פקודות. ואז
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
:w
</source>
זה אמור לשמור את הקובץ. vim כותב לכם בתחתית החלון אם הוא הצליח.
=== שמרתי, איך יוצאים? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
:q
</source>
=== אי אפשר לשמור ולצאת במכה אחת? ===
אפשר:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
:wq
</source>
=== כתבתי שטויות בטעות. איך יוצאים בלי לשמור? ===
מכריחים אותו לצאת:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
:q!
</source>
=== vim לא עושה מה שאני אומר לו. הוא השתגע, מה עושים? ===
לוחצים על מקש Esc כמה פעמים. זה מוציא אותו מכל מיני מצבים שאולי הוא נכנס אליהם.
=== איך מחפשים משהו בvim? ===
בעזרת
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
/
</source>
'''ואז Enter.'''
לדוגמה, אם רוצים לחפש את המילה size כותבים:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
/size
</source>
'''ואז Enter.'''
אם רוצים את המקום הבא שבו המילה נמצאת לוחצים:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
n
</source>
כמה פעמים שרוצים.
אם רוצים את המקום הקודם שבו מצאו את המילה לוחצים:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
N
</source>
כמה פעמים שרוצים.
אם נמאס, לוחצים מקש Esc ויוצאים מהחיפוש.
וזהו.{{הערה|לא באמת זהו[[/שינוי קוד משחק|,]] יש את המשימה האחרונה[[מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק בג'וליה|.]]..}}
= הערות שוליים =
{{הערות שוליים}}
jxlw2h6pmppvymo3siydgpaewznl2v6
180347
180346
2026-05-04T09:24:26Z
The duke
19
/* איך מחפשים משהו בvim? */
180347
wikitext
text/x-wiki
דף מידע מקוצר לתלמידי קורס אלפא - קורס מבוא לקבוצת בטא שמתאים לבתי ספר.
= מעקב מיקרו הרצאות באלפא =
[[מבוא לתכנות של קבוצת בטא/קורס אלפא/מיקרו הרצאות|זה פה.]]
= תזכורות - לינוקס =
=== מה כותבים כדי להפעיל את הלינוקס? ===
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
virtualbox
</source>
=== יש לי כבר משתמש במחשב שם אבל לא מתחבר לי פה ===
כי אין לך משתמש במחשב פה. זה לא חשבונות גוגל, כל מחשב מנהל את המשתמשים של עצמו.
=== איך בודקים אם יש לי משתמש על המחשב? ===
מריצים את הפקודה הזו עם שם המשתמש שלכם במקום username:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
id username
</source>
אם יש לכם משתמש הוא יכתוב לכם מה מספר המשתמש שלו ועוד פרטים עליו.
אם אין לכם, הוא יגיד שאין משתמש כזה.
=== אין לי משתמש ושכחתי את הפקודה ליצירת משתמש ===
זאת הפקודה, עם שם המשתמש שלכם במקום username:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
adduser username
</source>
* '''זה מבקש סיסמה, אנחנו לא יודעים מה הסיסמה שנתנו לנו מבית הספר'''
לא מעניין אותנו סיסמת משרד החינוך. זה לא קשור. אנחנו צריכים שתמציאו סיסמה למשתמש שאתם יוצרים עכשיו בלינוקס.
* '''הוא לא כותב לי את הסיסמה!'''
הוא קיבל את הסיסמה שכתבת, הוא פשוט לא רוצה שאני אראה את הסיסמה שלך.
* '''כתבתי סיסמה ולחצתי enter, מה הוא רוצה עכשיו?'''
שוב את אותה סיסמה. לוודא שלא טעיתם.
* '''הוא שואל אותי דברים'''
אל תענו לו, הוא לא חייב לדעת. תלחצו enter כדי לא לענות.
==== זהו, סיימתי ליצור משתמש, מה עכשיו? ====
עכשיו לחזור לטרמינל 7:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
CTRL+ALT F7
</source>
ולהתחבר עם שם וסיסמה.
=== יצרתי כבר משתמש אבל שכחתי את הסיסמה ===
1) עברו לטרמינל 1:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
CTRL+ALT F1
</source>
2) הכניסו שם משתמש root
3) הכניסו סיסמת root (עוזרי המדריכים ועופר יעזרו עם הסיסמה)
4) השתמשו בפקודה של שינוי הסיסמה, עם שם המשתמש שלכם במקום username:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
passwd username
</source>
5) סיימתם? חזרה לטרמינל 7:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
CTRL+ALT F7
</source>
ולהתחבר עם שם וסיסמה.
== פקודות לא עובדות, הטרמינל השתגע. מה עושים? ==
לוחצים כמה פעמים
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
CTRL+C
</source>
זה מרגיע את הטרמינל.
== איך מגדילים את המסך? ==
בוחרים בתפריט של הציפור System settings, ואז screen resolution.
הרזולוציה שאנחנו רוצים היא 1920x1080.
אחרי שבוחרים, לוחצים ok כדי שלא יחזור לרזולוציה הקודמת, ואז save כדי שישמור.
וזהו, אפשר לסגור את החלון של הגדרות מסך.
== הפקודה whatis לא עובדת לי ==
נתקן את זה בגירסה 3 של הלינוקס של הכיתה.
בינתיים תצטרכו לתקן בעצמכם, שזה אומר לייצר את מסד הנתונים של whatis שחסר אצלכם.
וזה אומר להיכנס בתור root (המנטורים יעזרו עם זה), להריץ את הפקודה שמתקנת את מסד הנתונים הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mandb
</source>
וכשהוא מסיים עם התיקונים שלו לצאת מהחשבון של root בעזרת הפקודה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
עכשיו whatis יעבוד.
== קיבלתי מחשב נייד ממשרד החינוך! איך דואגים שיהיה עליו לינוקס? ==
למחשבים שנותנים משרד החינוך יש דיסק די קטן, לכן לא נתקין עליהם מכונה וירטואלית עם לינוקס מלא, אלא נפעיל את מערכת הלינוקס שקיימת בwindows ונתקין עליה רק מה שאנחנו צריכים. שלא יתפוס הרבה מקום. ובשביל זה יש לנו את [[מבוא_לתכנות_של_קבוצת_בטא/קורס אלפא/המדריך המהיר להתקנת לינוקס WSL על הנייד של משרד החינוך|המדריך המהיר להתקנת לינוקס WSL על הנייד של משרד החינוך]].
= תזכורות - כלים ליצירת תוכנה =
=== מה היתה הפקודה של העורך טקסט כדי לכתוב קוד בשפת C? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
vim hello.c
</source>
=== מה זה vim? ===
זה העורך טקסט החביב עליכם, שאיתו אתם עורכים את הקוד.
=== ואיך מקמפלים? ===
כתוב ב[[מבוא_לתכנות_של_קבוצת_בטא#קימפול_(הידור)|בטא ספר]].
=== מה זה בכלל לקמפל? ===
גם כתוב ב[[מבוא_לתכנות_של_קבוצת_בטא#קימפול_(הידור)|בטא ספר]].
=== איפה הקוד hello world שאני אמור לקמפל? ===
בקובץ hello.c שכתבתם במפגש הקודם. אם כתבתם ושמרתם אותו. בואו נחפש אותו:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
הוא שם?
אם כן, נסו לראות מה יש בתוכו:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
cat hello.c
</source>
אם ראיתם את הקוד, מצוין.
לא מצאתם את הקובץ? מצאתם אבל אין בתוכו את הקוד? אז תצטרכו לכתוב את הקוד מחדש. [[מבוא_לתכנות_של_קבוצת_בטא#כתיבת_הקוד|רק 7 שורות, לא סיפור]].
=== הקומפיילר כועס עלי וכותב דברים ===
אז יש באג בקוד: משהו כתוב לא נכון. בדקו לאן הקומפיילר מצביע, שם הבעיה.
=== קימפלתי, הצליח, מה עכשיו? ===
[[מבוא_לתכנות_של_קבוצת_בטא#הרצה|להריץ את התוכנה]] ולוודא שהיא עושה מה שצריך.
==== היא לא עושה מה שצריך ====
יש באג. לכו לתקן את הקוד בvim.
לא לשכוח לקמפל שוב אחרי שמתקנים.
==== תיקנתי, אבל התוכנה עדיין עושה את אותה בעיה ====
קימפלתם אחרי התיקון? אם לא מקמפלים, המחשב לא בונה את התוכנה לפי ההוראות החדשות.
=== קימפלתי, הרצתי, עובד. מה עכשיו? ===
מזל טוב, עליתם מחגורה שקופה לחגורה לבנה!
# בקשו מעופר שיכניס אתכם לטבלת משחק קוד נינג'ה של בטא.
# פתרו [[betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|אתגרי C נוספים מטבלת האתגרים של בטא]] וקבלו עוד נקודות!
==== זה אתגרים קשים מדי! לא הבנתי כלום! ====
היעזרו בתזכורות שפת C שמופיעות למטה בתור התחלה. ואז לימדו מ[https://he.wikibooks.org/wiki/%D7%A9%D7%A4%D7%AA_C ויקיספר C] ותצליחו לפתור.
= תזכורות - שפת C =
=== איך נראה הקוד של תוכנה בסיסית? ===
ראו [[מבוא_לתכנות_של_קבוצת_בטא#כתיבת_הקוד|הhello world בבטא ספר]].
=== איך מדפיסים למסך? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
printf("hello");
</source>
=== איך מגדירים משתנה למספרים שלמים? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
int foo;
</source>
=== איך מקבלים מספר שלם מהמקלדת? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
scanf("%d", &foo);
</source>
=== איך מדפיסים למסך טקסט עם ערך ממשתנה? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
printf("here: %d", foo);
</source>
=== איך כותבים תנאי? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
if(a > b) {
}
</source>
=== איך כותבים תנאי עם else? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
if(a > b) {
} else {
}
</source>
=== איך כותבים שרשרת תנאים? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
if(a > b) {
} else if(a <= b) {
} else {
}
</source>
[[קטגוריה:מבוא לתכנות של קבוצת בטא]]
=== איפה אתגרי בטא בשפת C? ===
ב[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|טבלה בויקיברסיטה]].
=== מאיפה אפשר ללמוד עוד שפת C? ===
ב[[:b:he:שפת C|ויקיספר C]].
=== איפה כתוב כמה נקודות עשיתי בשפת C? ===
ב[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#פעילים|טבלת משחק קוד נינג'ה בויקיברסיטה]].
==== מה המיקום שלי במשחק "סמוראי C"? ====
אם יש לכם פחות מ5 נקודות בשפת C, אז עדיין לא נכנסתם למשחק "סמוראי C".
אם יש לכם 5 נקודות ומעלה, חפשו ב[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#הטבלה_2|טבלת סמוראי C בויקיברסיטה]].
= תזכורות - עבודה עם vim =
=== איך כותבים פה קוד? ===
לוחצים על
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
i
</source>
ואז vim עובר למצב insert. במצב הזה אפשר לכתוב.
=== כתבתי קוד. איך שומרים? ===
קודם כל מקש
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
Esc
</source>
כדי לצאת ממצב insert למצב פקודות. ואז
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
:w
</source>
זה אמור לשמור את הקובץ. vim כותב לכם בתחתית החלון אם הוא הצליח.
=== שמרתי, איך יוצאים? ===
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
:q
</source>
=== אי אפשר לשמור ולצאת במכה אחת? ===
אפשר:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
:wq
</source>
=== כתבתי שטויות בטעות. איך יוצאים בלי לשמור? ===
מכריחים אותו לצאת:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
:q!
</source>
=== vim לא עושה מה שאני אומר לו. הוא השתגע, מה עושים? ===
לוחצים על מקש Esc כמה פעמים. זה מוציא אותו מכל מיני מצבים שאולי הוא נכנס אליהם.
=== איך מחפשים משהו בvim? ===
בעזרת
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
/
</source>
'''ואז Enter.'''
לדוגמה, אם רוצים לחפש את המילה size כותבים:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
/size
</source>
'''ואז Enter.'''
אם רוצים את המקום הבא שבו המילה נמצאת לוחצים:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
n
</source>
כמה פעמים שרוצים.
אם רוצים את המקום הקודם שבו מצאו את המילה לוחצים:
<source lang = "c" line="GESHI_NORMAL_LINE_NUMBERS">
N
</source>
כמה פעמים שרוצים.
אם נמאס, לוחצים מקש Esc ויוצאים מהחיפוש.
וזהו.{{הערה|לא באמת זהו[[/שינוי קוד משחק|,]] יש את המשימה האחרונה[[/שינוי קוד משחק בג'וליה|.]]..}}
= הערות שוליים =
{{הערות שוליים}}
55af9v15ual5g5vg0gbf6ppn4qu4i42
מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק
0
30665
180340
179188
2026-05-04T09:10:08Z
The duke
19
/* שינוי משחק שכתוב ב C */
180340
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
כי סיימנו את המשימה המסכמת של קורס אלפא.
ברוכים הבאים לקבוצת בטא, עכשיו באמת מתחילים לתכנת.
=== מה עוד אפשר לעשות? ===
אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שינוי משחק שכתוב בג'וליה =
המשחק עם הכדור שראיתם בהצגת הקורסים כתוב בשפת ג'וליה. אבל במחזור הראשון של קורס אלפא לא הספקנו ללמוד על ג'וליה, אז נעשה את [[מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק בג'וליה|זה]] בפעם אחרת.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
1c671yme64xxtq507omlio44xy2ohup
180341
180340
2026-05-04T09:11:39Z
The duke
19
/* ממש מרוצים מעצמנו */
180341
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
כי סיימנו את המשימה המסכמת של קורס אלפא.
זה אומר שיש לנו את היכולות שנדרשות כדי להתקדם לדרגה 1.
=== מה עוד אפשר לעשות? ===
אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שינוי משחק שכתוב בג'וליה =
המשחק עם הכדור שראיתם בהצגת הקורסים כתוב בשפת ג'וליה. אבל במחזור הראשון של קורס אלפא לא הספקנו ללמוד על ג'וליה, אז נעשה את [[מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק בג'וליה|זה]] בפעם אחרת.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
6p02rak03w0nlgzf6aeil4dtzqw3c8b
180342
180341
2026-05-04T09:13:34Z
The duke
19
/* ממש מרוצים מעצמנו */
180342
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
כי סיימנו את המשימה המסכמת של קורס אלפא.
למי ששרדו עד השלב הזה יש את היכולות שנדרשות כדי להתקדם לדרגה 1.
=== מה עוד אפשר לעשות? ===
אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שינוי משחק שכתוב בג'וליה =
המשחק עם הכדור שראיתם בהצגת הקורסים כתוב בשפת ג'וליה. אבל במחזור הראשון של קורס אלפא לא הספקנו ללמוד על ג'וליה, אז נעשה את [[מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק בג'וליה|זה]] בפעם אחרת.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
fud0nrdxvy7eihi5av3dw4qvvq16lko
180343
180342
2026-05-04T09:14:41Z
The duke
19
/* מה עוד אפשר לעשות? */
180343
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
כי סיימנו את המשימה המסכמת של קורס אלפא.
למי ששרדו עד השלב הזה יש את היכולות שנדרשות כדי להתקדם לדרגה 1.
=== מה עוד אפשר לעשות? ===
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שינוי משחק שכתוב בג'וליה =
המשחק עם הכדור שראיתם בהצגת הקורסים כתוב בשפת ג'וליה. אבל במחזור הראשון של קורס אלפא לא הספקנו ללמוד על ג'וליה, אז נעשה את [[מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק בג'וליה|זה]] בפעם אחרת.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
7utz1x4lr9x1lj31pfn3hh1vv8f6kml
180344
180343
2026-05-04T09:15:36Z
The duke
19
/* ממש מרוצים מעצמנו */
180344
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
כי סיימנו את המשימה המסכמת של קורס אלפא.
ואתם קרובים בעוד שתי נקודות לדרגה 1.
=== מה עוד אפשר לעשות? ===
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שינוי משחק שכתוב בג'וליה =
המשחק עם הכדור שראיתם בהצגת הקורסים כתוב בשפת ג'וליה. אבל במחזור הראשון של קורס אלפא לא הספקנו ללמוד על ג'וליה, אז נעשה את [[מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק בג'וליה|זה]] בפעם אחרת.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
24qot189v66n9r35cuv15ip62257pgq
180345
180344
2026-05-04T09:16:12Z
The duke
19
/* ממש מרוצים מעצמנו */
180345
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
כי סיימנו את המשימה המסכמת של קורס אלפא.
ואנחנו מתקרבים לדרגה 1.
=== מה עוד אפשר לעשות? ===
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שינוי משחק שכתוב בג'וליה =
המשחק עם הכדור שראיתם בהצגת הקורסים כתוב בשפת ג'וליה. אבל במחזור הראשון של קורס אלפא לא הספקנו ללמוד על ג'וליה, אז נעשה את [[מבוא לתכנות של קבוצת בטא/קורס אלפא/שינוי קוד משחק בג'וליה|זה]] בפעם אחרת.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
jjfwnyv98jza15tzvx7our5z9kbwk96
180348
180345
2026-05-04T09:25:15Z
The duke
19
/* שינוי משחק שכתוב בג'וליה */
180348
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
כי סיימנו את המשימה המסכמת של קורס אלפא.
ואנחנו מתקרבים לדרגה 1.
=== מה עוד אפשר לעשות? ===
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
tsrlz7bqk1ajxsoxtufomx9xqxjejcl
180349
180348
2026-05-04T09:26:35Z
The duke
19
/* ממש מרוצים מעצמנו */
180349
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
=== מה עוד אפשר לעשות? ===
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
e9sj03okcate3oz72w3c28nbtbbm213
180350
180349
2026-05-04T09:26:48Z
The duke
19
/* מה עוד אפשר לעשות? */
180350
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
==== מה עוד אפשר לעשות? ====
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו.
איזה מזל שהרגע סיימתם את קורס אלפא. 🥳
ואם יש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|נסו להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
תודה שהשתתפתם, היה כיף, וניפגש במפגשים של קבוצת בטא. (ועד שתחזור הפגישה השבועית של בטא במתנ"ס, מוזמנים לבקש מעופר להיות עוזרי מדריך במחזור הבא של קורס אלפא.)
עכשיו
באמת
זהו.
nraxc043oj03ng5ldexqe28gv5nj2a4
180351
180350
2026-05-04T10:02:31Z
The duke
19
/* יש לי עוד רעיונות לשינויים! */
180351
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
==== מה עוד אפשר לעשות? ====
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא. שזה הקורס שלנו. שהרגע סיימתם אותו. מזל טוב! 🥳
== מה, זהו? ==
נראה לכם?! רק התחלנו!
אלא אם תכנות לא מעניין אתכם ובמפגש האחרון נרדמתם על המקלדת. במקרה כזה אז כן, זהו. ביי.
== לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! ==
בדיוק!
ואם היה לכם כיף לתכנת ויש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|זה הזמן להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
למעשה, אפשר להתקדם בדרגות בטא גם בזמן בית הספר, באותם מפגשים שבהם מתקיים קורס אלפא. דברו עם עופר אם תרצו להמשיך להתקדם ואולי גם להיות מנטורים במחזורים הבאים של קורס אלפא.
אבל זה כבר לא קשור למדריך הזה.
אז עכשיו
באמת
זהו.
4rvppuxincx139v55t44ehd16n6ao8u
180352
180351
2026-05-04T10:03:10Z
The duke
19
/* יש לי עוד רעיונות לשינויים! */
180352
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
==== מה עוד אפשר לעשות? ====
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא.
שזה הקורס שלנו.
שהרגע סיימתם אותו.
מזל טוב! 🥳
== מה, זהו? ==
נראה לכם?! רק התחלנו!
אלא אם תכנות לא מעניין אתכם ובמפגש האחרון נרדמתם על המקלדת. במקרה כזה אז כן, זהו. ביי.
== לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! ==
בדיוק!
ואם היה לכם כיף לתכנת ויש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|זה הזמן להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
למעשה, אפשר להתקדם בדרגות בטא גם בזמן בית הספר, באותם מפגשים שבהם מתקיים קורס אלפא. דברו עם עופר אם תרצו להמשיך להתקדם ואולי גם להיות מנטורים במחזורים הבאים של קורס אלפא.
אבל זה כבר לא קשור למדריך הזה.
אז עכשיו
באמת
זהו.
dymm0oxb8r0rmfl5ye1o16dy52oocn3
180353
180352
2026-05-04T10:06:21Z
The duke
19
/* לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! */
180353
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
==== מה עוד אפשר לעשות? ====
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא.
שזה הקורס שלנו.
שהרגע סיימתם אותו.
מזל טוב! 🥳
== מה, זהו? ==
נראה לכם?! רק התחלנו!
אלא אם תכנות לא מעניין אתכם ובמפגש האחרון נרדמתם על המקלדת. במקרה כזה אז כן, זהו. ביי.
== לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! ==
בדיוק!
ואם היה לכם כיף לתכנת ויש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|זה הזמן להתקדם לדרגה 1 ומשם להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]]. כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
== יש! איפה נפגשים בשביל להתקדם בבטא? ==
המפגשים של בטא במתנ"ס עדיין לא חזרו.
אז בינתיים אפשר להתקדם בדרגות בטא בזמן בית הספר, באותם מפגשים שבהם מתקיים קורס אלפא. ואפשר גם להתקדם בבית. דברו עם עופר אם תרצו להמשיך להתקדם ואולי גם להיות מנטורים במחזורים הבאים של קורס אלפא.
אבל זה כבר לא קשור למדריך הזה.
אז עכשיו
באמת
זהו.
0ed6v50w14okjsbui3lg2bj0fkmkruo
180354
180353
2026-05-04T10:07:01Z
The duke
19
/* לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! */
180354
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
==== מה עוד אפשר לעשות? ====
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא.
שזה הקורס שלנו.
שהרגע סיימתם אותו.
מזל טוב! 🥳
== מה, זהו? ==
נראה לכם?! רק התחלנו!
אלא אם תכנות לא מעניין אתכם ובמפגש האחרון נרדמתם על המקלדת. במקרה כזה אז כן, זהו. ביי.
== לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! ==
בדיוק!
ואם היה לכם כיף לתכנת ויש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|זה הזמן להתקדם לדרגה 1 ומשם להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]].
כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
== יש! איפה נפגשים בשביל להתקדם בבטא? ==
המפגשים של בטא במתנ"ס עדיין לא חזרו.
אז בינתיים אפשר להתקדם בדרגות בטא בזמן בית הספר, באותם מפגשים שבהם מתקיים קורס אלפא. ואפשר גם להתקדם בבית. דברו עם עופר אם תרצו להמשיך להתקדם ואולי גם להיות מנטורים במחזורים הבאים של קורס אלפא.
אבל זה כבר לא קשור למדריך הזה.
אז עכשיו
באמת
זהו.
ezmcrly1x5gvuo3kho09afo9f7cdq8t
180355
180354
2026-05-04T10:07:27Z
The duke
19
/* יש! איפה נפגשים בשביל להתקדם בבטא? */
180355
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
==== מה עוד אפשר לעשות? ====
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא.
שזה הקורס שלנו.
שהרגע סיימתם אותו.
מזל טוב! 🥳
== מה, זהו? ==
נראה לכם?! רק התחלנו!
אלא אם תכנות לא מעניין אתכם ובמפגש האחרון נרדמתם על המקלדת. במקרה כזה אז כן, זהו. ביי.
== לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! ==
בדיוק!
ואם היה לכם כיף לתכנת ויש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|זה הזמן להתקדם לדרגה 1 ומשם להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]].
כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
== יש! איפה נפגשים בשביל להתקדם בבטא? ==
המפגשים של בטא במתנ"ס עדיין לא חזרו.
אז בינתיים אפשר להתקדם בדרגות בטא בזמן בית הספר, באותם מפגשים שבהם מתקיים קורס אלפא. ואפשר גם להתקדם בבית.
דברו עם עופר אם תרצו להמשיך להתקדם ואולי גם להיות מנטורים במחזורים הבאים של קורס אלפא.
אבל זה כבר לא קשור למדריך הזה.
אז עכשיו
באמת
זהו.
jgqzvakc3op4jratnz77it3kw938qdu
180356
180355
2026-05-04T10:12:44Z
The duke
19
/* מה, זהו? */
180356
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
==== מה עוד אפשר לעשות? ====
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא.
שזה הקורס שלנו.
שהרגע סיימתם אותו.
מזל טוב! 🥳
== מה, זהו? ==
נראה לכם?! רק התחלנו!
אלא אם תכנות לא מעניין אתכם ובמפגש האחרון נרדמתם על המקלדת. במקרה כזה עדיף שתלמדו גיאוגרפיה, חשבון וזה. היה כיף, תבואו לבקר.
== לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! ==
בדיוק!
ואם היה לכם כיף לתכנת ויש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: קבוצת בטא!
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|זה הזמן להתקדם לדרגה 1 ומשם להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]].
כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
== יש! איפה נפגשים בשביל להתקדם בבטא? ==
המפגשים של בטא במתנ"ס עדיין לא חזרו.
אז בינתיים אפשר להתקדם בדרגות בטא בזמן בית הספר, באותם מפגשים שבהם מתקיים קורס אלפא. ואפשר גם להתקדם בבית.
דברו עם עופר אם תרצו להמשיך להתקדם ואולי גם להיות מנטורים במחזורים הבאים של קורס אלפא.
אבל זה כבר לא קשור למדריך הזה.
אז עכשיו
באמת
זהו.
e61puidpmrsc54q1vm53tulvkntnnja
180357
180356
2026-05-04T10:14:13Z
The duke
19
/* לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! */
180357
wikitext
text/x-wiki
= שינוי משחק שכתוב ב C =
== מה עושים פה? ==
# '''מייצרים משחק'''
## מורידים קוד של משחק
## מקמפלים אותו
## מריצים אותו ומשחקים בכיף שלנו.
## מקבלים נקודה בתחום OS.
## מרוצים מעצמכם.
# '''משנים את המשחק'''
## עושים שינויים בקוד
## מקמפלים אותו
## מריצים אותו
## מקבלים נקודה בתחום C.
## ממש מרוצים מעצמכם.
== איך מתחילים? ==
מתחילים עם להוריד את הקוד מהאינטרנט.
עברו לכותרת "משיגים את הקוד של המשחק".
=== ניסיתי פעם אחת, לא סיימתי ואני רוצה לנסות שוב ===
{{מוסתר|מי שניסו כבר פעם אחת ורוצים לנקות הכל ולנסות שוב מהתחלה, לחצו על "הצגה".|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
ננקה מה שעשינו בנסיון הקודם.
פשוט מוחקים את התיקיה games שיצרנו עם כל קבצי המשחק שבתוכה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
rm -r ~/games
</source>
וזהו. אפשר להוריד מחדש את הקובץ ולעשות כל מה שכתוב במדריך.
}}
== משיגים את הקוד של המשחק ==
=== מאיפה מורידים את הקוד? ===
[https://github.com/duke-of-spacingham/raylib_c_arkanoid/archive/refs/heads/main.zip מהקישור הזה].
סיים לרדת? קדימה לשלב הבא.
=== מעבירים אותו לתיקיה שיצרנו במיוחד בשביל משחקים ===
יוצרים את תיקיית המשחקים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mkdir games
</source>
נכנסים אליה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd games
</source>
מעבירים אליה את המשחק מהתיקיה שאליה הורדנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
mv ~/Downloads/raylib_c_arkanoid-main.zip .
</source>
שתדעו: הסימן ~ שקוראים לו "טילדה" או "גל" אומר "תיקיית הבית", Downloads/~ אומר "התיקיה Downloads שנמצאת בתיקיית הבית שלי". סימן ה"נקודה" בפקודה הזו אומר "התיקיה שאנחנו נמצאים בה עכשיו".
{{מוסתר|ואם כתבתי את הפקודה אבל הלינוקס כותב לי דברים ונראה שהוא כועס עלי? |bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=זכרתם להוריד את הקובץ בשלב "מאיפה מורידים את הקוד"? אם לא, אז איך הוא יעביר קובץ שלא קיים? תורידו את הקובץ וזה יעבוד.}}
=== ופותחים את הקובץ שהורדנו ===
פותחים בעזרת הפקודה unzip:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
unzip raylib_c_arkanoid-main.zip
</source>
עכשיו יש לנו תיקיה בשם raylib_c_arkanoid-main ובה כל הקוד של המשחק.
אל תאמינו לי. תעשו
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
כדי לבדוק.
נוצרה לכם התיקיה של המשחק?
יופי.
'''היכנסו אליה''' והמשיכו לקימפול.
== קדימה קימפול. איך מקמפלים את המשחק? ==
=== מורידים ומתקינים את כל הספריות שצריך לקימפול ===
שזה הרבה ספריות, אבל למזלנו במכונות הוירטואליות בחדר מחשבים כבר הורידו והתקינו לנו את כל הספריות שצריך למשחק הזה. אז אפשר לעבור ישר לקימפול.
{{מוסתר|ואם אני במכונה וירטואלית בבית, שלא התקינו בה את הספריות?|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=אז תצטרכו להתקין אותן, ככה:
יש בין הקבצים של המשחק סקריפט ללינוקס דביאן שיתקין את כל מה שצריך בשבילנו.
אז ניכנס לתיקיה של המשחק:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cd raylib_c_arkanoid-main
</source>
נהפוך את עצמנו למנהל המערכת (הוא כנראה יבקש סיסמת root בשביל ההורדה. אם אתם לא מכירים את הסיסמה בקשו מעוזרי המדריכים שיעזרו לכם.):
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
su
</source>
ונריץ בתור מנהל המערכת את הסקריפט של ההורדות:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./raylib_dependencies_install.sh
</source>
מחכים, מחכים מחכים, עד שסיים את ההורדות.
וכשמסיים '''יוצאים מתפקיד מנהל המערכת, שלא נהרוס לעצמנו את הלינוקס''':
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
exit
</source>
}}
=== מכינים לקומפיילר את כל מה שהוא צריך ===
האמת, העולם קצת התקדם מאז שמתכנתים קימפלו עם gcc. עכשיו מתכנתים מקמפלים עם תוכנה שבודקת שיש כל מה שצריך ואז מריצה את gcc בשבילם. קוראים לה cmake.
אז בואו גם אנחנו נתקדם ונשתמש ב cmake עם S- כדי שידע מאיפה לקחת את הקוד ועם B- כדי שידע לאן להוציא את התוכנה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake -S . -B build
</source>
התוכנה כותבת כמה שורות למשך ואז עובדת איזה דקה וחצי בלי להגיד כלום. תנו לה לעבוד, בלי לחץ.
{{מוסתר|ואם לא עובד לי? לינוקס כועס עלי! הוא אומר דברים באנגלית שאם אני אטרח לקרוא אותם אני אגלה שהם אומרים שחסר לי איזה קובץ!|bg1=#F0F080|bg2=#FFFFA0|ta2= right|2=
הקובץ קיים והוא בתיקיה הנכונה. פשוט אתם בתיקיה הלא נכונה. חיזרו לשלב "'''ופותחים את הקובץ שהורדנו'''" ושימו לב טוב מה כתוב אחרי הרצת פקודת הunzip. כן, כן, לקרוא כל מה שכתוב. לא לדלג על שורות. בעיקר לא על האחרונה.
}}
סיים? יופי.
זה עדיין לא קימפל, רק בדק שיש כל מה שצריך ויצר הוראות לקומפיילר, שידע מאיפה לקחת דברים ואיפה לשים אותם.
=== מקמפלים ===
עכשיו מקמפלים אל התיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
יופי, רק תבדקו שאכן יש תיקיה build:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls
</source>
ושבתוכה יש את התוכנה שיצרנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
ls build/arkanoid
</source>
רואים שם arkanoid ירוק? זה המשחק שלכם.
=== מריצים את המשחק ===
נריץ את המשחק ישר מהתיקיה שלו, בלי לטייל לשם, כי ככה בא לנו:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
עלה המשחק? יופי. שחקו קצת, לא עולה לכם כסף. (משחקים עם החיצים, לא עם העכבר. כדי שהמשחק יתחיל תקראו מה כתוב שם.)
בונוס: אם תשימו אוזניות תגלו שהוא גם עושה קולות.
=== מקבלים נקודה בתחום OS ===
קראו לעופר שיראה אתכם משחקים במשחק שקימפלתם. זה יתן לכם נקודה.
=== מרוצים מעצמנו ===
ובצדק.
== איך משנים את המשחק? ==
ננסה לשנות את הגודל של הכדור.
למשחק הזה יש קובץ אחד עיקרי וכמה קטנים. אותנו מעניין הקובץ העיקרי main.c. הוא נמצא בתיקיה src.
אז נערוך אותו בלי לטייל אליו כי אנחנו עצלנים היום ולא בא לנו לטייל:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
vim src/main.c
</source>
=== איפה נמצא פה גודל של כדור? ===
אפשר לחפש את המילה size, אבל אני אגלה לכם שלא תמצאו אותה. המתכנת בחר להשתמש במילה radius - [[:w:רדיוס|הרדיוס של העיגול]]. והוא בחר להשתמש באותיות גדולות. אז חפשו RADIUS. (זכרו: בלינוקס אותיות גדולות ואותיות קטנות זה שני דברים שונים לגמרי.)
איך מחפשים מילה בvim? כתוב לכם [[מבוא_לתכנות_של_קבוצת_בטא/קורס_אלפא#איך_מחפשים_משהו_בvim?|בתזכורות של קורס אלפא]].
=== מצאתי את הגודל! איך לשנות אותו? ===
מה כתוב שם? 10? זה כנראה מספר הפיקסלים של הרוחב של הכדור. שנו אותו למספר אחר, איזה מספר שבא לכם, ושמרו את הקובץ.
יופי. עכשיו לצאת מעורך הטקסט, לקמפל ולהריץ שוב את המשחק.
תזכורת, ככה מקמפלים את המשחק הזה:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
cmake --build build
</source>
ואז מריצים:
<source lang = "shell" line="GESHI_NORMAL_LINE_NUMBERS">
./build/arkanoid/arkanoid
</source>
השתנה הגודל של הכדור?
'''ניצחון.'''
=== מקבלים נקודה בתחום C ===
קראו לעופר שיראה אתכם משחקים במשחק ששיניתם בו דברים. זה יתן לכם נקודה.
=== ממש מרוצים מעצמנו ===
ובא לנו לשנות עוד דברים במשחק.
==== מה עוד אפשר לעשות? ====
זה אמנם לא יתן לכם נקודות, אבל זה כיף: אפשר לשנות את המהירות של הכדור, או את הגודל של החלון של המשחק, או את הגודל של הלבנים, או את הרווח ביניהם, או את מספר השורות או את ההודעות בתחילת המשחק ובסופו, או מה שבא לכם. איזה מילים תחפשו כדי למצוא את מה שאתם רוצים לשנות?
או שאולי בכלל קלטתם שהמתכנת של המשחק הזה עשה עבודה מצויינת, ובמקום לפזר את המספרים בכל רחבי הקוד הגדיר את רובם מראש בdefine# בתחילת הקוד, ואפשר למצוא אותם שם ולשנות אותם בקלות.
= שיניתי דברים במשחק! איזה כיף. =
== יש לי עוד רעיונות לשינויים! ==
מצוין! אבל הם בטח יותר מסובכים משינוי צבע, צורה או מהירות.
בשביל לעשות שינויים מורכבים יותר תצטרכו לדעת קצת יותר תכנות ממה שלומדים בקורס אלפא.
שזה הקורס שלנו.
שהרגע סיימתם אותו.
מזל טוב! 🥳
== מה, זהו? ==
נראה לכם?! רק התחלנו!
אלא אם תכנות לא מעניין אתכם ובמפגש האחרון נרדמתם על המקלדת. במקרה כזה עדיף שתלמדו גיאוגרפיה, חשבון וזה. היה כיף, תבואו לבקר.
== לא זהו! תכנות מאוד מעניין אותי! יש לי המון משחקים לשנות! ==
בדיוק!
ואם היה לכם כיף לתכנת ויש לכם לפחות נקודה אחת, אז אתם כבר בשלב הבא: '''קבוצת בטא!'''
[[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#C_Challenges|זה הזמן להתקדם לדרגה 1 ומשם להגיע]] [[:betawikiversity:לימודי_מחשבים_בשיטת_בטא#משחק_Code_Ninja|לחגורה צהובה בבטא]].
כשתהיו חגורה צהובה תוכלו לשנות הרבה יותר דברים במשחק וגם לגלות איזה כפתורים מפעילים את היכולות הנסתרות שם!
== יש! איפה נפגשים בשביל להתקדם בבטא? ==
המפגשים של בטא במתנ"ס עדיין לא חזרו.
אז בינתיים אפשר להתקדם בדרגות בטא בזמן בית הספר, באותם מפגשים שבהם מתקיים קורס אלפא. ואפשר גם להתקדם בבית.
דברו עם עופר אם תרצו להמשיך להתקדם ואולי גם להיות מנטורים במחזורים הבאים של קורס אלפא.
אבל זה כבר לא קשור למדריך הזה.
אז עכשיו
באמת
זהו.
9gmoguvautt93io9pfsbky1fheirtvm