شخصیت D&D

شخصیت D&D

آسان

مقدمه

پس از هفته‌ها انتظار، شما و دوستانتان برای نخستین بازی Dungeons & Dragons (D&D) گرد هم می‌آیید. چون این اولین جلسه‌ی بازی است، هر بازیکن باید شخصیتی بسازد که با آن بازی کند. توانایی‌های شخصیت با ریختن تاس‌های شش‌وجهی مشخص می‌شود، اما تاس‌ها کجا هستند؟ با بهت متوجه می‌شوید که دوستانتان منتظرند شما تاس‌ها را تهیه کنید؛ بالاخره شما بودید که ایده‌ی بازی D&D را دادید! با دستپاچگی متوجه می‌شوید که آوردن تاس‌ها را فراموش کرده‌اید و این یعنی دیگر بازی D&D در کار نیست. چون مهارت‌های پایه‌ی برنامه‌نویسی دارید، سریع راه‌حلی پیدا می‌کنید: برنامه‌ای می‌نویسید که ریختن تاس را شبیه‌سازی کند.

دستورالعمل‌ها

برای یک بازی Dungeons & Dragons، هر بازیکن با ساختن شخصیتی که بتواند با آن بازی کند کار خود را شروع می‌کند. این شخصیت، در کنار موارد دیگر، شش ویژگی دارد: قدرت، چابکی، استقامت، هوش، خرد و جذابیت. امتیاز این شش ویژگی به‌صورت تصادفی تعیین می‌شود. این کار را با ریختن چهار تاس شش‌وجهی و ثبت مجموع سه تاس بزرگ‌تر انجام می‌دهید. این کار را شش بار انجام می‌دهید، یک بار برای هر ویژگی.

امتیاز جان اولیه‌ی شخصیت شما برابر است با ۱۰ + تعدیل‌کننده‌ی استقامت شخصیت شما. تعدیل‌کننده‌ی استقامت شخصیت‌تان را با کم کردن ۱۰ از استقامت او، تقسیم نتیجه بر ۲ و گرد کردن آن به پایین به دست می‌آورید.

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

برای مثال، شش پرتاب چهار تاس می‌تواند چنین باشد:

  • ۵، ۳، ۱، ۶: ۱ را کنار می‌گذارید، ۵ + ۳ + ۶ = ۱۴ را جمع می‌زنید و آن را به قدرت اختصاص می‌دهید.
  • ۳، ۲، ۵، ۳: ۲ را کنار می‌گذارید، ۳ + ۵ + ۳ = ۱۱ را جمع می‌زنید و آن را به چابکی اختصاص می‌دهید.
  • ۱، ۱، ۱، ۱: ۱ را کنار می‌گذارید، ۱ + ۱ + ۱ = ۳ را جمع می‌زنید و آن را به استقامت اختصاص می‌دهید.
  • ۲، ۱، ۶، ۶: ۱ را کنار می‌گذارید، ۲ + ۶ + ۶ = ۱۴ را جمع می‌زنید و آن را به هوش اختصاص می‌دهید.
  • ۳، ۵، ۳، ۴: ۳ را کنار می‌گذارید، ۵ + ۳ + ۴ = ۱۲ را جمع می‌زنید و آن را به خرد اختصاص می‌دهید.
  • ۶، ۶، ۶، ۶: ۶ را کنار می‌گذارید، ۶ + ۶ + ۶ = ۱۸ را جمع می‌زنید و آن را به جذابیت اختصاص می‌دهید.

چون استقامت ۳ است، تعدیل‌کننده‌ی استقامت منفی ۴ و امتیاز جان ۶ است.

Note

بیشتر زبان‌های برنامه‌نویسی تولیدکننده‌های (شبه)تصادفی دارند، اما کمتر زبان برنامه‌نویسی‌ای برای ریختن تاس طراحی شده است. یکی از این زبان‌ها Troll است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Elixir Exercism

آماده‌اید شخصیت D&D را شروع کنید؟

در Exercism ثبت‌نام کنید تا Elixir را همراه با 58 مفهوم168 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.

بررسی عمیق شخصیت D&D!

بررسی می‌کنیم که چگونه تاس‌های (به‌ظاهر) تصادفی تولید کنیم. با دانه‌ها، اعداد شبه‌تصادفی و چند دام رایج آشنا می‌شوید. در پایان می‌بینیم که تست مبتنی بر ویژگی برای تست توابعی که مقادیر تصادفی برمی‌گردانند چقدر عالی است.