PDA

View Full Version : سوال: Save کردن کلاس با متغیرها



hossein_ignore
شنبه 19 تیر 1389, 03:24 صبح
سلام.
چجوری میشه یه کلاس رو با مقدار متغیراش Save کرد و دوباره اونو Load کرد؟ اصلا چنین چیزی امکان داره؟

Salar Ashgi
شنبه 19 تیر 1389, 10:45 صبح
شما وقتی پروژه تون رو Build و نهایتا کامپایل میکنید ، تمامی کلاسها ، DLL ها و ... در مسیر برنامه ذخیره

میشوند .

برای Load هم از قسمت solution explorer فایل کلاس رو لود کنید .

hossein_ignore
شنبه 19 تیر 1389, 11:59 صبح
نه! من دارم بازی میسازم می خوام اسش Save بزارم! می خواستم ببینم اینجوری میشه! یعنی هنگام اجرای برنامه اونو Save کرد و وقتی Load می کنیم متغیر ها همون مقدارو داشته باشن

مهدی رحیم زاده
شنبه 19 تیر 1389, 12:05 عصر
دوست من شما می تونید تغییرات رو توی یک فایل مثل یک XML ذخیره کنید .

hossein_ignore
شنبه 19 تیر 1389, 12:28 عصر
خب میشه توضیح بدین؟ یا یه مثال؟

hossein_ignore
شنبه 19 تیر 1389, 13:14 عصر
من فکر می کنم با XML فقط می شه مقادیری از نوع string رو ذخیره کرد! درسته؟ من می خوام از هر نوعی رو بتونم Save کنم. مثلا Keys! میخوام دکمه ای که کاربر تنظیم کرده اونو Load کنم

syntiberium
شنبه 19 تیر 1389, 15:46 عصر
خوب شما می تونید عدد ها رو به صورت string ذخیره کنید بعد برای تبدیل کردن اعدادی که به صورت string هستند از int.Parse استفاده کنید .
البته xml برای ذخیره ی مشخصات در حد کم مشکلی نداره اما وقتی شما بخواهید تمامی متغیر هایی را که به صورت global تعریف کردید ( چون متغیر های محلی نیازی به ذخیره شدن ندارند ) را ذخیره کنید xml اصلا روش مناسبی نیست چون به شدت حجمش می ره بالا . پس شما یک راه دارید که خیلی از بازی نویس ها ازش استفاده می کنند و اون هم نوشتن و خواندن فایل به صورت باینری هست یعنی از File.ReadAllBytes و File.WriteAllBytes استفاده کنید چون اینجوری هم حجمش میاد پایین و هم سرعت load شدنش می ره بالا .

syntiberium
شنبه 19 تیر 1389, 16:37 عصر
در این مورد یکمی جستجو کنی به نتایج بهتری می رسی ولی من یه نمونه واست می زارم:
اول using System.IO; را اضافه کن بعد :
یه متغیر آرایه از نوع بایت ایجاد کن :
byte[] a;
برای خواندن اطلاعات :
a = File.ReadAllBytes(FileName);
برای نوشتن :
File.WriteAllBytes(FileName, a);

به تعداد بایت های اون فایل توی متغیر a خانه های آرایه ایجاد می شه و شما می توانید در برنامه تان از بایت هایی که خوانده اید برای load کردن اطلاعات استفاده کنید .

البته این کاری که من پیشنهاد کردم یه مشکلی که داره اینه که شما باید از اول توی فایلی که می سازید قوانین تعریف کنید یعنی کلید هایی را با بایت ها ایجاد کنید که بتوانید اطلاعات را بر اساس آنها بنویسید و بخوانید که خوب اصلا کار آسونی نیست ولی خوب بازی حرفه ای نوشتن هم کار آسونی نیست به هر حال بیشتر جستو جو کنید شاید همون xml هم به دردتون خورد

sinashahab
شنبه 19 تیر 1389, 17:44 عصر
یکی از بهترین راه ها اینه که برای هر اکشن یک شماره ی خط در نظر بگیری . مثلا :

لگد زدن : خط یک
مشت زدن : خط دو
...

بعدش باید توی یک فایل که آپشن رو ذخیره می کنه این شکلی بنویسی :


t
s

بعدش همه ی اینا رو هنگام لود شدن بازی بازگردانی کن . یهنی بگو حرف خط اول لگد بزن .
یعنی میشه وقتی t رو فشار می دهید اون اکشن اجرا بشه .

hossein_ignore
یک شنبه 20 تیر 1389, 00:02 صبح
یکی از بهترین راه ها اینه که برای هر اکشن یک شماره ی خط در نظر بگیری . مثلا :

لگد زدن : خط یک
مشت زدن : خط دو
...

بعدش باید توی یک فایل که آپشن رو ذخیره می کنه این شکلی بنویسی :



بعدش همه ی اینا رو هنگام لود شدن بازی بازگردانی کن . یهنی بگو حرف خط اول لگد بزن .
یعنی میشه وقتی t رو فشار می دهید اون اکشن اجرا بشه .

فکر نمی کنم این راه خوبی باشه! من خودم قبلا این کارو میکردم، ولی این کار خیلی محدود و کد زیادی می خواد!