آموزش الگوهای برنامه نویسی بازی
46 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

چرا نویسنده کتاب، کل محتوای آن را به صورت رایگان در وب قرار داده است؟

  • به این دلیل که او یک دانشجوی فقیر است و به دنبال کسب درآمد نیست.
  • به این دلیل که نسخه‌های دیجیتال کتاب DRM دارند و دسترسی به آن‌ها محدود است.
  • به این دلیل که او می‌خواهد تا حد امکان افراد بتوانند به کتاب دسترسی داشته باشند. (correct)
  • به این دلیل که او می‌خواهد قبل از خرید نسخه چاپی، مردم با محتوای کتاب آشنا شوند.
  • اگر کاربری نسخه دیجیتال کتاب را خریداری کند، چه محدودیتی در استفاده از آن دارد؟

  • کاربر فقط می‌تواند کتاب را در یک دستگاه بخواند.
  • هیچ محدودیتی برای کاربر وجود ندارد. (correct)
  • کاربر فقط می‌تواند کتاب را برای مدت زمان مشخصی استفاده کند.
  • کاربر نمی‌تواند کتاب را به دستگاه‌های دیگر منتقل کند.
  • چرا نسخه چاپی کتاب در amazon.ca موجود نیست؟

  • به دلیل اینکه CreateSpace مستقیماً به کانادا ارسال نمی‌کند. (correct)
  • به دلیل مسائل مربوط به حقوق چاپ و نشر
  • به دلیل اینکه نویسنده، کانادایی نیست.
  • به دلیل عدم تقاضا برای نسخه چاپی در کانادا.
  • نویسنده کتاب چه کسی است و کجا کار می‌کرد؟

    <p>باب نیستروم، در الکترونیک آرتز (B)</p> Signup and view all the answers

    هدف باب نیستروم از نوشتن کتاب چه بود؟

    <p>به اشتراک گذاشتن تجربیات خود از کدهای خوب و بد با دیگران. (A)</p> Signup and view all the answers

    چگونه می‌توان با نویسنده کتاب در تماس بود؟

    <p>از طریق ایمیل در سایت یا توییتر (A)</p> Signup and view all the answers

    چرا نویسنده از مخاطبان می‌خواهد که در صورت یافتن اشتباهات یا داشتن پیشنهاد با او تماس بگیرند؟

    <p>برای اینکه کتاب را به صورت آنلاین راحت تر ویرایش و به روز کند. (D)</p> Signup and view all the answers

    اگر بخواهیم از به روز رسانی های کتاب مطلع شویم، چه راهی پیشنهاد شده است؟

    <p>عضویت در لیست ایمیل نویسنده (D)</p> Signup and view all the answers

    notify() Subject protected

    <pre><code> `Physics` . (A) </code></pre> Signup and view all the answers

    Observer Event

    <p><code>Observer</code> <code>Event</code> . (B)</p> Signup and view all the answers

    Subject Physics falling event notify()

    <pre><code>`physics.entityFell().addObserver(this)` (D) </code></pre> Signup and view all the answers

    Observer (observers)

    <p><code>Subject</code> <code>notify()</code> . (D)</p> Signup and view all the answers

    Subject Observer Subject notify()

    <p><code>Subject</code> <code>Observer</code> . (D)</p> Signup and view all the answers

    Subject Observers protected

    <pre><code> (observers) . (C) </code></pre> Signup and view all the answers

    چه چیزی سبب می‌شود که درختان جنگل بیشتر شبیه به هم باشند؟

    <p>آنها معمولاً از همین مش و بافت‌ها استفاده می‌کنند. (D)</p> Signup and view all the answers

    چرا پردازش تمام اطلاعات درختان جنگل در هر فریم ممکن است ناممکن باشد؟

    <p>به دلیل تعداد زیاد درختان و داده‌های بزرگ مش و بافت‌ها. (B)</p> Signup and view all the answers

    کدام گزینه به خوبی نشان می‌دهد که تمامی درختان یک جنگل شبیه به هم هستند؟

    <p>درختان معمولاً دارای مش و بافت مشابه هستند. (A)</p> Signup and view all the answers

    کدامیک از متدهای نوشته شده برای مدل‌سازی جنگل صحیح است؟

    <p>تمام اطلاعات درختان در یک کلاس تجمیع شده است. (B)</p> Signup and view all the answers

    کدام یک از موارد زیر به عنوان خصوصیاتی از یک شیء درخت در کلاس Tree تعریف شده است؟

    <p>مکان و جهت درخت در جنگل (B)</p> Signup and view all the answers

    اصطلاح Flyweight در چه زمینه‌ای در توصیف جنگل‌ها استفاده می‌شود؟

    <p>مدل‌سازی موثر درختان با استفاده از کمترین داده ممکن. (D)</p> Signup and view all the answers

    چرا درختان باید به گونه‌ای مدل‌سازی شوند که خصوصیات مشترک آنها تجزیه و تحلیل شود؟

    <p>به این دلیل که این کار باعث بهبود کارایی می شود. (D)</p> Signup and view all the answers

    ویژگی‌های مشترک درختان شامل چه عناصری است؟

    <p>مش، بافت، رنگ و موقعیت. (C)</p> Signup and view all the answers

    چرا نویسنده کتاب 'Design Patterns: Elements of Reusable Object-Oriented Software' را بسیار مورد توجه قرار داد؟

    <p>زیرا احساس کرد راه‌حل‌هایی برای مشکلات خود پیدا کرده است. (B)</p> Signup and view all the answers

    چه عاملی باعث شد که نویسنده اعتقاد داشته باشد برنامه‌نویسان به خوبی طراحی نرم‌افزار را رعایت نکرده‌اند؟

    <p>به دلیل تمرکز زیاد بر ویژگی‌های جدید. (C)</p> Signup and view all the answers

    نویسنده توسط چه رویدادی فرصتی برای شروع کار در Electronic Arts پیدا کرد؟

    <p>دوستی که او را به این شغل معرفی کرد. (C)</p> Signup and view all the answers

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

    <p>اغلب به عنوان یک موضوع کم اهمیت تر از ویژگی‌ها دیده می‌شود. (C)</p> Signup and view all the answers

    نویسنده چه چیزی را درباره کدهای نوشته شده توسط دیگر برنامه‌نویسان تجربه کرد؟

    <p>برخی کدها عالی و برخی دیگر ضعیف بودند. (C)</p> Signup and view all the answers

    کدام یک از موارد زیر واقعیت برنامه‌نویسی در دنیای واقعی را به خوبی نشان می‌دهد؟

    <p>شرایط سخت و فشار زمانی تأثیر زیادی بر کدها دارد. (A)</p> Signup and view all the answers

    نویسنده در میان یادگیری برنامه‌نویسی چه چالشی را در ابتدا تجربه کرد؟

    <p>درک کدهای بزرگ و سازماندهی آن‌ها. (A)</p> Signup and view all the answers

    کدام روش برای حذف یک ناظر در یک لیست پیوندی دو طرفه در زمان ثابت استفاده می‌شود؟

    <p>استفاده از لیست پیوندی دو طرفه (A)</p> Signup and view all the answers

    چرا نویسنده احساس نارضایتی کرد وقتی به کدهای بازی‌های بزرگ نگاهی انداخت؟

    <p>به نظر می‌رسید که کدها نامنظم بودند. (B)</p> Signup and view all the answers

    چرا در استفاده از لیست پیوندی تک طرفه برای حذف یک ناظر باید لیست را طی کرد؟

    <p>زیرا دسترسی تصادفی به ناظرها وجود ندارد (A)</p> Signup and view all the answers

    چه چیز باعث می‌شود که ناظر تنها بتواند بخشی از یک لیست ناظر باشد؟

    <p>این که ناظرها به عنوان گره‌های لیست استفاده می‌شوند (B)</p> Signup and view all the answers

    چگونه می‌توان به صورت بهینه هر ناظر را در یک لیست پیوندی مطلع کرد؟

    <p>با استفاده از یک حلقه برای طی کل لیست (B)</p> Signup and view all the answers

    کدام یک از ویژگی‌ها در استفاده از لیست پیوندی دو طرفه به دست می‌آید؟

    <p>اولویت یکسان برای همه ناظرها (C)</p> Signup and view all the answers

    کدام یک از نقاط ضعف استفاده از ناظر به عنوان گره لیست در سیستم به شمار می‌آید؟

    <p>یک ناظر نمی‌تواند در چند موضوع همزمان عمل کند (B)</p> Signup and view all the answers

    کدام یک از گزینه‌ها نمایانگر رویکردی برای بهبود نظر ناظرها در زمان اطلاع‌رسانی است؟

    <p>متوقف کردن اطلاع‌رسانی پس از اولین پاسخ ناظر (A)</p> Signup and view all the answers

    انعطاف‌پذیری چه نوع لیست پیوندی در ثبت و لغو ثبت ناظرها به کار می‌رود؟

    <p>لیست پیوندی دو طرفه (C)</p> Signup and view all the answers

    در کد بالا، چرا از یک آرایه دو بعدی (nested array) برای ذخیره سازی نقشه جهان استفاده شده است؟

    <p>این روش در زبان های C و C++ کارآمدتر است، زیرا همه عناصر کنار هم در حافظه ذخیره می شوند. (B)</p> Signup and view all the answers

    در کد بالا، World::getMovementCost چه کاری انجام می دهد؟

    <p>هزینه حرکت در یک موقعیت مشخص در جهان را برمی گرداند. (C)</p> Signup and view all the answers

    کدام عبارت در مورد روش World::isWater در کد بالا صحیح است؟

    <p>این روش بررسی می کند که آیا یک موقعیت مشخص در جهان آب دارد یا خشک است. (D)</p> Signup and view all the answers

    در کد بالا، چرا از ساختار class Terrain استفاده شده است؟

    <p>برای استفاده مجدد و انعطاف پذیری کد. (A), برای بهبود خوانایی و سادگی کد. (B), برای ایجاد ارتباط بهتر بین کلاس World و زمین ها. (C), برای کپسوله کردن داده ها و رفتار مرتبط با هر نوع زمین. (D)</p> Signup and view all the answers

    کلاس Terrain در کد بالا از کدام اصطلاح طراحی شیءگرا استفاده می کند؟

    <p>کپسوله سازی (Encapsulation) (A)</p> Signup and view all the answers

    چرا روش‌های کلاس Terrain به طور const تعریف شده‌اند؟

    <p>برای جلوگیری از تغییر تصادفی اطلاعات مربوط به هر نوع زمین. (A), برای ایجاد یک رابط ثابت و غیر قابل تغییر برای کلاس. (C)</p> Signup and view all the answers

    در کد بالا، "flyweight" به چه معنی است؟

    <p>شیء ای که برای به اشتراک گذاری بین اجزای مختلف استفاده می شود. (A), شیء ای که برای ذخیره اطلاعات ثابت و غیر قابل تغییر استفاده می شود. (B)</p> Signup and view all the answers

    کدام مورد از مزایای استفاده از class Terrain در کد است؟

    <p>همه گزینه ها صحیح هستند. (D)</p> Signup and view all the answers

    Study Notes

    نویسنده و هدف کتاب

    • نویسنده کتاب، باب نیستروم، است و در ایالت الکترونیک آرتز کار می کرده است.
    • هدف کتاب، آموزش الگوهای برنامه نویسی بازی به ویژه برای برنامه نویسان تازه کار است، با مثال هایی از کدهای خوب و بد.
    • کتاب به صورت آنلاین و رایگان در دسترس است.

    دسترسی به کتاب

    • نسخه آنلاین کتاب به صورت رایگان در دسترس است و می توان از آن برای آشنایی با کتاب استفاده کرد.
    • نسخه های دیجیتالی کتاب دارای DRM نیستند، که به معنای قابلیت انتقال به تمام دستگاه ها و قابلیت بایگانی است.
    • نسخه چاپی از طریق آمازون آمریکا و بارنز اند نوبل قابل سفارش است (ارسال به کانادا مستقیم امکان پذیر نیست).

    نظرات خوانندگان

    • Ryan Leonski: سایت کتاب منبعی مفید برای برنامه نویسان بازی است.
    • Mark Richards: کتاب به زیبایی نوشته شده است و نویسنده ستودنی است.
    • Alistair Doulin: کتاب بهترین توصیه برای برنامه نویسان بازی جدید (و قدیمی) است.

    مقدمه فصل

    • در فصل اول، نویسنده از تجربیاتش در الکترونیک آرتز سخن می گوید و در نظر دارد از کدهای خوب الگوهای برنامه نویسی را ایجاد کند.
    • کتاب الگوهای طراحی را مورد بررسی قرار می‌دهد.

    الگوهای برنامه نویسی

    • Flyweight:

      • برای مدیریت منابع گرافیکی در بازی (مدیریت درختان در جنگل) استفاده می شود.
      • با وجود تعداد زیاد درختان یکسان، اطلاعات مشترک را به اشتراک می گذارد (شباهت در درختان)
      • برای کاهش حجم دادههای گرافیکی و بهبود کارایی برنامه به کار می‌رود.
    • Observer:

      • نوعی ارتباط بین اجزا در یک برنامه است که برای به اشتراک گذاشتن اطلاعات استفاده می‌شود.
      • به اجزای مختلف اجازه می‌دهد تا به هر تغییری در قسمت دیگر به سرعت واکنش نشان دهند.
    • Observer در ارتباط با فیزیک:

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

    چگونگی پیاده‌سازی الگوهای برنامه نویسی

    • کلاس Flyweight: کلاس درخت داده‌ها با استفاده از داده‌های مشترک برای به اشتراک گذاشتن مدل می‌شود.

    • در الگوی Observer، سوژه از طریق یک لیست پیوندی از ناظران را نگهداری می‌کند.

    • پیاده‌سازی Observer:

      • سوژه لیستی از ناظران را حفظ می‌کند.
      • ناظران می‌توانند با سوژه ارتباط برقرار کنند و به اطلاعیه‌ها پاسخ دهند.
      • سوژه هنگام تغییرات، به تمام ناظران اطلاع می‌دهد.
      • مدیریت داده‌های متصل به طریق ناظرها برای کارایی برنامه است.

    نکات مهم

    • الگوی Flyweight برای به اشتراک گذاشتن داده‌های مشابه در اجسام گوناگون به کار می‌رود.
    • الگوی Observer برای ارتباط بین قسمت‌های مختلف برنامه در بازی‌ها استفاده می‌شود.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Game Programming Patterns PDF

    Description

    کتاب نوشته باب نیستروم به آموزش الگوهای برنامه نویسی بازی می پردازد، با تمرکز ویژه بر روی برنامه نویسان تازه کار. این کتاب شامل مثال های خوبی از کدهای برنامه نویسی است که می تواند به توسعه دهندگان در بهبود مهارت هایشان کمک کند.

    More Like This

    Use Quizgecko on...
    Browser
    Browser