PDA

View Full Version : مشکل در ذخیره و باز کردن به صورت exe



kyrie-chan
دوشنبه 07 فروردین 1391, 12:32 عصر
سلام . سال نو مبارک .
در حال نوشتن بازیه snake هستم ، برای قسمت save و open کردن بازی دچار مشکل شدم ... من می خوام بازی با پسوند exe ذخیره بشه و موقع باز خونی دوباره بازی از ادامه بیاد ... میتونین بهم کمک کنین

فرید نجفلو
دوشنبه 07 فروردین 1391, 15:44 عصر
دوست اون چیزی که شما می گید در اصل درست نیست و چیزیه شبیه Dumping که برنامت رو از رم بخونی ، ذخیره کنی و دوباره همون رو تو رم بنویسی!

در واقع شما باید کل متغیر های دخیل در بازی(مثل امتیاز، مرحله ، سرعت جهت حرکت و ...) همچنین نوع ، مکان ، اندازه و ... تمام کنترل های بازی(اعم از سر مار ، دم مار ، تنه مار ، بمب ها ، خوراکی ها و ...) رو در جایی مثل Settings برنامه یا یک فایل دیگه ذخیره کنی و دوباره اونها رو بار گذاری کنی!

البته درسته تو نگاه اول سخت به نظر میرسه ولی اگه صاولی کار کنی ، هم کارت خوب از آب در می یاد و هم راحتر کار می کنی

مثلا برای ذخیره کنترل ها می تونی Me.Controls رو بایه حلقه چرخ بزنی و کنترل های لازم را تشخیص و با کمترین کد ذخیره کنی!

koorosh-soft
سه شنبه 08 فروردین 1391, 01:07 صبح
البته در ادامه صحبت دوستمون لازمه بگم اگر تو Setting برنامه Save کنی با تغییر مسیر برنامه داده ها پاک میشن

kyrie-chan
سه شنبه 08 فروردین 1391, 11:02 صبح
خیلی ممنون ، یعنی زمانی که سیو دیالوگ باز میشه ، تعریف کنیم که تمام این چیزا ذخیره شه ، اونوقت به صورت txtذخیره میشه ؟

Hybrid
سه شنبه 08 فروردین 1391, 11:20 صبح
خیلی ممنون ، یعنی زمانی که سیو دیالوگ باز میشه ، تعریف کنیم که تمام این چیزا ذخیره شه ، اونوقت به صورت txtذخیره میشه ؟

سلام ، باید اول مشخص کنی که قصد داری اطلاعات مربوط به بازی رو داخل کدوم منبع داده ذخیره کنی ، اگه Setting باشه خوب نیازی نیست SFD رو نمایش بدی ، اما اگه میخوای اطلاعات رو داخل یک فایل تکست ذخیره کنی sfd رو نمایش میدی و اطلاعات مربوط به بازی رو داخل فایل .txt مینویسی.

kyrie-chan
سه شنبه 08 فروردین 1391, 15:25 عصر
خیلی ممنان

hakim22
چهارشنبه 09 فروردین 1391, 02:39 صبح
بله دوست عزیز
شما باید با استفاده از یک کلاس برای تنظیمات و قابلیت Serialization همه ی پارامترهای بازی رو در یک فایل ذخیره کنی و هربار که دوباره باز میشه و دکمه ادامه زده میشه بقیش بازی بشه

لطفا بعد از پایان کار بدهید ما هم باهاش بازی کنیم روحمون شاد بشه !

kyrie-chan
چهارشنبه 09 فروردین 1391, 18:46 عصر
ایشالا اگه تموم شده ، زیاد کار جالبی نیست ، به هر حال اولین برنامه بازیه که دارم مینویسم و اصلا هم در کار با VB حرفه ای نیستم ....


پس من تو این قطعه کد ها اضافه کنم که تمام اطلاعات ذخیره و بازیابی بشه ...


Private

Sub SaveToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem2.Click


Dim FileSave As New SaveFileDialog


Dim txtBrowse As New TextBox

FileSave.Filter =
"Text File (*.txt)|*.txt"

FileSave.InitialDirectory =
True

FileSave.FileName =
"Snake_1"

FileSave.CheckPathExists =
True

FileSave.OverwritePrompt =
True


If FileSave.ShowDialog = Windows.Forms.DialogResult.OK Then

txtBrowse.Text = FileSave.FileName

FileSave.Dispose()


End If

m_running =
True

Timer1.Enabled =
True

tm.Enabled =
True


End Sub


Private Sub OpenToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem2.Click


Dim FileOpen As New OpenFileDialog


Dim txtBrowse As New TextBox

FileOpen.Filter =
"Text File (*.txt)|*.txt"

FileOpen.InitialDirectory =
True

FileOpen.CheckPathExists =
True


If FileOpen.ShowDialog = Windows.Forms.DialogResult.OK Then

txtBrowse.Text = FileOpen.FileName

FileOpen.Dispose()


End If

m_running =
True

Timer1.Enabled =
True

tm.Enabled =
True


End Sub

hakim22
چهارشنبه 09 فروردین 1391, 23:16 عصر
به این صورت هستش :

من یک پروژه داشتم که فایلهای مخصوص به خودش رو ذخیره می کردو میتونست دوباره باز کنه ، و راهی ازش استفاده کردم (چون نرم افزارم هم دیتابیسی بود) استفاده از یک فایل Access بود
به این شکل که هر پارامتر یک ستون تعریف شد و بعد با استفاده از یک خط فرمان ذخیره به صورت XML انجام میشد


Dim mydb As New Database1DataSet
mydb.WriteXml()


اما راه درستش اینه که یک کلاس از همه ی خصوصیاتی که قصد ذخیره کردنش رو داری بسازی ولی Attribute مربوط به Serializeable رو بهش اضافه کنی
بعد با فرمتر ذخیره کنی


<Serializable()> Class mySerClass
Public adminName As String

End Class

Sub SaveTanzimat()
Dim formatter As New Runtime.Serialization.Formatters.Binary.BinaryForm atter
Dim saveFile As IO.FileStream
saveFile = IO.File.Create("c:\tanzimat.xml")
Dim newSer As New mySerClass

formatter.Serialize(saveFile, newSer)
saveFile.Close()
End Sub

kyrie-chan
پنج شنبه 10 فروردین 1391, 16:35 عصر
هـــــوم مرسی ، اما من کار با کلاسا رو بلد نیستم .... بعد طبق اینی که شما نوشتی تو یه مسیر فقط سیو میکنه نه ؟

kyrie-chan
سه شنبه 15 فروردین 1391, 21:49 عصر
نمیشه ذخیره تک به تک نداشته باشیم .

hakim22
چهارشنبه 16 فروردین 1391, 15:16 عصر
بجای کلاس می تونی به صورت متغیر مورد به مورد مقادیر رو توی یک فایل ذخیره کنی ،
ولی دردسرش خوندن و نوشتن فایل زیاد میشه !
هرکه طوطی خواهد جور هندوستان کشد !