Apakah ada cara untuk membuat sistem pos pemeriksaan di file batch? [duplikat]
Apakah ada cara untuk membuat sistem pos pemeriksaan di file batch? Saya belajar sendiri batch, dan membuat game tipe RPG berbasis teks, tetapi jika program ditutup, itu dimulai kembali di awal kode, tanpa kemajuan yang disimpan. Saya ingin membuat game jangka panjang yang kompleks, tetapi saya tidak ingin harus berurusan dengan game yang dimulai ulang setiap saat. Adakah cara untuk menyimpan kemajuan sehingga Anda dapat membuka kembali program dan memulai ulang ATAU melanjutkan di mana Anda tinggalkan, dengan semua pilihan sebelumnya masih utuh?
Jawaban
Mungkin cara termudah untuk menyimpan / memuat ulang adalah ini:
Cadangkan karakter (katakanlah, #
) untuk digunakan sebagai karakter pertama dari semua variabel yang ingin Anda rekam.
begitu...
set #points=35
set action=3
set #money=22
Untuk menyimpan semua #
variabel, gunakan
set #>filename
yang akan menghemat #money
dan #points
, tetapi tidakaction
Untuk memuat ulang penggunaan
for /f "delims=" %%a in (filename) do set "%%a"
yang akan memuat ulang semua variabel yang disimpan dalam file - yang, tentu saja, hanya #variabel.
Selain jawaban magoo mengenai metode simpan / muat yang sangat efisien, (dengan sedikit modifikasi): membuat skrip profil pengguna dapat dilakukan seperti ini:
@Echo off
rem /* predefine your key variables prior to this loop */
:name :# load point
Set /P "name=Enter your name: "
If Not "%name%" == "" (
rem /* If character exists; load */
If Exist "%~n0_%name%.bat" (
Call "%~n0_%name%.bat"
rem /* Initialise character save using predefined variables if character new */
) Else ( Call :Save )
rem /* Force Assignment of name variable */
) Else ( Goto name )
===============================================
::: Script body
::: End of Script
Goto :Eof
===============================================
:Save :# function
rem /* variation on magoo's method of saving */
(For /F "Delims=" %%G in ('Set #')Do Echo/Set "%%G")>"%~n0_%name%.bat"
Exit /B 0