PDA

View Full Version : سوال: اضافه کردن امکان Undo به برنامه



فاطمه_14
شنبه 14 اسفند 1389, 16:10 عصر
سلام
من بازی پاسور که در سیستم هست را
در دلفی شبیه سازی کردم
چون می خواستم از یک الگوریتمی استفاده کنم که هم از نظر پیچیدگی زمانی مناسب باشه و هم قابل فهم تر.
گفتم برای نوشتن undo کمی کمکم کنید
من فقط می خوام اگه اشکال نداره الگوریتمی به زبان خودمون برای نوشتن undo شرح بدید.
ممنون از راهنماییتون.:قلب::قلب::قلب:

Felony
شنبه 14 اسفند 1389, 22:01 عصر
وقتی ما نمیدونیم چه طور بازی رو نشوتید چه پیشنهادی بدیم ؟

روش کلی اینکه یک پشته در نظر بگیرید ، هر عملیات که انجام میشه در پشته ذخیره میشه و برای عملیات Undo از پشته خونده میشه ، به همین سادگی !

فاطمه_14
دوشنبه 16 اسفند 1389, 12:39 عصر
آیا منظور از پشته همون تابع بازگشتیه؟

hossein_h62
دوشنبه 16 اسفند 1389, 13:25 عصر
منظور جناب تاجیک Stack هست!

BORHAN TEC
دوشنبه 16 اسفند 1389, 14:45 عصر
اگر می خواهید که قابلیت undo خیلی پیشرفته باشد، شما مجبورید با همان روشهایی که دوستان گفتند آنرا ایجاد کنید. توجه داشته باشید که بعضی از کنترلها مانند memo به صورت ذاتی می توانند قابلیت undo را داشته باشند. برای درک بیشتر این موضوع کد زیر را بررسی کنید:
procedure TForm1.Button2Click(Sender: TObject);
begin
SendMessage(Memo1.Handle, WM_UNDO, 0, 0);
end;

mehdi.mousavi
دوشنبه 16 اسفند 1389, 15:08 عصر
سلام.
در حقیقت، اینجا باید از Command Pattern ها استفاده بشه، به این ترتیب که هر عملی که توسط User انجام میشه،
باید در یک دستور Encapsulate بشه. هر Command یک متود Undo باید داشته باشه، و Stack ای از Command ها باید بر اساس
تعامل کاربر با برنامه، ایجاد بشه. سپس، هر وقت کاربر Undo کرد، آخرین Command از Stack باید Pop بشه، و متود Undo ی اون Call بشه.
اینطوری منطق Undo نمودن هر Action ای در Command مورد نظر خودش برنامه ریزی خواهد شد.

موفق باشید.