به کارگاه ترجمه ی سینا2 خوش آمدید!

تبلیغات شما در اینجا بالا

تنظیم setup و loop برای بازی آردوینو

مانند تمام برنامه های آردوینو، بازی کوچک ما به تابع های setup و loop احتیاج دارد:

void setup() {
  randomSeed(analogRead(A0));
  tv.begin(PAL, WIDTH, HEIGHT);
  nunchuk.initialize();
  init_game();
}

void loop() {
  check_controls();
  switch (state) {
    case INTRO:    intro();       break;
    case STARTING: start_game();  break;
    case RUNNING:  update_game(); break;
    case DONE:     game_over();   break;
  }
  tv.delay_frame(1); 
}

void check_controls() {
  up = down = left = right = c_button = z_button = false;
  if (nunchuk.update())
  {
    if (nunchuk.joystick_x() < 70)
      left = true;
    if (nunchuk.joystick_x() > 150)
      right = true;
    if (nunchuk.joystick_y() > 150)
      up = true;
    if (nunchuk.joystick_y() < 70)
      down = true;
    c_button = nunchuk.c_button();
    z_button = nunchuk.z_button();
  }
}

 کدهای بالا در آدرس زیر قرار دارند:

Tinkering/Pragduino/Pragduino.ino

 تابع setup با استفاده از کمی نویز که از پین A0 به دست می آورد، ژنراتور تولید کننده ی عدد تصادفی را مقدار دهی اولیه می کند. سپس صفحه ی نمایش(screen)، و پس از آن Nunchuk و در نهایت متد init_game را مقدار دهی اولیه می کند تا به تمام متغیرهای سراسری(global) مقادیر قابل قبولی داده شود.

تابع loop، متد check_controls را فراخوانی می کند تا حالت فعلی Nunchuk را قرائت کند.سپس حالت فعلی بازی را در یک دستور switch بررسی می کند و کار خود را به تابعی که برای تنظیم حالت های فعلی(current state) ایجاد کرده ایم محول می کند. در خط 16، تابع loop یک تابع از کتابخانه ی TVout را فراخوانی می کند که شما قبلا با آن آشنا نشده اید. تابع delay_frame  منتظر شروع فاصله خالی  عمودی بعدی می ماند -یعنی منتظر لحظه ای می شود که پرتو الکترون تلویزیون از پایین صفحه ی نمایش به بالا منحرف شود. ما تنها می خواهیم صبر کنیم تا فریم بعدی شروع شود؛ بنابراین مقدار 1 را به متد delay_frame پاس می دهیم. برای جلوگیری از سوسو زدن(flickering) این کار ضروری است زیرا به ما اطمینان می دهد که ایجاد گرافیک های بازی در مموری با خروجی واقعی روی صفحه سینک(sync یا همگام سازی) می شود.

!Donate

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.


تصویر امنیتی
تصویر امنیتی جدید

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال