Ich mache ein RPG-Spiel und bekam dieses Kartensystem, wo Sie ein Reiseziel auswählen, und Sie bewegen eine Kachel näher an es pro Zug.Batch ersetzen einzelnes Zeichen in der Zeile
Ich frage mich, wie ich auf meiner Karte anzeigen kann, wo der Spieler ist. genauer gesagt habe ich zwei Variablen; posX
und posY
. und möchte das Zeichen in Zeile posY
, Zeichen posX
durch ein neues Zeichen ersetzen, das den Player darstellt.
Ich habe versucht mit variable:~int,int
eine Zeile zu bearbeiten, aber die Zeilen haben unterschiedliche Längen, so dass nicht funktioniert.
EDIT: Dies ist der Code, an dem ich unten gearbeitet habe, die IF !vertical!==!downY!
ist nie wahr, ich denke, die pause
Anrufe sind zum Testen.
:DisplayPlayerPos
set /a vertical=27
set /a horizontal=69
set /a downY=%vertical%-%posY%
FOR /F "tokens=*" %%L IN (SaveGames\Default\World\Color\WorldMap.txt) DO (
set /a vertical=!vertical!-1
IF !vertical!==!downY! (
set left=%%L:~-!%horizontal%-%posX%!
echo !left!
set right=%%L:~!posX! + 1
echo !right!
set newLine=!%left%X%right%!
echo. !newLine!
pause
Exit /b
)
)
pause
Exit /b
Die map.txt:
echo.+---------------------------------------------------------------------+ =========// Travel Map //=========
echo.| 8obo.8:.,-!!::;.::P"-8:,.-P':_,./=,.oodoo-** | World: !worldName!
echo.|-+-----+;-+.+++++-+./-::\8-;-8P::P8bP/' | Region: Far West
echo.|,8-+---++++-++++++//`=/---_,`:8b8\Y::8.... SENTO |
echo.|++-;-'8:`--;`-+++-=:-' `+.::\_/\--' X | !travelTarget! Position: !travelX!,!travelY!;
echo.|<[/--"--"-::'''+''= GWEN +`+-U' | Your position: !posX!,!posY!;
echo.|,// `'"+=/Y=--'+\ FOREST |:/'| |
echo.|`8b. ' '|8P\L|,`. /|/ :b |
echo.||\'b \\\++'+++-,+'+'---/ |
echo.|XX8' ``:-.--+/-._.+-_,\ |
echo.| "' /'-+-.``-8+-:dop. |
echo.| '-'++--+-: |
echo.| `-\:"\\'-P>_ |
echo.| Y"\=="' ,-. |
echo.| X THORM / `. _.-|
echo.| ,--. /+-. `---''---|
echo.| ,-' `-------'/ `-+ -`---'|
echo.| ,-' ,. LOGAN _-' `----. |
echo.| ,' ,-' ; RIVER ,-'' `|
echo.| ,--' ,' ; ,---' |
echo.| ,-' ,' ; / |
echo.| -/ +---' ,' ,' |
echo.| / `-------' ,' |
echo.| ,' ,----------' X |
echo.| ,' +-' BENDANIA |
echo.| /,' |
echo.| | ,/ |
echo.| ; /; |
echo.+---------------------------------------------------------------------+
Und dieser Ausschnitt der Karte drucken:
:PrintColorFile
set ColorEx=
if /i "%Colors%"=="True" set ColorEx=C
for /F "tokens=*" %%A in (SaveGames\%saveName%\World\Color\%1%ColorEx%.txt) do %%A
Exit /b
Irgendein Grund, den du dieses Spiel als eine Stapeldatei schreibst? Das Auswählen von fast jeder anderen Sprache, die dir einfällt, würde es einfacher machen. –
Ich persönlich denke, es ist ein guter Weg, um die Sprache zu lernen, ich denke auch, dass es cool ist. Warum? –
Ich habe nur darauf hingewiesen, dass das, was du machst, ungewöhnlich ist und wahrscheinlich frustrierend wird, wenn du gegen die Syntax kämpfst ...Es gibt Gründe, warum die meisten textbasierten Spiele nicht als Batch-Skripte geschrieben werden. Aber als Lernübung ist es wahrscheinlich ideal. –