Apakah ada cara untuk membuat sistem pos pemeriksaan di file batch? [duplikat]

Dec 20 2020

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

1 Magoo Dec 20 2020 at 13:59

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 #moneydan #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.

T3RR0R Dec 20 2020 at 16:25

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