Toplu iş dosyalarında bir kontrol noktası sistemi oluşturmanın bir yolu var mı? [çiftleme]

Dec 20 2020

Toplu iş dosyalarında bir kontrol noktası sistemi oluşturmanın bir yolu var mı? Kendime toplu iş öğretiyorum ve metin tabanlı RPG türü bir oyun oluşturuyorum, ancak program kapatılırsa, hiçbir ilerleme kaydedilmeden kodun en başında yeniden başlar. Karmaşık uzun vadeli bir oyun yapmak istiyorum, ancak her seferinde oyunun yeniden başlatılmasıyla uğraşmak istemiyorum. İlerlemeyi kaydetmenin bir yolu var mı, böylece programı yeniden açıp yeniden başlatabilir VEYA kaldığınız yerden önceki tüm seçimler bozulmadan devam edebilirsiniz.

Yanıtlar

1 Magoo Dec 20 2020 at 13:59

Muhtemelen en kolay kaydetme / yeniden yükleme yöntemi şudur:

#Kaydetmek istediğiniz tüm değişkenlerin ilk karakteri olarak kullanılacak bir karakter (örneğin ) ayırın.

yani...

set #points=35
set action=3
set #money=22

Tüm #değişkenleri kaydetmek için şunu kullanın:

set #>filename

hangi kurtaracak #moneyve #pointsancakaction

Yeniden yüklemek için kullanın

for /f "delims=" %%a in (filename) do set "%%a"

dosyaya kaydedilen tüm değişkenleri yeniden yükleyecektir - bunlar elbette yalnızca # değişkendir.

T3RR0R Dec 20 2020 at 16:25

Magoo'nun çok verimli bir kaydetme / yükleme yöntemiyle ilgili cevabına ek olarak (küçük bir değişiklikle): kullanıcı profillerini komut dosyası oluşturma şu şekilde yapılabilir:

@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