Batch-Programmierung: Erstellen eines Spieles in Batch

Aus Wikibooks

Spiele in Batch - geht das überhaupt? Ja klar, hier findest du die Anleitung vom ersten Spiel bis zum Multiplayergame.

Hinweis: Für dieses Tutorial ist es von Vorteil wenn ihr euch schon ein bisschen mit Batch auskennt. 2.Hinweis: Ich will nur nochmal darauf hinweisen, dass alle Quellcodes den Creative Commons unterliegen und nur mit Namensnennung übernommen werden dürfen.

Das Erste Spiel Ein Quiz[Bearbeiten]

Bevor wir zur grafischen Oberfläche kommen ist es zunächst wichtig die Grundbegriffe der Spielentwicklung in Batch kennen zulernen. Um die Kontrolle und Struktur zu behalten ist es von Vorteil sich eine Ordner-Struktur für die einzelnen Batchspiele zu entwickeln und nicht alle Dateien auf dem Desktop liegen zu lassen.

Ordnerstruktur

Menü.bat[Bearbeiten]

Nach dem Anlegen der Ordner können wir nun mit der Programmierung des Spiels beginnen. Als erstes erstellen wir eine Batchdatei mit dem Namen "Menü.bat", in welcher wir als erstes schreiben:

@echo off 
Title Mein BatchQuiz 
::Legt den Namen des CMD Fensters fest 
color 02
::legt die Hintergrundfarbe fest
:Menu 
::Sprungmarke menu kann später mit goto angesprungen werden
cls 
::Leert den Inhalt der CMD
@echo.
@echo (1)Spiel starten 
::Ausgebe des Textes auf dem Bildschirm
@echo (2)Spiel beenden
@echo.
choice /C 12 /N 
::Fragt die Tastertureingabe ab legt den Errorlevel fest (1234...)
if %errorlevel%==1 goto start 
::fragt den Errorlevel ab und geht zur entsprechenden Sprungmarke
if %errorlevel%==2 goto end
:start
call Quiz.bat 
::Startet die Quiz.bat im gleichen Fenster.
:end
exit 
::Beendet das Programm

Quiz.bat[Bearbeiten]

Im zweiten Schritt erstellen wir eine Datei Namens "Quiz.bat" und speichern sie im gleichen Ordner wie die "Menü.bat". In diese Datei kommt dann folgender Quellcode:

::Nein kein @echo off da wir dieses Script ja mit dem anderen Aufrufen (d.h. Das alle Eigenschaften übernommen werden)
cls 
::Erneutes leeren der Eingabeaufforderung
cd Quizfragen 
::springt zu dem Verzeichnis Quizfragen Dieses muss im Ordner Quiz erstellt werden.
set frage=0 
::definiert die Variable "frage" als 0
set coins=0 
::definiert die Coins(Punkte) des Benutzers
:Quiz
cls
set /A frage=%frage%+1 
::Setzt die Variable "frage" auf die Vorherige Variable "Frage" +1
if not exist antwort%frage%.data goto End
::Fragt ab ob die Quizdatei existiert wenn nicht geht das Programm zur Sprungmarke End
set zeile=0 
set "richtigeantwort="
for /f "delims=" %%f in ('more/e +%zeile% ^< antwort%frage%.data') do (if not defined richtigeantwort set "richtigeantwort=%%f") 
::Puh also dieser Befehl liest die erste Zeile der Datei antwort%frage%.data (%frage% ist die Variable die wir vorhin definiert haben) aus und schreibt sie in die Variable "richtigeantwort".

@echo %frage%. Frage 
::gibt die Variable "frage" aus und dahinter den Text . Frage 
type %frage%frage.data 
::zeigt den gesamten Text der Datei "frage"frage.data
@echo.

choice /C 123 /N 
::Fragt ab ob der User 1 2 oder 3 gedrückt hat.
if %errorlevel%==%richtigeantwort% goto richtig 
::Wenn der Benutzer die Taste gedrückt hat welche in der Variable "richtigeantwort" gespeichert war springt das Programm zur Sprungmarke richtig.
goto falsch 
::Ansonsten springt er zur Sprungmarke falsch

:richtig
cls
set /a coins=%coins%+1 
::siehe oben
@echo Das war die richtige Antwort du hast nun schon %coins% Punkt/e.
Pause 
::wartet bis der Spieler eine Taste gedrückt hat
goto Quiz 
::geht wieder zur Sprungmarke Quiz

:falsch
@echo Das war leider die Falsche Antwort :( versuche es erneut. 
::Hier kann man alternativ einbauen: set /A frage=%frage%-1 damit der Spieler die Frage solange wiederholt bis sie richtig ist.
goto Quiz 
::geht wieder zur Sprungmarke Quiz

:End
@echo Danke fuers Spielen du hast insgesamt %coins% Punkt/e gesammelt.
Pause
exit

frage.data[Bearbeiten]

Als nächstes erstellen wir im Verzeichnis Quiz einen neuen Ordner mit dem Namen "Quizfragen". In diesem Ordner legen wir eine neue Datei an mit dem Namen "1frage.data" und schreiben in diese Datei Folgendes:

        Wie viele Menschen Leben in Deutschland?
1.ca 80 Millionen
2.ca 70 Millionen
3.ca 50 Millionen

Jede weitere Frage mit Antworten (3 Möglichkeiten) schreibt ihr in weitere Dateien ("2frage.data" ; "3frage.data" ; "4frage.data" ...) usw .

antwort1.data[Bearbeiten]

Zum Schluss erstellen wir eine Datei mit dem Namen "antwort1.data" wieder in dem Ordner "Quizfragen" und schreiben in diese:

1

Die "1" ist die richtige Antwort, also bei jeder Frage immer die Zahl der richtigen Antwort. Hier wäre es "ca 80 Millionen". Für jede frage.data Datei brauchst du dementsprechend auch immer eine antwort.data Datei ("antwort2.data" ; "antwort3.data" ; "antwort4.data" ...).

Nun haben wir nach mühevoller Arbeit ein fertiges Quiz Programm erstellt, das unbegrenzt viele Fragen stellen kann, simpel aufgebaut und leicht bedienbar ist. Das Programm ist ein schöner Zeitvertreib in der Arbeitspause.

Quiz

Die grafische Oberfläche[Bearbeiten]

Was, du hast immer noch nicht genug?? Gut, dann mach dich bereit für Die Grafische Oberfläche.

Für ein gutes Spiel ist eine grafische Oberfläche natürlich ein wichtiger Bestandteil. Und auch in Batch kann man eine grafische Oberfläche Ohne Zusatztools/scripte erschaffen.

Der Aufbau[Bearbeiten]

Jedes Spiel in Batch benötigt eigentlich eine Eigene Grafik. Wichtig hierbei ist vor allem das diese so veränderbar ist, dass sich der Spieler bewegen kann. Um das zu realisieren, gibt es mehrere Möglichkeiten.


Jede Bewegung einzeln (Intern)[Bearbeiten]

Die erste Möglichkeit wäre jede Bewegung eines Spielers einzeln auf den Hintergrund zu bringen. Dies sähe dann im Code ungefähr so aus.

:x1
@echo X####
:x2
@echo #X###
:x3
@echo ##X##
:x4
@echo ###X#
:x5
@echo ####X

Wie man sieht ist dies, vor allen bei größeren Spielfeldern keine gute Möglichkeit und der Quelltext wird hunderte Zeilen lang. Trotzdem wird dieses System gerne von vielen Batch-Spielentwicklern verwendet.

Jede Bewegung einzeln (Extern)[Bearbeiten]

Eine zweite, eher seltener Verwendeter, aber meiner Meinung bessere Methode ist, alle Bewegungen extern zu speichern und dann mit dem Script abzurufen.


set game=0
cd world
:x1
set /A game=%game%+1
type scene%game%.data
goto x1

In dieser Version werden die einzelnen Bewegungen in externen Dateien in einem Extra Ordner gespeichert. Die Dateien werden mit scene1 ; scene2 ; scene3... usw benannt. Wie man sieht wird der Quellcode schon wesentlich kürzer, trotzdem ist immer noch der Nachteil, dass man jede Bewegung extra aufzeichnen muss Nur eben in einer Externen Datei.

Bei beiden Methoden ist außerdem ein Nachteil, dass die Welten nicht wirklich während des Spielablaufs geändert werden können sondern eben immer jede Szene neu geschrieben werden muss.

Die Welt aus Variablen[Bearbeiten]

Dies ist die von mir ersonnene und demzufolge auch die meiner Meinung nach beste Methode. Sie ist zwar nicht für jede Art von Spielen geeignet für die meisten aber schon.

Das System hierbei ist die "Welt" aus veränderbaren Variablen zu erzeugen, was ihr hier im Beispiel sehen könnt:

:b
set b%buildx%=[]
set /a buildx=%buildx%+1
if %buildx%==201 goto game1
goto b

:game1 
cls
@echo.
@echo  %b1%%b2%%b3%%b4%%b5%%b6%%b7%%b8%%b9%%b10%%b11%%b12%%b13%%b14%%b15%%b16%%b17%%b18%%b19%%b20%
@echo  %b21%%b22%%b23%%b24%%b25%%b26%%b27%%b28%%b29%%b30%%b31%%b32%%b33%%b34%%b35%%b36%%b37%%b38%%b39%%b40%
@echo  %b41%%b42%%b43%%b44%%b45%%b46%%b47%%b48%%b49%%b50%%b51%%b52%%b53%%b54%%b55%%b56%%b57%%b58%%b59%%b60%
@echo  %b61%%b62%%b63%%b64%%b65%%b66%%b67%%b68%%b69%%b70%%b71%%b72%%b73%%b74%%b75%%b76%%b77%%b78%%b79%%b80%
@echo  %b81%%b82%%b83%%b84%%b85%%b86%%b87%%b88%%b89%%b90%%b91%%b92%%b93%%b94%%b95%%b96%%b97%%b98%%b99%%b100%
@echo  %b101%%b102%%b103%%b104%%b105%%b106%%b107%%b108%%b109%%b110%%b111%%b112%%b113%%b114%%b115%%b116%%b117%%b118%%b119%%b120%
@echo  %b121%%b122%%b123%%b124%%b125%%b126%%b127%%b128%%b129%%b130%%b131%%b132%%b133%%b134%%b135%%b136%%b137%%b138%%b139%%b140%
@echo  %b141%%b142%%b143%%b144%%b145%%b146%%b147%%b148%%b149%%b150%%b151%%b152%%b153%%b154%%b155%%b156%%b157%%b158%%b159%%b160%
@echo  %b161%%b162%%b163%%b164%%b165%%b166%%b167%%b168%%b169%%b170%%b171%%b172%%b173%%b174%%b175%%b176%%b177%%b178%%b179%%b180%
@echo  %b181%%b182%%b183%%b184%%b185%%b186%%b187%%b188%%b189%%b190%%b191%%b192%%b193%%b194%%b195%%b196%%b197%%b198%%b199%%b200%
@echo.

Wie ihr sehen könnt, werden hier 200 veränderbare Variablen generiert, welche unten einfach ausgegeben werden. Die Spielerpositionen können aus einer externen Datei ausgelesen und die dementsprechenden Variablen verändert werden, wie man in diesem Beispiel sehen kann:

:var
set b%pos%=[]
set b%pos%=[]
set zeile=0
set "pos="
for /f "delims=" %%f in ('more/e +%zeile% ^< player1.data') do (
if not defined pos set "pos=%%f")
set b%pos%=X1

Die Spielerposition wird aus einer externen Datei ausgelesen und gesetzt. Was wiederum den Vorteil hat, dass man damit z.B. LAN- oder Online-Spiele entwickeln kann.

Grafik in einem Batchspiel

Verwendungsmöglichkeiten[Bearbeiten]

"Toll und was mach ich jetzt mit der Oberfläche??" So oder ähnlich werden sicherlich manche von euch denken. Deswegen hier die Oberfläche mit ein paar Möglichkeiten aufgelistet:

Beispiele:
Intern/Extern "Hütchen Spiel" ; Textadvanture...
Mit Variablen "Terraria in Batch" ; "Worms" ; Multiplayer Games ; Splitscreen Games...

Achtung! Das sind alles Beispiele die nicht unbedingt existieren müssen.


Das Spiel mit der grafischen Oberfläche : Batchminer[Bearbeiten]

Um die grafische Oberfläche noch einmal zu verdeutlichen werden wir jetzt zusammen ein weiteres Spiel namens "Batchminer" entwickeln. Dieses Spiel wird eine ziemlich hartes Stück Arbeit also eine Tasse Kaffee am Start und los geht's.

Das Spielprinzip[Bearbeiten]

Wenn ihr ein gutes Spiel entwickeln wollt, braucht ihr als erstes ein gutes Spielprinzip. In diesem Tutorial geb ich euch das Spielprinzip erst mal vor. Das Spiel soll eine Art "Terraria" werden. Man hat eine Figur mit der man sich frei in der Welt bewegen und Blöcke setzen kann. Ähnlich wie in Minecraft, nur eben in 2D.

Der Beginn[Bearbeiten]

Heute beginnen wir natürlich viel strukturierter und legen als erstes, wie sollte es anders sein, die Ordnerstruktur an. Für dieses Spiel legen wir 3 Ordner an. Als erstes einen Ordner "Batchminer", darin ein Ordner "Einstellungen" und ein Ordner "Saves". Zielstellung: Unsere Zielstellung ist es für dieses Spiel eine grafische Benutzeroberfläche zu schaffen, die man verändern kann.

OrdnerStruktur

Das Hauptmenü[Bearbeiten]

Hinweiß! Dieses Hauptmenü ist auch in anderen Spielen nutzbar. Die erste Datei die wir nun erstellen ist das Hauptmenü. Dieses nennen wir Menü.bat In diese Datei schreiben wir:

@echo off
Title Batchminers
:start
cls
@echo (1) Einloggen
@echo.
@echo (2) Registrieren
@echo.
choice /C 12 /N 
cls
if %errorlevel%==1 goto login
if %errorlevel%==2 goto register
if %errorlevel%==255 goto start
::der errorlevel 255 wird festgelegt wenn der Spieler eine nicht definierte Taste festgelegt hat.

:login
cls
set /P Name=Name:
::fragt den Benutzer nach dem Namen.
cls
set /P Pw=Passwort:
::fragt den Benutzer nach dem dazugehörigem Passwort.
cd Einstellungen
set zeile=0
set "pw1="
for /f "delims=" %%f in ('more/e +%zeile% ^< %Name%.data') do (
if not defined pw1 set "pw1=%%f")
::ruft das Passwort aus der Spielerdatei auf.
if %pw%==%pw1% goto load
::wenn das Passwort richtig ist springt der Login zu der sprungmarke load
goto login

:load
cls
set zeile=1
set "color="
for /f "delims=" %%f in ('more/e +%zeile% ^< %Name%.data') do (
if not defined color set "color=%%f")
color %color%
::legt die Hinter/Vordergrundfarbe fest
Title Batchminers ~ %Name%
cd..
goto menu

:register
cd Einstellungen
cls
::ihr werdet merken "cls" ist ein kleiner aber sehr wichtiger Befehl
set /P Name=Gewünschter Benutzername:
set /P pw=Gewünschtes Passwort:
set /P color=Gewünschte Vorder und Hintergrundfarben:
color %color%
color %color%
Title Batchminers ~ %Name%
@echo %pw%>%Name%.data
:: es schreibt oder überschreibt das Passwort in die %Name%.data auf die erste Zeile
@echo %color%>>%Name%.data
::es schreibt die Vorder und Hintergrundfarbe in dasselbe Dokument auf die 2 Zeile
Title Batchminers ~ %Name%
cd..
goto menu

:menu
cls
::wie immer ;D
@echo (1) Neues Spiel
@echo.
@echo (2) Spiel laden
@echo.
@echo (3) Info
@echo.
@echo (4) Spiel beenden

choice /C 1234 /N 
if %errorlevel%==1 goto neu
if %errorlevel%==2 goto laden
if %errorlevel%==3 goto info
if %errorlevel%==4 goto end
::erklärt sich langsam hoffentlich von selbst xD

:neu
set /P gamename=Name des Spielstandes:
call new.bat
::wenn du nicht weißt was der Befehl "call" bedeutet lies dir lieber oben nochmal das Quiz durch.

:laden
set /P gamename=Save Name:
call load.bat
:info
type Gameinfo.data
pause
goto Menu

:end
exit

4. New.bat[Bearbeiten]

Nachdem wir mit dem Hauptmenü fertig sind machen wir nun mit der Datei "new.bat" weiter, welche wir Im Ordner Batchminer erstellen.

cd Saves
::wechselt zum Verzeichnis Saves
set block=1
set newblock=²
@echo.>%gamename%.data
:Blöcke
set b%block%=²
set /a block=%block%+1
@echo %newblock%>>%gamename%.data
if %block%==201 goto end
goto Blöcke
::generiert in einer Schleife "Blöcke"
:end
cd..
cls
call game.bat

Wie ihr seht ist das schon ein Ziemlich kleiner Quellcode trotzdem hat er eine Menge "nicht sichtbaren" Inhalt. In diesem Quellcode werden in einer Schleife 200 Variablen generiert (b1;b1;b3...).

Load.bat[Bearbeiten]

Im nächsten Schritt erstellen wir wieder im Verzeichnis "Batchminers" eine Datei mit dem Namen "Load.bat" und schreiben in sie als Code:

cd Saves
::wechselt wieder Verzeichnis Saves
set block=1
set newblock=²
:loadblöcke
set "newblock="
for /f "delims=" %%f in ('more/e +%block% ^< %gamename%.data') do (
if not defined newblock set "newblock=%%f")
set b%block%=%newblock%
set /a block=%block%+1
if %block%==201 goto end
goto Blöcke
::liest aus der Datei "gamename.data" den Block und setzt ihn als Variable.
:end
cd..
cls
call game.bat

Wie man sehen kann ist das fast der gleiche Quellcode wie der von der "New.bat-Datei", bloß mit dem Unterschied das dieses mal die Variablen aus der schon fertigen "gamesave-Datei" gelesen und gesetzt werden.

Game.bat[Bearbeiten]

Kommen wir nun zu der wichtigsten Datei des gesamten Spieles. Das Spiel selbst.

::Variablen werden definiert
set build=²

set oldpos=0
set pos=1
set b%pos%=X
set newpos=0
::Variable die die Spielerpositionen definiert

:game
cls
cls
@echo.
@echo  %b1%%b2%%b3%%b4%%b5%%b6%%b7%%b8%%b9%%b10%%b11%%b12%%b13%%b14%%b15%%b16%%b17%%b18%%b19%%b20%
@echo  %b21%%b22%%b23%%b24%%b25%%b26%%b27%%b28%%b29%%b30%%b31%%b32%%b33%%b34%%b35%%b36%%b37%%b38%%b39%%b40%
@echo  %b41%%b42%%b43%%b44%%b45%%b46%%b47%%b48%%b49%%b50%%b51%%b52%%b53%%b54%%b55%%b56%%b57%%b58%%b59%%b60%
@echo  %b61%%b62%%b63%%b64%%b65%%b66%%b67%%b68%%b69%%b70%%b71%%b72%%b73%%b74%%b75%%b76%%b77%%b78%%b79%%b80%
@echo  %b81%%b82%%b83%%b84%%b85%%b86%%b87%%b88%%b89%%b90%%b91%%b92%%b93%%b94%%b95%%b96%%b97%%b98%%b99%%b100%
@echo  %b101%%b102%%b103%%b104%%b105%%b106%%b107%%b108%%b109%%b110%%b111%%b112%%b113%%b114%%b115%%b116%%b117%%b118%%b119%%b120%
@echo  %b121%%b122%%b123%%b124%%b125%%b126%%b127%%b128%%b129%%b130%%b131%%b132%%b133%%b134%%b135%%b136%%b137%%b138%%b139%%b140%
@echo  %b141%%b142%%b143%%b144%%b145%%b146%%b147%%b148%%b149%%b150%%b151%%b152%%b153%%b154%%b155%%b156%%b157%%b158%%b159%%b160%
@echo  %b161%%b162%%b163%%b164%%b165%%b166%%b167%%b168%%b169%%b170%%b171%%b172%%b173%%b174%%b175%%b176%%b177%%b178%%b179%%b180%
@echo  %b181%%b182%%b183%%b184%%b185%%b186%%b187%%b188%%b189%%b190%%b191%%b192%%b193%%b194%%b195%%b196%%b197%%b198%%b199%%b200%
@echo.
@echo.
@echo.
set oldpos=%pos%
::Das war ne Harte arbeit ;D

:input
choice /C WASDEFQ /N 
if %errorlevel%==1 goto W
if %errorlevel%==2 goto A
if %errorlevel%==3 goto S
if %errorlevel%==4 goto D
if %errorlevel%==5 goto E
if %errorlevel%==6 goto F
if %errorlevel%==7 goto Q
if %errorlevel%==255 goto game

:W
set /a pos=%pos%-20
goto go
:A
set /a pos=%pos%-1
goto go
:S
set /a pos=%pos%+20
goto go
:D
set /a pos=%pos%+1
goto go
:Q
goto end
:E
goto inv
:F
goto Build

:go
cd Saves
set "block="
for /f "delims=" %%f in ('more/e +%oldpos% ^< %gamename%.data') do (
if not defined block set "block=%%f")
set b%pos%=X
::Ja ich weiß es gibt creativere Spielerzeichen aber mir fällt grad keins ein :~(
set b%oldpos%=%block%
::liest den Block der alten Spielerposition und setzt ihn
set /a newpos=%pos%+1
cd..
goto game

:Build
cd Saves
set blockpos=0
xcopy %gamename%.data %gamename%_old.data
del %gamename%.data
:buildblock
set "cacheblock="
for /f "delims=" %%f in ('more/e +%blockpos% ^< %gamename%_old.data') do (
if not defined cacheblock set "cacheblock=%%f")
if %blockpos%==%newpos% set cacheblock=%build%
@echo %cacheblock%>>%gamename%.data
set /a blockpos=%blockpos%+1
if %blockpos%==201 goto game1
goto buildblock
:game1
set b%newpos%=%build%
cd..
goto game

:inv
cls
@echo.
@echo Dein gewaelter Block: %build%
@echo.
@echo  Baumaterialien:
@echo 1.  %bau1%
@echo 2.  %bau2%
@echo 3.  %bau3%
@echo 4.  %bau4%
@echo 5.  %bau5%
@echo 6.  %bau6%
@echo 7.  %bau7%
@echo 8.  %bau8%
@echo 9.  %bau9%
@echo 10. %bau0%
@echo.
@echo 1:Neu definieren 2:Auswaehlen 3:Verlassen
choice /C 123 /N 
cls
if %errorlevel%==1 goto invnew
if %errorlevel%==2 goto invwahl
if %errorlevel%==3 goto game
if %errorlevel%==255 goto inv
:invnew
@echo Gib die Blocknummer des Blockes ein den du veraendern moechtest(1,2,3,4,5...).
set /P BN=
cls
@echo Gib die neue Blockdefinition ein (wie soll dein Block aussehen).
set /P BD=
set bau%BN%=%BD%
goto inv
:invwahl
@echo Gib die Blocknummer des Blockes ein den du auswaehlen moechtest.
choice /C 1234567890 /N
if %errorlevel%==1 set build=%bau1%
if %errorlevel%==2 set build=%bau2%
if %errorlevel%==3 set build=%bau3%
if %errorlevel%==4 set build=%bau4%
if %errorlevel%==5 set build=%bau5%
if %errorlevel%==6 set build=%bau6%
if %errorlevel%==7 set build=%bau7%
if %errorlevel%==8 set build=%bau8%
if %errorlevel%==9 set build=%bau9%
if %errorlevel%==0 set build=%bau0%
if %errorlevel%==255 goto invwahl
cls
goto inv

:end
call Menü.bat
::Sorry wegen den wenigen Erklärungen

Abschließender Satz: Leider dauert es ziemlich lange bis ein Block gesetzt worden ist, dafür entschuldige ich mich. Ich werde noch an einer schnelleren Lösung arbeiten.

Ein SplitscreenGame[Bearbeiten]

WAS???? Du willst immer noch weitermachen ?? Nagut dann mal auf zum Splitgame Wenn man mit Kumpels zockt dann doch am liebsten über Splitscreen. Die Grundlage um ein Splitscreengame aufzubauen zeige ich euch hier. Um ein Verständliches Beispiel zu schaffen zeige ich euch hier eine simple Oberfläche auf der 2 Spieler herumlaufen können. Da man mit Batch leider keine Controllereingaben überprüfen kann, gehen wir davon aus das beide Spieler mit 1- oder 2-Tastaturen spielen.

1. Los gehts[Bearbeiten]

Als erstes brauchen wir , wie immer eine Ordnerstruktur, welche hier aber nur aus einem Ordner besteht. Diesen nenne ich "Splitgame".

Steuerung.bat[Bearbeiten]

Die Datei "Steuerung.bat" fragt die Tastertureingaben ab.

@echo off
Title Steuerung
set pos=1
set pos1=1
start Splitgame.bat
::startet die Spieldatei
::die Variablen legen die Position der 2 Spieler fest.
:input
cls
@echo.
@echo Steuert mit WASD und IJKL
choice /C WASDIJKL /N 
if %errorlevel%==1 goto W
if %errorlevel%==2 goto A
if %errorlevel%==3 goto S
if %errorlevel%==4 goto D
if %errorlevel%==5 goto I
if %errorlevel%==6 goto J
if %errorlevel%==7 goto K
if %errorlevel%==8 goto L
if %errorlevel%==255 goto Input
::Tastertureingabe wird abgefragt gesteuert wird mit WASD und IJKL
:W
set /a pos=%pos%-20
if %pos% LSS 1 goto S
goto go
:A
set /a pos=%pos%-1
if %pos% LSS 1 goto D
goto go
:S
set /a pos=%pos%+20
if %pos% GTR 200 goto W
goto go
:D
set /a pos=%pos%+1
if %pos% GTR 200 goto A
goto go
:I
set /a pos1=%pos1%-20
if %pos1% LSS 1 goto K
goto go1
:J
set /a pos1=%pos1%-1
if %pos1% LSS 1 goto L
goto go1
:K
set /a pos1=%pos1%+20
if %pos1% GTR 200 goto I
goto go1
:L
set /a pos1=%pos1%+1
if %pos1% GTR 200 goto J
goto go1
::Je nach Tastendruck werden die Positionen Definiert
:go
(
@echo %pos%
)>player1.data
goto input
:go1
(
@echo %pos1%
)>player2.data
goto input
::Die Positionen werden einfach in 2 Spielerdateien geschrieben

Selbsterklärend .)

Splitgame.bat[Bearbeiten]

die Splitgame.bat ist Nur für die Anzeige des Spielfeldes Zuständig und wird automatisch gestartet.

@echo off
Title Splitgame
cls
set buildx=1
:b
set b%buildx%=[]
set /a buildx=%buildx%+1
if %buildx%==201 goto bp
goto b
:bp
set buildx=1
:bp1
set bp%buildx%=[]
set /a buildx=%buildx%+1
if %buildx%==201 goto var
goto bp1
::alle Variablen werden generiert. (siehe Abschnitt Batchminer)
:var
set b%pos%=[]
set bp%pos1%=[]
set zeile=0
set "pos="
for /f "delims=" %%f in ('more/e +%zeile% ^< player1.data') do (
if not defined pos set "pos=%%f")
set zeile1=0
set "pos1="
for /f "delims=" %%f in ('more/e +%zeile1% ^< player2.data') do (
if not defined pos1 set "pos1=%%f")
set b%pos%=XX
set bp%pos1%=XX
::Die Variablen der Spielerpositionen werden gesetzt.
:game1 
cls
@echo.
@echo  %b1%%b2%%b3%%b4%%b5%%b6%%b7%%b8%%b9%%b10%%b11%%b12%%b13%%b14%%b15%%b16%%b17%%b18%%b19%%b20%
@echo  %b21%%b22%%b23%%b24%%b25%%b26%%b27%%b28%%b29%%b30%%b31%%b32%%b33%%b34%%b35%%b36%%b37%%b38%%b39%%b40%
@echo  %b41%%b42%%b43%%b44%%b45%%b46%%b47%%b48%%b49%%b50%%b51%%b52%%b53%%b54%%b55%%b56%%b57%%b58%%b59%%b60%
@echo  %b61%%b62%%b63%%b64%%b65%%b66%%b67%%b68%%b69%%b70%%b71%%b72%%b73%%b74%%b75%%b76%%b77%%b78%%b79%%b80%
@echo  %b81%%b82%%b83%%b84%%b85%%b86%%b87%%b88%%b89%%b90%%b91%%b92%%b93%%b94%%b95%%b96%%b97%%b98%%b99%%b100%
@echo  %b101%%b102%%b103%%b104%%b105%%b106%%b107%%b108%%b109%%b110%%b111%%b112%%b113%%b114%%b115%%b116%%b117%%b118%%b119%%b120%
@echo  %b121%%b122%%b123%%b124%%b125%%b126%%b127%%b128%%b129%%b130%%b131%%b132%%b133%%b134%%b135%%b136%%b137%%b138%%b139%%b140%
@echo  %b141%%b142%%b143%%b144%%b145%%b146%%b147%%b148%%b149%%b150%%b151%%b152%%b153%%b154%%b155%%b156%%b157%%b158%%b159%%b160%
@echo  %b161%%b162%%b163%%b164%%b165%%b166%%b167%%b168%%b169%%b170%%b171%%b172%%b173%%b174%%b175%%b176%%b177%%b178%%b179%%b180%
@echo  %b181%%b182%%b183%%b184%%b185%%b186%%b187%%b188%%b189%%b190%%b191%%b192%%b193%%b194%%b195%%b196%%b197%%b198%%b199%%b200%
@echo.
@echo  ########################################################
@echo.
@echo  %bp1%%bp2%%bp3%%bp4%%bp5%%bp6%%bp7%%bp8%%bp9%%bp10%%bp11%%bp12%%bp13%%bp14%%bp15%%bp16%%bp17%%bp18%%bp19%%bp20%
@echo  %bp21%%bp22%%bp23%%bp24%%bp25%%bp26%%bp27%%bp28%%bp29%%bp30%%bp31%%bp32%%bp33%%bp34%%bp35%%bp36%%bp37%%bp38%%bp39%%bp40%
@echo  %bp41%%bp42%%bp43%%bp44%%bp45%%bp46%%bp47%%bp48%%bp49%%bp50%%bp51%%bp52%%bp53%%bp54%%bp55%%bp56%%bp57%%bp58%%bp59%%bp60%
@echo  %bp61%%bp62%%bp63%%bp64%%bp65%%bp66%%bp67%%bp68%%bp69%%bp70%%bp71%%bp72%%bp73%%bp74%%bp75%%bp76%%bp77%%bp78%%bp79%%bp80%
@echo  %bp81%%bp82%%bp83%%bp84%%bp85%%bp86%%bp87%%bp88%%bp89%%bp90%%bp91%%bp92%%bp93%%bp94%%bp95%%bp96%%bp97%%bp98%%bp99%%bp100%
@echo  %bp101%%bp102%%bp103%%bp104%%bp105%%bp106%%bp107%%bp108%%bp109%%bp110%%bp111%%bp112%%bp113%%bp114%%bp115%%bp116%%bp117%%bp118%%bp119%%bp120%
@echo  %bp121%%bp122%%bp123%%bp124%%bp125%%bp126%%bp127%%bp128%%bp129%%bp130%%bp131%%bp132%%bp133%%bp134%%bp135%%bp136%%bp137%%bp138%%bp139%%bp140%
@echo  %bp141%%bp142%%bp143%%bp144%%bp145%%bp146%%bp147%%bp148%%bp149%%bp150%%bp151%%bp152%%bp153%%bp154%%bp155%%bp156%%bp157%%bp158%%bp159%%bp160%
@echo  %bp161%%bp162%%bp163%%bp164%%bp165%%bp166%%bp167%%bp168%%bp169%%bp170%%bp171%%bp172%%bp173%%bp174%%bp175%%bp176%%bp177%%bp178%%bp179%%bp180%
@echo  %bp181%%bp182%%bp183%%bp184%%bp185%%bp186%%bp187%%bp188%%bp189%%bp190%%bp191%%bp192%%bp193%%bp194%%bp195%%bp196%%bp197%%bp198%%bp199%%bp200%
@echo.
choice /C R /N /T 0 /D R
if %errorlevel%==1 goto var
if %errorlevel%==255 goto var
goto var
::das Spielfeld ;D in einem automatischem Loop

Die "Steuerung.bat" fragt die Eingaben ab und wertet sie aus und schreibt die Ergebnisse in externe Dateien. Die "Splitgame.bat" liest die Daten aus den externen Dateien und wertet diese grafisch aus. Das ist bloß ein kleines Beispiel dafür, was alles damit machbar ist. Eine Art Splitscreenfunktion ist in jedes denkbare Batchspiel einbaubar. Wichtig ist hierbei jedoch zuerst die "Steuerung.bat" zu starten.

Ein LanGame[Bearbeiten]

Natürlich wollen viele auch für die "Arbeitspausen" eine kleine Beschäftigung haben. Hierfür eignet sich am besten eine Art LAN-Game. Das Prinzip eines LAN-Games ist ganz einfach. In einem Netzwerkordner wird eine txt-Datei gespeichert, die immer die aktuellen Positionen des Spielers beinhaltet. Die Positionen werden vom Spiel ausgelesen und gesetzt.