# פיתוח משחק ארבע בשורה ב-C: סקירה טכנית ואלגוריתמים
> מדריך טכני על בניית משחק Connect 4 בשפת C: ניהול לוגיקת לוח, פונקציות AI, טיפול בשגיאות קלט ושמירת סטטיסטיקות לקבצים.

Tags: connect4, c-programming, game-logic, artificial-intelligence, coding-tutorial, structs, algorithms
## Connect 4: מאחורי הקוד
סקירה טכנית של משחק ארבע בשורה בשפת C הכוללת לוגיקה, ניהול זיכרון ובינה מלאכותית.

## מבנה הנתונים: הלוח והשחקנים
* הלוח מיוצג על ידי מערך דו-ממדי בגודל 6x7.
* שימוש ב-Defines לקבועים (ROWS, COLS) מאפשר גמישות בשינוי גודל הלוח.
* ערכי תאים: 0 (ריק), 1 (שחקן 1), 2 (מחשב).

## ניהול סטטיסטיקות: ה-Struct
* שימוש ב-typedef struct לאיגוד נתוני משחק: p1Wins, p2Wins, computerWins, draws, totalGames.

## מכניקה: נפילת הדיסקית (Gravity)
* הפונקציה dropPiece מחפשת את התא הריק התחתון ביותר בעמודה נתונה בלולאה מלמטה למעלה.

## הגנה מקריסות: Input Validation
* התמודדות עם קלט שגוי בעזרת scanf_s.
* ניקוי ה-buffer באמצעות לולאת while(getchar() != '\n') למניעת לולאות אינסופיות.

## לוגיקת הניצחון: checkWin
* בדיקת רצפים ב-4 כיוונים: אופקי, אנכי, ושני אלכסונים.
* הגדרת גבולות לולאה (למשל COLS-3) למניעת חריגה מהמערך.

## זיכרון לטווח ארוך (Files)
* שמירת נתונים בקובץ בינארי (.dat).
* פקודות: fwrite לכתיבת ה-struct ו-fread לקריאתו בעליית המשחק.

## בינה מלאכותית (AI)
* רמה 1 (Easy): בחירת עמודה רנדומלית מתוך המהלכים התקינים.
* רמה 2 (Medium): חשיבה צעד אחד קדימה.
    1. בדיקת אפשרות לניצחון מיידי.
    2. חסימת מהלך מנצח של היריב.
    3. פונקציית undoMove המאפשרת למחשב "לדמיין" מהלכים.

## סיכום
הפרויקט מדגים שילוב של לוגיקה אלגוריתמית, ניהול זיכרון, עבודה עם קבצים ומימוש בסיסי של AI.
---
This presentation was created with [Bobr AI](https://bobr.ai) — an AI presentation generator.