Podcast
Questions and Answers
چرا نویسنده کتاب، کل محتوای آن را به صورت رایگان در وب قرار داده است؟
چرا نویسنده کتاب، کل محتوای آن را به صورت رایگان در وب قرار داده است؟
اگر کاربری نسخه دیجیتال کتاب را خریداری کند، چه محدودیتی در استفاده از آن دارد؟
اگر کاربری نسخه دیجیتال کتاب را خریداری کند، چه محدودیتی در استفاده از آن دارد؟
چرا نسخه چاپی کتاب در amazon.ca موجود نیست؟
چرا نسخه چاپی کتاب در amazon.ca موجود نیست؟
نویسنده کتاب چه کسی است و کجا کار میکرد؟
نویسنده کتاب چه کسی است و کجا کار میکرد؟
Signup and view all the answers
هدف باب نیستروم از نوشتن کتاب چه بود؟
هدف باب نیستروم از نوشتن کتاب چه بود؟
Signup and view all the answers
چگونه میتوان با نویسنده کتاب در تماس بود؟
چگونه میتوان با نویسنده کتاب در تماس بود؟
Signup and view all the answers
چرا نویسنده از مخاطبان میخواهد که در صورت یافتن اشتباهات یا داشتن پیشنهاد با او تماس بگیرند؟
چرا نویسنده از مخاطبان میخواهد که در صورت یافتن اشتباهات یا داشتن پیشنهاد با او تماس بگیرند؟
Signup and view all the answers
اگر بخواهیم از به روز رسانی های کتاب مطلع شویم، چه راهی پیشنهاد شده است؟
اگر بخواهیم از به روز رسانی های کتاب مطلع شویم، چه راهی پیشنهاد شده است؟
Signup and view all the answers
notify()
Subject
protected
notify()
Subject
protected
Signup and view all the answers
Observer
Event
Observer
Event
Signup and view all the answers
Subject
Physics
falling event
notify()
Subject
Physics
falling event
notify()
Signup and view all the answers
Observer
(observers)
Observer
(observers)
Signup and view all the answers
Subject
Observer
Subject
notify()
Subject
Observer
Subject
notify()
Signup and view all the answers
Subject
Observers
protected
Subject
Observers
protected
Signup and view all the answers
چه چیزی سبب میشود که درختان جنگل بیشتر شبیه به هم باشند؟
چه چیزی سبب میشود که درختان جنگل بیشتر شبیه به هم باشند؟
Signup and view all the answers
چرا پردازش تمام اطلاعات درختان جنگل در هر فریم ممکن است ناممکن باشد؟
چرا پردازش تمام اطلاعات درختان جنگل در هر فریم ممکن است ناممکن باشد؟
Signup and view all the answers
کدام گزینه به خوبی نشان میدهد که تمامی درختان یک جنگل شبیه به هم هستند؟
کدام گزینه به خوبی نشان میدهد که تمامی درختان یک جنگل شبیه به هم هستند؟
Signup and view all the answers
کدامیک از متدهای نوشته شده برای مدلسازی جنگل صحیح است؟
کدامیک از متدهای نوشته شده برای مدلسازی جنگل صحیح است؟
Signup and view all the answers
کدام یک از موارد زیر به عنوان خصوصیاتی از یک شیء درخت در کلاس Tree تعریف شده است؟
کدام یک از موارد زیر به عنوان خصوصیاتی از یک شیء درخت در کلاس Tree تعریف شده است؟
Signup and view all the answers
اصطلاح Flyweight در چه زمینهای در توصیف جنگلها استفاده میشود؟
اصطلاح Flyweight در چه زمینهای در توصیف جنگلها استفاده میشود؟
Signup and view all the answers
چرا درختان باید به گونهای مدلسازی شوند که خصوصیات مشترک آنها تجزیه و تحلیل شود؟
چرا درختان باید به گونهای مدلسازی شوند که خصوصیات مشترک آنها تجزیه و تحلیل شود؟
Signup and view all the answers
ویژگیهای مشترک درختان شامل چه عناصری است؟
ویژگیهای مشترک درختان شامل چه عناصری است؟
Signup and view all the answers
چرا نویسنده کتاب 'Design Patterns: Elements of Reusable Object-Oriented Software' را بسیار مورد توجه قرار داد؟
چرا نویسنده کتاب 'Design Patterns: Elements of Reusable Object-Oriented Software' را بسیار مورد توجه قرار داد؟
Signup and view all the answers
چه عاملی باعث شد که نویسنده اعتقاد داشته باشد برنامهنویسان به خوبی طراحی نرمافزار را رعایت نکردهاند؟
چه عاملی باعث شد که نویسنده اعتقاد داشته باشد برنامهنویسان به خوبی طراحی نرمافزار را رعایت نکردهاند؟
Signup and view all the answers
نویسنده توسط چه رویدادی فرصتی برای شروع کار در Electronic Arts پیدا کرد؟
نویسنده توسط چه رویدادی فرصتی برای شروع کار در Electronic Arts پیدا کرد؟
Signup and view all the answers
کدام یک از موارد زیر بهدرستی شیوه تعامل بین سیستمهای مختلف در بازیها را توصیف میکند؟
کدام یک از موارد زیر بهدرستی شیوه تعامل بین سیستمهای مختلف در بازیها را توصیف میکند؟
Signup and view all the answers
نویسنده چه چیزی را درباره کدهای نوشته شده توسط دیگر برنامهنویسان تجربه کرد؟
نویسنده چه چیزی را درباره کدهای نوشته شده توسط دیگر برنامهنویسان تجربه کرد؟
Signup and view all the answers
کدام یک از موارد زیر واقعیت برنامهنویسی در دنیای واقعی را به خوبی نشان میدهد؟
کدام یک از موارد زیر واقعیت برنامهنویسی در دنیای واقعی را به خوبی نشان میدهد؟
Signup and view all the answers
نویسنده در میان یادگیری برنامهنویسی چه چالشی را در ابتدا تجربه کرد؟
نویسنده در میان یادگیری برنامهنویسی چه چالشی را در ابتدا تجربه کرد؟
Signup and view all the answers
کدام روش برای حذف یک ناظر در یک لیست پیوندی دو طرفه در زمان ثابت استفاده میشود؟
کدام روش برای حذف یک ناظر در یک لیست پیوندی دو طرفه در زمان ثابت استفاده میشود؟
Signup and view all the answers
چرا نویسنده احساس نارضایتی کرد وقتی به کدهای بازیهای بزرگ نگاهی انداخت؟
چرا نویسنده احساس نارضایتی کرد وقتی به کدهای بازیهای بزرگ نگاهی انداخت؟
Signup and view all the answers
چرا در استفاده از لیست پیوندی تک طرفه برای حذف یک ناظر باید لیست را طی کرد؟
چرا در استفاده از لیست پیوندی تک طرفه برای حذف یک ناظر باید لیست را طی کرد؟
Signup and view all the answers
چه چیز باعث میشود که ناظر تنها بتواند بخشی از یک لیست ناظر باشد؟
چه چیز باعث میشود که ناظر تنها بتواند بخشی از یک لیست ناظر باشد؟
Signup and view all the answers
چگونه میتوان به صورت بهینه هر ناظر را در یک لیست پیوندی مطلع کرد؟
چگونه میتوان به صورت بهینه هر ناظر را در یک لیست پیوندی مطلع کرد؟
Signup and view all the answers
کدام یک از ویژگیها در استفاده از لیست پیوندی دو طرفه به دست میآید؟
کدام یک از ویژگیها در استفاده از لیست پیوندی دو طرفه به دست میآید؟
Signup and view all the answers
کدام یک از نقاط ضعف استفاده از ناظر به عنوان گره لیست در سیستم به شمار میآید؟
کدام یک از نقاط ضعف استفاده از ناظر به عنوان گره لیست در سیستم به شمار میآید؟
Signup and view all the answers
کدام یک از گزینهها نمایانگر رویکردی برای بهبود نظر ناظرها در زمان اطلاعرسانی است؟
کدام یک از گزینهها نمایانگر رویکردی برای بهبود نظر ناظرها در زمان اطلاعرسانی است؟
Signup and view all the answers
انعطافپذیری چه نوع لیست پیوندی در ثبت و لغو ثبت ناظرها به کار میرود؟
انعطافپذیری چه نوع لیست پیوندی در ثبت و لغو ثبت ناظرها به کار میرود؟
Signup and view all the answers
در کد بالا، چرا از یک آرایه دو بعدی (nested array) برای ذخیره سازی نقشه جهان استفاده شده است؟
در کد بالا، چرا از یک آرایه دو بعدی (nested array) برای ذخیره سازی نقشه جهان استفاده شده است؟
Signup and view all the answers
در کد بالا، World::getMovementCost
چه کاری انجام می دهد؟
در کد بالا، World::getMovementCost
چه کاری انجام می دهد؟
Signup and view all the answers
کدام عبارت در مورد روش World::isWater
در کد بالا صحیح است؟
کدام عبارت در مورد روش World::isWater
در کد بالا صحیح است؟
Signup and view all the answers
در کد بالا، چرا از ساختار class Terrain
استفاده شده است؟
در کد بالا، چرا از ساختار class Terrain
استفاده شده است؟
Signup and view all the answers
کلاس Terrain
در کد بالا از کدام اصطلاح طراحی شیءگرا استفاده می کند؟
کلاس Terrain
در کد بالا از کدام اصطلاح طراحی شیءگرا استفاده می کند؟
Signup and view all the answers
چرا روشهای کلاس Terrain
به طور const
تعریف شدهاند؟
چرا روشهای کلاس Terrain
به طور const
تعریف شدهاند؟
Signup and view all the answers
در کد بالا، "flyweight" به چه معنی است؟
در کد بالا، "flyweight" به چه معنی است؟
Signup and view all the answers
کدام مورد از مزایای استفاده از class Terrain
در کد است؟
کدام مورد از مزایای استفاده از class Terrain
در کد است؟
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.
Related Documents
Description
کتاب نوشته باب نیستروم به آموزش الگوهای برنامه نویسی بازی می پردازد، با تمرکز ویژه بر روی برنامه نویسان تازه کار. این کتاب شامل مثال های خوبی از کدهای برنامه نویسی است که می تواند به توسعه دهندگان در بهبود مهارت هایشان کمک کند.