Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

پروژه بازی دوز ایستاده (Connect Four in C)

این پروژه، پیاده‌سازی بازی نوستالژیک و استراتژیک دوز ایستاده (Connect Four) به زبان C است که در محیط ترمینال (Console-based TUI) اجرا می‌شود. این پروژه به عنوان پروژه پایانی درس برنامه‌نویسی پیشرفته در دانشگاه شیراز توسعه یافته است.

نحوه راه‌اندازی و اجرا

برای کامپایل پروژه با استفاده از کامپایلر gcc دستور زیر را در ترمینال اجرا کنید:

gcc main.c -o connect4

پس از کامپایل موفق، بازی را با دستور زیر اجرا کنید:

./connect4

قابلیت‌ها و حالت‌های بازی

این برنامه از ۴ بخش اصلی در منوی خود پشتیبانی می‌کند:

۱. بازی دو نفره (Human vs Human)

حالت استاندارد بازی که در آن دو بازیکن به صورت نوبتی مهره‌های خود (X و O) را در ستون‌های جدول رها می‌کنند.

۲. بازی از طریق فایل (Human vs File)

در این حالت، حرکات بازیکن دوم از طریق یک فایل متنی مجزا خوانده و اعمال می‌شود. این قابلیت برای شبیه‌سازی سناریوهای خاص و تست خودکار (Automated Testing) بسیار کارآمد است.

۳. بازی با هوش مصنوعی (Human vs Computer)

امکان رقابت با کامپیوتر در دو سطح سختی مختلف:

  • حالت آسان (Easy): کامپیوتر حرکات خود را به صورت کاملاً تصادفی (Random) در ستون‌های خالی انجام می‌دهد.
  • حالت سخت (Hard): کامپیوتر از یک الگوریتم پیش‌بینی حرکت (Look-ahead) استفاده می‌کند. در این حالت، هوش مصنوعی ابتدا جدول را برای پیروزی قطعی خود در حرکت جاری بررسی می‌کند و در غیر این صورت، حرکات رقیب را آنالیز کرده و موقعیت‌های برد حریف را مسدود (Defensive Move) می‌کند.

۴. سیستم بازپخش هوشمند (Replay System)

در صورت ذخیره بازی، کاربران می‌توانند تمام مراحل و حرکات مسابقه قبلی را به صورت مرحله به مرحله (با فشردن کلید Enter) مجدداً تماشا و تحلیل کنند.


سیستم ذخیره‌سازی (Persistancy)

پس از اتمام هر بازی، برنامه امکان ذخیره‌سازی تاریخچه مسابقه را به کاربر می‌دهد. در صورت تایید، اطلاعات متادیتا و رشته حرکات در فایل متنی database.txt با فرمت استاندارد زیر آپلود می‌شوند تا بعداً در بخش Replay قابل بازیابی باشند:

[Game_Name] [Rows] [Cols] [Move_Count] [Move1] [Move2] ...

پیکربندی ابعاد زمین بازی

در ابتدای بازی، ابعاد ماتریس زمین توسط کاربر تعیین می‌شود. طبق قوانین تعریف شده:

  • حداقل تعداد سطرها: ۴ سطر (جهت امکان ایجاد خط ۴ تایی همرنگ)
  • حداکثر تعداد ستون‌ها: ۱۱ ستون (کمتر از ۱۲)

راهنمای ساخت فایل حرکات (Mode 2)

فایل ورودی برای حالت Human vs File باید یک فایل متنی ساده (.txt) باشد که در هر خط آن، فقط یک عدد صحیح (شاخص ستون مابین 0 تا Cols-1) قرار دارد. به عنوان مثال:

3
2
4
1

ویژگی‌های فنی و معماری کد (Technical Highlights)

کد به صورت کاملاً ماژولار و بر اساس اصول مهندسی نرم‌افزار پیاده‌سازی شده و مفاهیم زیر را پوشش می‌دهد:

  • اشاره‌گر به تابع (Function Pointers): مدیریت داینامیک رفتارهای بازیکنان (انسان، هوش مصنوعی، فایل) در زمان اجرا با استفاده از الگوی طراحی شبیه به چندریختی (Polymorphism).
  • مدیریت پویای حافظه (Dynamic Memory Allocation): تخصیص ابعاد جدول بازی روی Heap با آرایه‌های دوبعدی پویا و آزادسازی کامل آن‌ها (Clean-up) برای جلوگیری از نشت حافظه (Memory Leak).
  • مدیریت فایل (File Handling): استفاده بهینه از لایه ورودی/خروجی فایل برای پیاده‌سازی دیتابیس متنی و ماژول خواندن حرکات.

لایسنس و استفاده

این پروژه جنبه آموزشی داشته و تحت لایسنس MIT منتشر شده است. استفاده از کد برای یادگیری و توسعه مفاهیم کاملاً آزاد است.


امیدوارم از بازی لذت ببرید! 🎮

About

A modular Connect Four game in C with a console-based TUI. Features Human vs Human, Human vs File (Automated Testing), Look-ahead AI, and a Game Replay system. Developed as an Advanced Programming final project.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages