Skip to content
This repository has been archived by the owner on Feb 15, 2021. It is now read-only.

started guide

M.Mahdi Bakhshi edited this page May 24, 2019 · 1 revision

چطور از api چمپ استفاده کنم؟

شروع بازی

برای شروع بازی باید نسبت به دو نکته زیر مطمئن شوید:

  • بازیکن تخته چمپ خود را چیده باشد.
  • اتصال با سوکت (socket.io) برقرار باشد.

سپس با ارسال تخته چیده شده در قالب جیسان زیر، رخداد init را ارسال کنید.

   {
      board: [[]]
   }

کلید board باید آرایه ای از آرایه ها باشد که بودن یا نبود خانه‌های تخته چمپ را مشخص می‌کند.

مثلا یک نمونه درست از تخته چمپ (۵ در ۴) در زیر قابل مشاهده است:

   [  
      [1,1,1,0],
      [1,1,1,0],
      [1,1,0,0],
      [1,0,0,0],
      [0,0,0,0]
   ]

نتیجه ارسال رخداد init

  • دریافت رخداد wait

    دریافت این رخداد به معنی انتظار برای یافتن بازیکن دوم است.

  • دریافت رخداد start

    دریافت این رخداد به معنی این است که بازی شروع شده و هر دو بازیکن متصل هستند. این رخداد جیسانی به فرم زیر ارسال می‌کند.

       {
          board: [[]],
          your_turn: bool,
          initialized_with_my_board: bool
       }
             

    board تخته تعیین شده برای شروع را در خود جای می‌دهد.

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

    initialized_with_my_board تعیین می‌کند که تخته کدام بازیکن به عنوان تخته اصلی انتخاب شده است.
    طبیعتا این کلید اولی یا دومی بود بازیکن را نیز نشان می‌دهد.

انجام بازی

در این مرحله کلایت بازیکنی که نوبت اوست می‌تواند با رخداد data اطلاعات مربوط به حرکت بازیکن را به سرور ارسال کند.
این رخداد اطلاعات مربوط به تغییرات تخته را به صورت زیر می‌فرستد:

   {
      board: [[]]
   }
   

کلید board تخته تغییریافته را در خود دارد.

بازی آنقدر ادامه میابد که یکی از بازیکنان شوکولات خانه بالا سمت چپ را بخورد که همان شوکولات سمی است. در تمام این مراحل اطلاعات در قالب رخداد data ارسال می‌شوند.

پایان بازی

بازی به سه صورت پایان میابد:

  • انصراف یکی از بازیکنان

    یکی از بازیکنان با ارسال رخداد cancel خروج خود از بازی را اعلام می‌کند.
    این رخداد اطلاعاتی ندارد. بازیکن دیگر با رخداد destroy از این قضیه مطلع می‌شود.

  • قطع شدن اتصال یکی از بازیکنان

    ارتباط سوکت یکی از بازیکنان به هر دلیلی قطع می‌شود. بازیکن دیگر با رخداد destroy از این قضیه مطلع می‌شود.

  • شکست یکی از بازیکنان

    کلاینت بازیکن در صورت خورده شدن شوکولات سمی توسط بازیکن، رخداد lose را به سرور ارسال می‌کند.
    این رخداد اطلاعاتی ارسال نمیکند. در صورت شکست یکی از بازیکن ها، بازیکن دیگر رخداد win را دریافت می‌کند که اطلاعاتی درون خود ندارد.

    در نهایت هر دو بازیکن با رخداد end از پایان بازی مطلع می‌شوند.

    در این مرحله اطلاعات بازیکنان و بازی برای ثبت در جدول امتیازات، ذخیره می‌گردد.

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