1

שקף שער - קרב ראש בראש

00:00-03:00
שיעור 6 הוא השיא של הקורס - השיעור שמשלב את כל מה שלמדנו ומוסיף שכבה חדשה: Multiplayer. בחרנו ב-Tank Duel כי זה משחק תורני שמלמד פיזיקה מתקדמת (תנועת קליע בפרבולה), מערכת תורות, ופיצוצים מרשימים. המשחק בהשראת Scorched Earth, Worms, ו-Artillery Duel הקלאסיים.
Scorched Earth (1991) היה אחד ממשחקי הקרב התורניים הראשונים והפופולריים ביותר. Worms (1995) לקח את הקונספט והפך אותו לפרנצ'יז עולמי. אנחנו בונים גרסה פשוטה אבל מרשימה של הז'אנר הזה.

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

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

הדגם ירייה - הקליע עף בפרבולה, פוגע, פיצוץ! "תסתכלו על הקליע. הוא לא זז בקו ישר - הוא עף בפרבולה. כמו בחיים האמיתיים. כוח הכבידה מושך אותו למטה בדיוק כמו כדור שזורקים."

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

"ובסוף השיעור? תשחקו אחד נגד השני. טנק נגד טנק. מקלדת אחת, שני שחקנים, קרב אמיתי."

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

היסטוריה - המשחק הראשון והקרבות התורניים

Pong (1972) היה המשחק המסחרי הראשון בהיסטוריה. שני שחקנים, מקלדת (או ג'ויסטיקים) אחת, כדור שמקפץ. זה הוכיח שמשחקי וידאו יכולים להיות חברתיים - לשחק ביחד במקום לבד.

Tank Wars / Artillery Games (שנות ה-80) לקחו את הרעיון צעד קדימה: במקום רפלקסים מהירים, חשיבה אסטרטגית.

"לפני שנתחיל לבנות, בואו נדבר רגע על היסטוריה."

"המשחק המסחרי הראשון בהיסטוריה היה Pong - 1972. שני שחקנים, משוטים, כדור. פשוט אבל מהפכני."

"למה? כי זה היה חברתי. שני אנשים ליד מכונה אחת, מתחרים. לא מחשב נגד אדם - אדם נגד אדם."

"המשחק שאנחנו בונים היום שייך לז'אנר אחר: Artillery Games - משחקי תותחים. הז'אנר הזה התחיל בשנות ה-80 עם משחקים כמו Tank Wars."

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

3

Multiplayer Local - שני שחקנים, מקלדת אחת

03:00-08:00
Local Multiplayer - two players, same device Local Multiplayer: שני שחקנים על אותו מכשיר (מקלדת/מסך אחד). פשוט ליישום, מהנה לשחק ביחד.

Online Multiplayer: שני שחקנים במכשירים שונים דרך האינטרנט. מורכב - דורש שרתים, סנכרון, Netcode.
Local Multiplayer חזר לאופנה בשנים האחרונות. משחקים כמו Overcooked, Gang Beasts ו-Moving Out הפכו להיטים עולמיים. למה? כי זה חוויה חברתית - אנשים באותו חדר, צוחקים ביחד.

"יש שני סוגים של Multiplayer: Local ו-Online."

"Online - זה כשכל אחד במחשב שלו, אנחנו מחוברים דרך האינטרנט. זה מסובך. צריך שרתים, סנכרון, הרבה קוד."

"Local - זה פשוט. שני שחקנים, אותה מקלדת. אחד משתמש ב-WASD, השני בחצים. אחד יושב משמאל, השני מימין."

"וזה לא רק פשוט - זה גם יותר כיף. אתם רואים את הביטוי על הפנים של היריב כשהוא מפספס. אתם שומעים אותו צועק כשאתם פוגעים."

"Local Multiplayer זה הרבה יותר מקוד - זה חוויה חברתית."

4

Input Handling - ניהול קלט מרובה

Key Mapping - assigning keys to different players Key Mapping: הקצאת מקשים שונים לשחקנים שונים.

Player 1: W (למעלה), S (למטה), D (ירי)
Player 2: ↑ (למעלה), ↓ (למטה), → או SPACE (ירי)

בקוד: צריך לזהות איזה מקש נלחץ, ולעדכן את השחקן הנכון.
בתעשייה משתמשים במבנה נתונים שנקרא Input Map - טבלה שמחברת בין מקשים לפעולות. זה מאפשר לשחקן להתאים אישית את המקשים (Key Rebinding).

"כשיש שני שחקנים, יש בעיה: שני סטים של מקשים."

"שחקן 1 משתמש ב-WASD. למה? כי זה בצד שמאל של המקלדת - נוח למי שיושב משמאל."

"שחקן 2 משתמש ב-חצים. למה? כי זה בצד ימין - נוח למי שיושב מימין."

"בקוד, אנחנו צריכים לזהות: 'רגע, האם נלחץ W או חץ למעלה? אם W - עדכן את השחקן הראשון. אם חץ - עדכן את השני'."

"זה נקרא Key Mapping - מיפוי מקשים. זה הבסיס לכל משחק מולטיפלייר מקומי."

5

הפרומפט הראשון - בניית המנוע

08:00-15:00
המשחק מורכב מ-4 רכיבים עיקריים:

1. שני טנקים - מיקום קבוע בצדי המסך, עם קנה שזז
2. מערכת זוויות - כל טנק יכול לכוון את הקנה למעלה/למטה
3. מערכת עוצמה - כמה חזק הירי (מד Power)
4. קליע בפרבולה - עף לפי חוקי הפיזיקה
Create a Tank Duel game in a single index.html file using HTML5 Canvas. GAME SETUP: 1. Two tanks positioned at opposite sides of the screen (left and right) 2. Each tank has a barrel that rotates to aim 3. Dark battlefield background with a ground line CONTROLS: - Player 1 (left tank): W/S to adjust angle, D to shoot - Player 2 (right tank): Arrow Up/Down to adjust angle, Space to shoot PHYSICS: - Projectiles follow realistic parabolic trajectory with gravity - Show angle indicator on each tank - Display power meter (starts at 50%, adjust with time held) VISUAL STYLE: - Dark blue/gray battlefield - Neon green tank for Player 1, Neon red tank for Player 2 - Yellow projectiles - Retro/arcade aesthetic

פתח Antigravity, פרויקט חדש בשם TankDuel "כולם פותחים Antigravity. פרויקט חדש. תקראו לו TankDuel או BattleTanks."

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

הקלד את הפרומפט ולחץ Generate "שימו לב להוראות. אני מבקש פיזיקה אמיתית - 'realistic parabolic trajectory with gravity'."

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

המתן לסיום ולחץ Preview "הסוכן סיים. בואו נראה מה יש לנו..."

הדגם את המשחק - שנה זווית, ירה, הקליע עף "וואו. תסתכלו על זה. יש לנו שני טנקים. אני לוחץ W - הקנה זז למעלה. S - למטה. D - פוגעת!"

"ותראו את הקליע. הוא לא זז בקו ישר. הוא עושה קשת. זו פרבולה מתמטית אמיתית."

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

Projectile Motion - תנועת קליע

Projectile Motion - physics of objects thrown in the air כשיורים קליע, הוא זז בשני כיוונים בו-זמנית:

אופקית (X): מהירות קבועה (אין התנגדות אוויר במשחק שלנו)
אנכית (Y): התחלה במהירות גבוהה למעלה, אבל כוח הכבידה מאט אותה עד שהקליע נופל

הנוסחאות:
vx = power * cos(angle) - מהירות אופקית
vy = power * sin(angle) - מהירות אנכית התחלתית
vy += gravity - כל פריים הכבידה מוסיפה למהירות האנכית
זו בדיוק אותה מתמטיקה שמשתמשים בה בפיזיקה של תיכון! sin ו-cos מפרקים את הזווית לרכיבי X ו-Y. בעולם האמיתי יש גם התנגדות אוויר, אבל אנחנו מתעלמים ממנה כדי לשמור על פשטות.

"בואו נבין מה קורה כשהקליע עף. יש פה פיזיקה אמיתית."

"כשיורים, הקליע מקבל מהירות בשני כיוונים: X (צד לצד) ו-Y (למעלה-למטה)."

"המהירות האופקית (X) נשארת קבועה. אבל המהירות האנכית (Y)? היא משתנה כל הזמן בגלל כוח הכבידה."

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

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

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

7

Angle & Power - זווית ועוצמה

15:00-22:00
Angle (זווית): כיוון הירי. 0° = אופקי, 45° = מיטבי לטווח, 90° = ישר למעלה

Power (עוצמה): כמה חזק הירי. 0% = הקליע נופל ליד הטנק, 100% = הקליע עף רחוק

Power Bar: מד ויזואלי שמראה את העוצמה בזמן אמת - ככל שמחזיקים את המקש יותר זמן, העוצמה עולה.
Improve the Power system: 1. When holding the shoot key (D or Space), show a growing Power Bar above the tank 2. Power starts at 0% and increases over time (up to 100% after 2 seconds) 3. When released, shoot with that power level 4. Visual: animated bar that fills up with color gradient (green → yellow → red) 5. Display current angle in degrees next to each tank

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

"בואו נוסיף Power Bar - מד עוצמה שמלמד את השחקן שליטה."

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

הרץ את המשחק עם Power Bar "עכשיו תסתכלו. אני מחזיק D... והמד מתחיל להימלא. ירוק... צהוב... אדום. עכשיו אני עוזב - פוגעת!"

"זה מוסיף שכבת מיומנות. אתם צריכים לדעת מתי לעזוב. יותר מדי עוצמה - הקליע עובר מעל היריב. פחות מדי - נופל מתחתיו."

"זו האומנות של המשחק."

הדגם את ה-Power Bar כמה פעמים. תן לתלמידים לראות איך זה משנה את המסלול. נסה: 1) עוצמה נמוכה מדי (נפילה קרוב), 2) עוצמה בינונית (מושלם!), 3) עוצמה גבוהה מדי (עובר מעל). זה מלמד את הקונספט טוב יותר מכל הסבר מילולי.
8

Turn-based Gameplay - משחק תורות

Turn-based Gameplay - each player takes turns Real-time: כולם פועלים בו-זמנית (Snake, Flappy Bird, רוב משחקי הפעולה)

Turn-based: כל שחקן בתורו (שחמט, Civilization, Worms)

יתרונות Turn-based:
  • זמן לחשוב ולתכנן
  • פחות לחץ, יותר אסטרטגיה
  • מתאים למשחק עם מקלדת אחת
  • מנגנון פשוט ליישום
Turn-based הוא אחד הז'אנרים העתיקים ביותר - שחמט ודמקה הם Turn-based. במשחקי וידאו, הז'אנר הזה חזר לפופולריות עם XCOM, Into the Breach, ו-Slay the Spire.
המשחק צריך לעקוב אחרי currentPlayer - משתנה שמסמן מי התור.

הלוגיקה:
1. שחקן 1 יורה → הקליע עף → פגע/החטיא
2. currentPlayer = 2 (החלפת תור)
3. שחקן 2 יורה → הקליע עף → פגע/החטיא
4. currentPlayer = 1 (חזרה לשחקן 1)

UI: הדגשה ויזואלית של מי התור - הטנק הפעיל זוהר, יש טקסט "PLAYER 1 TURN" וכו'.

"עכשיו בואו נדבר על Turn-based Gameplay - משחק תורות."

"רוב המשחקים שבנינו עד כה היו Real-time - הכל קורה בו-זמנית. ב-Snake, הנחש זז כל הזמן. ב-Flappy Bird, אתם צריכים לקפוץ מהר."

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

"למה זה טוב? כי זה נותן לכם זמן לחשוב. אתם לא צריכים רפלקסים מהירים. אתם צריכים אסטרטגיה."

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

"והמשחק עוקב אחרי currentPlayer - משתנה שאומר 'עכשיו התור של שחקן 1' או 'עכשיו התור של שחקן 2'."

9

Collision & Explosions - התנגשות ופיצוצים

22:00-30:00
Hit Detection: בדיקה האם הקליע פגע בטנק היריב.

הבדיקה:
if (projectileX >= tankX && projectileX <= tankX + tankWidth &&
    projectileY >= tankY && projectileY <= tankY + tankHeight)


אם התנאי מתקיים → פגיעה! → פיצוץ + נקודה + החלפת תור
פיצוץ טוב מורכב מ-3 רכיבים:

1. Visual: מעגל/כדור שגדל ומתפוגג (או מערכת חלקיקים)
2. Audio: צליל פיצוץ (Sawtooth wave בתדר נמוך)
3. Screen Shake: רעידת מצלמה קלה - הזזת Canvas ב-2-3 פיקסלים אקראית למשך 200ms
Add explosion effects on hit: 1. When projectile hits a tank, create an explosion animation: - Expanding circle with orange/red gradient - Fade out over 0.5 seconds 2. Add explosion sound using Web Audio API (low frequency buzz) 3. Add camera shake effect (subtle screen tremor for 200ms) 4. Display "+1 POINT" text that floats up and fades 5. Update score display for the hitting player

"המשחק עובד, אבל חסר לו משהו. דרמה."

"כשהקליע פוגע, הוא פשוט... נעלם. אין משוב. אין הרגשה של פגיעה."

"בואו נוסיף פיצוץ!"

הקלד את הפרומפט "אני מבקש מהסוכן שלושה דברים:"

"1. פיצוץ ויזואלי - עיגול כתום-אדום שגדל ומתפוגג.
2. צליל פיצוץ - Buzz נמוך בעזרת Web Audio.
3. רעידת מסך - Camera Shake קל."

הרץ את המשחק והדגם פגיעה "עכשיו תראו... אני יורה... BOOM!" [תן לפיצוץ לנחות] "המסך רעד רגע! היה פיצוץ! היה סאונד! זה מרגיש כמו פגיעה אמיתית!"

הפיצוץ הוא ה-WOW moment של השיעור. תדגים אותו כמה פעמים. וודא שהסאונד והרעידה עובדים - אם לא, זה הורס את האפקט. אם Camera Shake חזק מדי ומעצבן, בקש מהסוכן להפחית אותו ל-1-2 פיקסלים במקום 3-5.
10

Particle System - מערכת חלקיקים

Particle System - creating visual effects with many small objects Particle System: מערכת שיוצרת עשרות/מאות "חלקיקים" קטנים שנעים, מתפוגגים ונעלמים.

שימושים: אש, עשן, פיצוצים, ניצוצות, גשם, שלג, קסמים

איך זה עובד?
1. כל חלקיק = אובייקט קטן עם: מיקום, מהירות, צבע, גודל, אורך חיים
2. בכל פריים: מעדכנים מיקום, מקטינים אורך חיים, משנים שקיפות
3. כשאורך החיים מגיע ל-0 → מוחקים את החלקיק
Particle Systems הם הבסיס לכל אפקט ויזואלי במשחקים מודרניים. אפילו משחקי AAA כמו Call of Duty או Fortnite משתמשים באותו עיקרון בסיסי. ההבדל הוא רק בכמות החלקיקים ובמורכבות הפיזיקה.
Upgrade explosion to use a Particle System: 1. On explosion, create 20-30 particles at impact point 2. Each particle: - Random velocity in all directions - Orange/yellow/red color (random) - Fades out over 1 second - Affected by gravity (falls down) 3. Particles should spread outward from center 4. Add smoke trail to projectile while flying (optional bonus)

"הפיצוץ שלנו נראה טוב. אבל יש משהו שיכול להיות מדהים יותר."

"במקום עיגול אחד שמתפוגג, מה אם נשתמש ב-Particle System - מערכת חלקיקים?"

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

הקלד את הפרומפט "אני מבקש מהסוכן ליצור 20-30 חלקיקים. כל אחד עף לכיוון אקראי, צבע אקראי (כתום/צהוב/אדום), ומתפוגג."

הרץ והדגם פיצוץ עם חלקיקים "עכשיו תראו... אני יורה... BOOM!!!" [תן לפיצוץ לנחות] "תסתכלו על זה! חלקיקים עפים לכל מקום! זה נראה כמו פיצוץ אמיתי!"

"זה Particle System - אחד הכלים החשובים ביותר ביצירת אפקטים במשחקים."

11

Polishing - הוספת אפקטים ומצבי משחק

30:00-40:00
Game State: המצב הנוכחי של המשחק. כל מצב מציג UI שונה ומגיב לקלט אחרת.

3 מצבים במשחק שלנו:

MENU: מסך התחלה - "TANK DUEL", "Press SPACE to Start"
PLAYING: המשחק פעיל - ירי, תורות, ניקוד
GAME_OVER: מישהו ניצח - "PLAYER X WINS!", "Press R to Restart"
Add Game States and Win Condition: 1. Start Menu state: - Display "TANK DUEL" title (large, glowing) - "Press SPACE to Start" - Instructions: "P1: W/S/D | P2: ↑/↓/SPACE" 2. Win Condition: - First player to 5 points wins - Game Over screen: "PLAYER X WINS!" - Display final scores - "Press R to Restart" 3. Add trajectory preview (dotted line showing where shot will go) 4. Add turn timer (15 seconds per turn - optional)

"יש לנו משחק עובד. עכשיו בואו נהפוך אותו למוצר מלא."

"משחק אמיתי צריך שלושה דברים:"

"1. תפריט התחלה - מסך שמסביר איך לשחק.
2. תנאי ניצחון - מי שמגיע ל-5 נקודות מנצח.
3. מסך Game Over - 'Player 1 Wins!' עם אפשרות להתחיל מחדש."

הקלד את הפרומפט "אני מבקש מהסוכן להוסיף את כל זה. ובונוס - Trajectory Preview - קו מקווקו שמראה לאן הקליע יעוף."

הרץ את המשחק, הראה תפריט "עכשיו כשאני פותח את המשחק, יש תפריט! 'TANK DUEL' בגדול. הוראות. לוחץ Space..."

שחק עד ניצחון "המשחק מתחיל. שחקן 1 יורה... פגע! 1-0. שחקן 2 יורה... פגע! 1-1..." [המשך לשחק] "5-3... PLAYER 1 WINS!"

"זהו. יש לנו משחק שלם עם התחלה, אמצע, וסוף. מוצר אמיתי."

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

סיכום והמשך המסע

40:00-50:00
Local Multiplayer - שני שחקנים, מקלדת אחת
Input Handling - ניהול קלט מרובה (WASD + חצים)
Key Mapping - הקצאת מקשים לשחקנים
Projectile Motion - פיזיקת קליע (פרבולה)
Angle & Power - מערכת זווית ועוצמה
Turn-based Gameplay - משחק תורות
Player Switching - החלפת תורות
Hit Detection - זיהוי פגיעה
Particle System - מערכת חלקיקים לאפקטים
Camera Shake - רעידת מצלמה
Game States - מצבי משחק (Menu, Playing, Game Over)
Win Condition - תנאי ניצחון

עצור שיתוף מסך, חזור למצלמה "חברים, זהו. סיימנו את השיעור האחרון."

"בואו נעצור רגע ונסתכל מה עשינו היום:"

"בנינו משחק עם פיזיקה אמיתית - קליעים שעפים בפרבולות כמו בטבע."

"למדנו Local Multiplayer - איך שני שחקנים משחקים יחד על מכשיר אחד."

"יצרנו Particle System - אפקטים שנראים כמו במשחקי AAA."

"ובנינו משחק שלם - עם תפריט, תורות, ניצחון, והתחלה מחדש."

"אבל זה לא הסוף."

"זה רק ההתחלה. בקורס הזה למדתם את היסודות:"
"• איך לדבר עם AI
• איך לבנות משחקים
• איך לפתור בעיות
• איך להפוך רעיונות למוצרים"

"עכשיו תוכלו לקחת את זה לכל מקום. רוצים לבנות משחק מרוצים? תבנו. רוצים משחק קלפים? תבנו. יש לכם את הכלים."

"האתגר הסופי: קחו את Tank Duel, והוסיפו לו משהו משלכם. רוח שמשנה את מסלול הקליע? שטח משתנה? נשק מיוחד? תהיו יצירתיים!"

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

"תודה רבה לכולם על קורס מדהים. אתם מתכנתי משחקים עכשיו! 🎮"

הסגירה צריכה להיות מרגשת! הדגש כמה הם התקדמו - משיעור 1 (Snake פשוט) ועד שיעור 6 (Multiplayer עם פיזיקה). שלח את כל הפרומפטים בצ'אט הכללי. תן להם זמן לשאלות אחרונות. טיזר לקורס הבא (אם יש) - צריך להשאיר אותם רוצים עוד! עודד אותם לשתף את המשחקים שבנו עם חברים ומשפחה.
סוף הערות מרצה - שיעור 6 | סיום הקורס 🎉