תכנות לילדים באמצעות Game Maker/פונג בקוד/צעד 4: סוף המשחק: הבדלים בין גרסאות בדף

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
תוכן שנמחק תוכן שנוסף
←‏ארוע צעד: הגהה והבהרה
←‏האוביקט: עריכה, עיצוב, הרחבה, ניסוח
תגית: עריכת קוד מקור 2017
שורה 4: שורה 4:
== האוביקט ==
== האוביקט ==


נוסיף עוד אוביקט.[[תמונה:Gmaker_add_object.png]]
נוסיף עוד אוביקט, [[תמונה:Gmaker_add_object.png]] ונקרא לו score_panel (לוח ניקוד). <BR>ניכנס לחדר ונציב אותו במקום כלשהו. הוא יכתב כסימן שאלה, ככה:[[תמונה:Gameker_q.PNG]], כיוון שאין לו דמות.

<BR>נקרא לאוביקט score_panel:לוח ניקוד,
{{הארה|כיוון שהאובייקט הזה הוא בלתי נראה ואין לו השפעה על אובייקטים אחרים, אפשר למקם אותו בכל מקום בחדר, גם על אובייקטים אחרים. אבל בשביל שזה לא ימחק אותם, יש לוודא קודם שתיבת הסימון Delete underlying אינה מסומנת (כשהתיבה הזו מסומנת, אם נשים אובייקט אחד על אובייקט אחר, האובייקט האחר יימחק).
<BR>ניכנס לחדר ונוריד מתיבת הסימון Delete underlying .[[תמונה:Gameker_d.PNG]]

<BR>נציב אותו איפה שהוא,
הוא יכתב כסימן שאלה. ככה:[[תמונה:Gameker_q.PNG]].
[[תמונה:Gameker_d.PNG]]}}

<BR>נוסיף לו ארוע של תחילת משחק[[תמונה:Gmaker_other.png]],
נוסיף לאובייקט score_panel אירוע של תחילת משחק [[תמונה:Gmaker_other.png]], ונשתמש שוב בפעולת קוד. הפעם נכתוב:
<br>בארוע הזה נשתמש בפעולת קוד. [[תמונה:Gmaker_code_button.png]]
<BR>בקוד יהיה כתוב:
<div dir=ltr>
<div dir=ltr>
score = 0;
score = 0;
שורה 18: שורה 17:
show_score = 1;
show_score = 1;
</div>
</div>
lives הוא {{מונח|משתנה גלובלי|משתנה שלא שייך לאובייקט ספציפי בתוכנה}}. הוא מסמן את כמות החיים, ואנחנו הצבנו בו 3.
זה הוא קוד מתקדם יותר אז אני מקווה שתבינו.

<BR> עברנו כבר על המשתנה score, אבל על lives לא כל-כך,
{{משמאל לימין|show_lives}} (הצג חיים) קובע שהחיים יוצגו, ובאופן דומה, {{משמאל לימין|show_score}} (הצג ניקוד) מציג את הניקוד.
<BR>lives הוא משתנה גלובלי. בדומה ל-lives ,score מסמן את כמות החיים, ואנחנו הצבנו בו 3.

<BR>{{משמאל לימין|show}} בעברית זה אומר הצג, וכמו שאנחנו יודעים {{משמאל לימין|lives}} זה חיים ו-{{משמאל לימין|score}} זה ניקוד.
<BR>נוסיף ארוע סוף חיים[[תמונה:Gmaker_other.png]],
נוסיף אירוע 'אין עוד חיים' (no more lives) [[תמונה:Gmaker_other.png]], ובו נוסיף את הקוד: [[תמונה:Gmaker_code_button.png]]<BR>בקוד יהיה כתוב:
<BR>נוסיף פעולת קוד, [[תמונה:Gmaker_code_button.png]]
<BR>בקוד יהיה כתוב:
<div dir=ltr>
<div dir=ltr>
highscore_add_current();
highscore_add_current();
highscore_show(1);
highscore_show(1);
game_restart();
game_restart();
</div>{{גמייקר/בדיקה|הריצו ובדקו מה קורה בסוף המשחק.}}
</div>
כמו ששמתם לב, טבלת ניקוד הופיעה בסוף המשחק, אבל התבקשתם הפעם לכתוב את שמכם באופן קצת שונה מזה שהתרגלתם אליו. את התיבה שמבקשת שתזינו שם משתמש יצרה הפקודה שבשורה הראשונה, והפקודה השניה הציגה לכם את רשימת הניקודים.
אם בודקים את המשחק רואים שזאת צורה חדשה לכתיבת השם.
<BR>אבל זה משתלם, אני מניח שאתם כבר הבנתם את הקוד (אני לפחות מקווה).


הפקודה {{משמאל לימין|game_restart()}} מאתחלת את המשחק (מילולית, restart פירושו להתחיל מחדש).
== אירוע צעד - הוספת חיים ==

להוסיף ארוע צעד, [[תמונה:Gmaker_step.png]]
== הוספת חיים ==
<BR>להוסיף פעולת קוד, [[תמונה:Gmaker_code_button.png]]
כדי להפוך את המשחק למעט יותר מורכב, נוסיף לשחקן חיים אם יצליח להגיע לאלף נקודות.
<BR>בקוד יהיה כתוב:
נחזור לאירוע ההתנגשות של הכדור במחבט, נפתח את פעולת הקוד, [[תמונה:Gmaker_code_button.png]] ונוסיף {{מונח|בסופה|בסוף שלה}} עוד כמה שורות:
<div dir=ltr>
<div dir=ltr>
if ( score == 1000 )
if ( score == 1000 )
שורה 43: שורה 40:
}
}
</div>
</div>
{{משמאל לימין|if}} היא מילת תנאי - 'אם'. הביטוי == (שני סימני = בלי רווח) מסמן השוואה. אם ההשוואה נכונה, אז מה שכתוב בין סימני הצומדיים ({ }) יקרה.<BR>בתכנות, הסימנים { ו- } מבטאים תחילת בלוק וסוף בלוק. במקרה שלנו, הבלוק מוסיף לחיים 1, והוא ירוץ רק אם יתקיים התנאי שהניקוד שווה אלף בדיוק.
{{משמאל לימין|if}} היא מילת המפתח,

<BR> == שני סימני שווי בלי רווח מסמנות השוואה,
המשמעות של הקוד הזה הוא שבכל פעם שתתרחש פגיעה של הכדור במחבט, אחרי שהמשחק יסיים לבצע את הפעולות שכתובות לפני זה, הוא יבדוק אם הניקוד הוא אלף, ואם כן, יוסיף 1 לחיים של השחקן.
<BR> אם ההשווה נכונה אז מה שכתוב בסימני הצומדיים( { } ) יקרה.

<BR>{ ו- } הם תחילת בלוק וסוף בלוק.
{{הארה|1=כיוון שאירוע ההתנגשות של הכדור במחבט משנה את הניקוד של השחקן כל פעם, השחקן יוכל לקבל רק נקודת חיים אחת כל משחק. כדי לשנות את זה, אפשר לכתוב משפט תנאי אחר:
<div dir=ltr>
if ( score % 1000 == 0)

{

lives ++;

}

</div>
כאשר התנאי {{משמאל לימין|1=score % 1000 == 0}} פירושו שהשארית מחילוק הניקוד באלף היא אפס, כלומר שהמספר מתחלק באלף ללא שארית; במקרה שבחרנו בקוד הזה, כל פעם שהשחקן יגיע לאלף נקודות נוספות - הוא יקבל תוספת חיים.}}

==
'''[[../צעד 5: גימור המשחק|צעד 5: גימור המשחק]]'''
'''[[../צעד 5: גימור המשחק|צעד 5: גימור המשחק]]'''
[[קטגוריה:Game Maker]]
[[קטגוריה:Game Maker]]

גרסה מ־17:25, 16 באוגוסט 2020


האוביקט

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


כדאי לדעת:

כיוון שהאובייקט הזה הוא בלתי נראה ואין לו השפעה על אובייקטים אחרים, אפשר למקם אותו בכל מקום בחדר, גם על אובייקטים אחרים. אבל בשביל שזה לא ימחק אותם, יש לוודא קודם שתיבת הסימון Delete underlying אינה מסומנת (כשהתיבה הזו מסומנת, אם נשים אובייקט אחד על אובייקט אחר, האובייקט האחר יימחק).

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

score = 0;
lives = 3;
show_lives = 1;
show_score = 1;

lives הוא משתנה גלובלי. הוא מסמן את כמות החיים, ואנחנו הצבנו בו 3.

show_lives (הצג חיים) קובע שהחיים יוצגו, ובאופן דומה, show_score (הצג ניקוד) מציג את הניקוד.

נוסיף אירוע 'אין עוד חיים' (no more lives) , ובו נוסיף את הקוד:
בקוד יהיה כתוב:

highscore_add_current();
highscore_show(1);
game_restart();

הריצו ובדקו מה קורה בסוף המשחק.



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

הפקודה game_restart() מאתחלת את המשחק (מילולית, restart פירושו להתחיל מחדש).

הוספת חיים

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

if ( score == 1000 )
{
  lives ++; 
}

if היא מילת תנאי - 'אם'. הביטוי == (שני סימני = בלי רווח) מסמן השוואה. אם ההשוואה נכונה, אז מה שכתוב בין סימני הצומדיים ({ }) יקרה.
בתכנות, הסימנים { ו- } מבטאים תחילת בלוק וסוף בלוק. במקרה שלנו, הבלוק מוסיף לחיים 1, והוא ירוץ רק אם יתקיים התנאי שהניקוד שווה אלף בדיוק.

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


כדאי לדעת:

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

if ( score % 1000 == 0)

{

lives ++;

}

כאשר התנאי score % 1000 == 0 פירושו שהשארית מחילוק הניקוד באלף היא אפס, כלומר שהמספר מתחלק באלף ללא שארית; במקרה שבחרנו בקוד הזה, כל פעם שהשחקן יגיע לאלף נקודות נוספות - הוא יקבל תוספת חיים.

== צעד 5: גימור המשחק