داده های در بازی نقش اساسی و مهمی دارند، به طوری که تقریباً همه بازی بر طبق داده ها پیش می رود، پس باید داده ها را دسته بندی کنیم تا بر رو آنها کنترل بهتری داشته باشیم و بتوانیم از آنها به خوبی استفاده کنیم. ساده ترین چیزی که برای دسته بندی داده ها به ذهن ما می رسد یک آرایه دو بعدی و یا یک بعدی است. اما آرایه ها همیشه نمیتوانند نیاز ما را بر طرف کنند زیرا از توابع محدودی برخوردار هستند. پس باید چیزی فراتر از یک آرایه به کمک ما بیاید. Data structures یا ساختار داده در GM: S برای دسته بندی اطلاعات و ایجاد یک ساختار برای آنها ایجاد شده است. با یک ساختار داده می توانیم کنترلی کامل بر روی داده ها داشته باشیم و از آنها به خوبی استفاده کنیم، زیرا انواع زیادی از آنها وجود دارد و هر کدام توابع زیادی را برای حذف، جایگزینی، اضافه کردن و... پشتیبانی می کنند. هر نوع ساختار داده هم برای کاری ساخته شده است، برای مثال List ها که ساده و سریع و در عین حال پیچیده هستند، و یا Grid با امکانات زیاد و توابع کاربردی. در این جلسه به معرفی شش ساختار داده می پردازیم که می تواند به شما بسیار کمک کنند.

  • Stack: این ساختار به صورت Last-in-first-out ساخته می شود (LIFO). این نوع ساختار طوری است که هر داده جدید بالا داده قبلی اضافه می شود و هنگام خواندن داده از این ساختار جدید ترین داده (بالا ترین داده) خوانده می شود. همانند اینکه شما چند بشقاب را می خواهید روی هم بگذارید، اول از پایین شروع می کنید و آنها را روی هم قرار می دهید، سپس برای استفاده از بشقاب ها، باید بالا ترین بشقاب را بردارید و به ترتیب پایین بیایید. یعنی قبل از اینکه بتوانید به تمام داده ها دسترسی پیدا کنید ابتدا باید داده های رویی و جدید را بر دارید. این ساختار زمانی کاربردی است که بخواهید برای استفاده از داده های قدیمی تاخیر ایجاد کنید. با توابع این ساختار می توانید داده ها را کپی کنید، بخوانید، اضافه کنید، داده ها را حذف کنید و یا اندازه داده ها را به دست آورید. توجه کنید که برای پر نشدن حافظه و ایجاد خرابی در بازی، باید داده ها را پس از استفاده حذف کرد.
  • Queues: این ساختار تا حدودی شبیه به DS Stack است. Queues به صورت First-in-first-out ساخته می شود (FIFO) ، مانند DS Stack هر داده جدید بالا داده قبلی ایجاد می شود، اما برای استفاده ابتدا داده ها قدیمی تر خوانده می شوند. همانند یک صف پیتزا فروشی، ابتدا همه در صف می ایستند و کسانی که تازه به صف می آیند بالا و قبل از بقیه می ایستند، سپس افرادی که زود تر آمده بودند سرویس دهی می شوند. یعنی داده های قدیمی تر زود تر خوانده می شوند.
  • List: این ساختار همانند یک آرایه یک بعدی است که داده ها را به صورت پیوسته ذخیره می کند. اما بر خلاف یک آرایه یک بعدی بسیار انعطاف پذیر می باشد و از توابع کاربری برخوردار است. می تواند به تمام داده ها در هر زمانی دسترسی پیدا کنید، آنها را حذف و یا داده جدیدی در هر جا اضافه کنید. می توانید داده ها را به صورت صعودی و یا نزولی مرتب کنید، از آنها کپی بگیرید و... . این ساختار همانند یک منو رستوران است. می توان به هر جای آن غذایی اضافه کرد و یا در صورت تمام شدن غذا آن را حذف کرد. مشتری از تمام داده ها می تواند استفاده کند و در آنها جست و جو کند.
  • Map: در این ساختار اطلاعات می توانند با کلید ها دو به دو ذخیره شوند. این ساختار با کلید و مقدار تشکیل شده است. مانند یک Dictionary که هر لغت معنای خاصی دارد. اگر چه نمیتوان این مقادیر را مرتب کرد، اما دارای توابع زیادی است که استفاده از اطلاعات را بسیار آسان می کنند.
  • Priority Queues: در این ساختار می توانید در هنگام ذخیره اطلاعات به آنها اولویت بدهید. می توانید کمترین و بیشترین اولویت را پیدا کنید، اولویت ها را تغییر دهید و یا اولویت یک مقدار را بیابید.
  • Grid: شبکه، این ساختار مانند یک آرایه دو بعدی با توابعی بسیار کاربردی و زیاد است. می توانید داده ها را در سطر و ستون ذخیره کنید و از آنها به خوبی استفاده کنید. به راحتی می توانید داده ها را کم و یا اضافه و دستکاری کنید. برای مثال، در مقایسه انواع نسخه های یک برنامه می توانید نسخه ها را در سطر ها و ویژگی هر کدام را در ستون ها ذخیره کنید. در هر زمان می توانید آنها را تغییر، کم یا زیاد کنید. و یا برای ایجاد یک فروشگاه در بازی می توانید اقلام را در ستون ها ذخیره کنید و قیمت و تعداد و ویژگی هر کدام را در سطر ها بنویسید.