Danny252
08-10-2007, 10:42 PM
So last night, at around 11, having realised I wasn't sleepy and was bored, I got out good old notepad and started typing away
An hour later I had an intro and a main menu for a game of Naughts and Crosses (Tic Tac Toe) coded... as a batch file.
I did have my reasons for choosing a batch file though:
1. I spend so much time hacking the school network through them anyway I actually know a fair bit
2. They're damn easy to make anyway (mm.. text editor)
3. It was simple enough to keep me interested
So all of 24 hours later, I popped out a finished product. A wonderful 6.84kb (of which about half is blank lines and notes so I actually remember what I was doing anyway...) I've got a couple of things I want to add.. maybe some options to change the colour, names for the players, an actual help menu... the sort of things that wouldn't be too hard.
How to play it... well, just chuck in the grid section you want to take. Format is letter-number, i.e. a1 is top left, c3 is bottom right.
I did come across a problem which stumped me for a while. I was trying to work out how to see if someone had won. Seeing as Batch Files don't support any sort of variable other than a variable, let alone an array, I knew it had to be some tedious way of looking at all the possible outcomes.
So I coded it to look at each one and check if all 3 in that line were equal. I then discovered it classed 3 "."s (I used period as a blank space) as a win. Oh dear... Now it checks if each line is equal to the symbol of the last go... it eats up a ton of lines though. Can anyone think of something more efficient?
Oh, I just remembered... I haven't coded in a stop for taking squares already taken or an actual tie code... So you can have wars with the other player by taking squares they already have... Right, that's the fixes for version 0.15 planned...
Code is below, feel free to try it:
REM Danny252's Naughts and Crosses
REM Version 0.2
REM Complete working version of game
REM More features planned in future
ECHO OFF
:INTRO
REM Intro, will eventually
REM Time delayed by the Pings
CLS
COLOR 0a
ECHO Dannei!! Productions Present...
PING -n 5 127.0.0.1 >NUL
CLS
ECHO A Danny252 Production...
PING -n 5 127.0.0.1 >NUL
CLS
ECHO Welcome to Danny252's...
ECHO.
ECHO.
PING -n 5 127.0.0.1 >NUL
COLOR 1c
ECHO ##**#** ###** #** #** ###** #** #**#####** ####
ECHO # # #**#** #**#** #**#** #**#** #****#****#
ECHO # # #**#####**#** #**#******#####****#**** ###
ECHO # # #**#** #**#** #**# ###**#** #****#********#
ECHO #**##**#** #** ###****###** #** #****#****####
ECHO.
PING -n 2 127.0.0.1 >NUL
COLOR 1e
ECHO****************###** ##**#**####
ECHO************** #** #**# # #**#** #
ECHO************** #####**# # #**#** #
ECHO************** #** #**# # #**#** #
ECHO************** #** #**#**##**####
ECHO.
PING -n 2 127.0.0.1 >NUL
COLOR 1a
ECHO**###** ####****###****####** ####**#####** #### #
ECHO #******#** #**#** #**#******#******#******#**** #
ECHO #******####** #** #** ###****###** ####****###**#
ECHO #******#** #**#** #******#******#**#**********#
ECHO**###** #** #** ###** ####** ####** #####**####**#
ECHO.
PING -n 6 127.0.0.1 >NUL
:MENU
REM Main Menu Display
REM Clears screen and sets color
CLS
COLOR 1a
ECHO Danny252's Naughts and Crosses
ECHO.
ECHO MAIN MENU
ECHO.
ECHO Options:
ECHO A: New Game
ECHO B: Replay Intro
ECHO Q: Quit
ECHO.
REM Ask for choice
SET Choice=
SET /P Choice=
REM Select the first letter
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
REM Follow the command
IF /I '%Choice%'=='a' GOTO GAMESTART
IF /I '%Choice%'=='b' GOTO INTRO
IF /I '%Choice%'=='q' GOTO EXIT
GOTO MENU
:GAMESTART
REM Game Setup
REM Clears screen and sets color
CLS
COLOR 1a
REM Sets up grid.
REM Letter is Column
REM Number is Row
REM N is Neutral (Empty)
REM O is Naught
REM X is Cross
SET a1=.
SET a2=.
SET a3=.
SET b1=.
SET b2=.
SET b3=.
SET c1=.
SET c2=.
SET c3=.
REM Sets up Win/Lose
REM 0 is In play
REM 1 is Player 1
REM 2 is Player 2
SET win=0
REM Sets up Turn
REM Starts as player 1
SET player=1
REM Input Validity Check
REM Valid=1
REM Invalid=0
SET valid=0
REM Turns played
SET turns=0
:GAMELOOP
REM Main Game
REM Clears screen to dump last turn
CLS
REM Set the shape for the round
REM And its name
IF %player%==1 (
****SET shape=O& SET shapename=Naughts
) ELSE (
****SET SHAPE=X& SET shapename=Crosses
)
REM Set the rows to the variables for each square
SET rowa=%a1%%b1%%c1%
SET rowb=%a2%%b2%%c2%
SET rowc=%a3%%b3%%c3%
REM Print out the rows
ECHO.
ECHO** ABC
ECHO**1%rowa%
ECHO**2%rowb%
ECHO**3%rowc%
ECHO.
REM Say who is player
ECHO The current player is
ECHO.
ECHO PLAYER %player% (Who is playing with %shapename%)
REM Ask for grid reference
ECHO.
ECHO Where would you like to go? (Column, Row)
ECHO Type "Q" to return to the menu
SET Choice=
SET /P Choice=
REM Decode the info
IF NOT '%Choice%'=='' SET column=%Choice:~0,1%
IF NOT '%Choice%'=='' SET row=%Choice:~1,2%
REM Check if input is valid for columns
REM Then check if it's quit
REM If input is valid skip remaining checks
:COLUMNCHECK
IF %column%==a (SET valid=1 & GOTO ROWCHECK) ELSE (SET valid=0)
IF %column%==b (SET valid=1 & GOTO ROWCHECK) ELSE (SET valid=0)
IF %column%==c (SET valid=1 & GOTO ROWCHECK) ELSE (SET valid=0)
IF %column%==q (GOTO MENU) ELSE (SET valid=0)
REM Check if input is valid for rows
REM If input is valid skip remaining checks
:ROWCHECK
IF %row%==1 (SET valid=1 & GOTO PASS) ELSE (SET valid=0)
IF %row%==2 (SET valid=1 & GOTO PASS) ELSE (SET valid=0)
IF %row%==3 (SET valid=1 & GOTO PASS) ELSE (SET valid=0)
:PASS
REM If data is bad, don't input
IF %valid%==0 GOTO INVALID
REM Put it together as a variable name
SET input=%column%%row%
REM If taken, tell player and ignore input
IF %input%==a1 IF %a1% NEQ . GOTO TAKEN
IF %input%==a2 IF %a2% NEQ . GOTO TAKEN
IF %input%==a3 IF %a3% NEQ . GOTO TAKEN
IF %input%==b1 IF %b1% NEQ . GOTO TAKEN
IF %input%==b2 IF %b2% NEQ . GOTO TAKEN
IF %input%==b3 IF %b3% NEQ . GOTO TAKEN
IF %input%==c1 IF %c1% NEQ . GOTO TAKEN
IF %input%==c2 IF %c2% NEQ . GOTO TAKEN
IF %input%==c3 IF %c3% NEQ . GOTO TAKEN
REM Put in the shape (set at start of GAMELOOP)
IF %input%==a1 SET a1=%shape%
IF %input%==a2 SET a2=%shape%
IF %input%==a3 SET a3=%shape%
IF %input%==b1 SET b1=%shape%
IF %input%==b2 SET b2=%shape%
IF %input%==b3 SET b3=%shape%
IF %input%==c1 SET c1=%shape%
IF %input%==c2 SET c2=%shape%
IF %input%==c3 SET c3=%shape%
REM Check if anyone has won
REM First checks the start of each possible win for current player's symbol
REM Then checks if the rest in that line are the same
REM If so, it continues to
REM Checks Columns Left to Right
REM Checks Rows Top to Bottom
REM Checks TL to BR
REM Checks BL to TR
IF %a1%==%shape% IF %a1%==%a2% IF %a2%==%a3% GOTO WIN
IF %b1%==%shape% IF %b1%==%b2% IF %b2%==%b3% GOTO WIN
IF %c1%==%shape% IF %c1%==%c2% IF %c2%==%c3% GOTO WIN
IF %a1%==%shape% IF %a1%==%b1% IF %b1%==%c1% GOTO WIN
IF %a2%==%shape% IF %a2%==%b2% IF %b2%==%c2% GOTO WIN
IF %a3%==%shape% IF %a3%==%b3% IF %b3%==%c3% GOTO WIN
IF %a1%==%shape% IF %a1%==%b2% IF %b2%==%c3% GOTO WIN
IF %a3%==%shape% IF %a3%==%b2% IF %b2%==%c1% GOTO WIN
:NOWIN
REM Check if it's been 9 turns
REM If so, it's a draw
IF %turns%==8 GOTO DRAW
REM No one has won, continue play
REM Change player
IF %player%==1 (SET player=2) ELSE (SET player=1)
REM Increment round
REM Done after checks so that invalid turns don't get counted
SET /a turns=%turns%+1
GOTO GAMELOOP
:INVALID
REM Grid square doesn't exist
REM Tell the user and await awknowledgement
ECHO.
ECHO Sorry, that is not an avaliable square
ECHO Please try again
PAUSE
REM Go back to the game as it was before
GOTO GAMELOOP
:TAKEN
REM Tell the user that the square has already been taken
REM Similar to :INVALID
ECHO.
ECHO Sorry, that square has been taken already
ECHO Please try again
PAUSE
REM Go back to the game as it was before
GOTO GAMELOOP
:DRAW
REM No one has won after 9 turns
REM So it's a draw
CLS
REM Say that it's a draw
ECHO DRAW
ECHO.
ECHO No one has won, it's a draw!
ECHO.
ECHO Here's what the game looked like:
ECHO.
REM Display final game status
REM Set the rows to the variables for each square
SET rowa=%a1%%b1%%c1%
SET rowb=%a2%%b2%%c2%
SET rowc=%a3%%b3%%c3%
REM Print out the rows
ECHO.
ECHO** ABC
ECHO**1%rowa%
ECHO**2%rowb%
ECHO**3%rowc%
ECHO.
REM New Game, Main Menu or Quit
REM If invalid, returns to Menu
ECHO Press A to return to the menu, B for a new game or Q to quit
REM Ask for choice
SET Choice=
SET /P Choice=
REM Select the first letter
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
REM Follow the command
IF /I '%Choice%'=='a' GOTO
IF /I '%Choice%'=='b' GOTO GAMESTART
IF /I '%Choice%'=='q' GOTO EXIT
REM Otherwise return to Menu
GOTO MENU
:WIN
REM A player has won one of the possibilities
REM Clear screen
CLS
REM Display "WINNER!" and flash colours
COLOR 0F
ECHO # # #**#####**##**#**##**#**#####**####**#
PING -n 2 127.0.0.1 >NUL
COLOR 1E
ECHO # # #****#****# # #**# # #**#******#** # #
PING -n 2 127.0.0.1 >NUL
COLOR 2D
ECHO # # #****#****# # #**# # #**####** ####**#
PING -n 2 127.0.0.1 >NUL
COLOR 3C
ECHO # # #****#****# # #**# # #**#******#** #
PING -n 2 127.0.0.1 >NUL
COLOR 4B
ECHO**# #** #####**#**##**#**##**#####**#** # #
PING -n 2 127.0.0.1 >NUL
COLOR 5A
PING -n 5 127.0.0.1 >NUL
REM Change to normal color
COLOR 1a
REM Say who won
ECHO.
ECHO PLAYER %player% has won!!!
ECHO.
ECHO Well done!
ECHO.
ECHO Here's what the game looked like:
ECHO.
REM Display final game status
REM Set the rows to the variables for each square
SET rowa=%a1%%b1%%c1%
SET rowb=%a2%%b2%%c2%
SET rowc=%a3%%b3%%c3%
REM Print out the rows
ECHO.
ECHO** ABC
ECHO**1%rowa%
ECHO**2%rowb%
ECHO**3%rowc%
ECHO.
REM New Game, Main Menu or Quit
REM If invalid, returns to Menu
ECHO Press A to return to the menu, B for a new game or Q to quit
REM Ask for choice
SET Choice=
SET /P Choice=
REM Select the first letter
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
REM Follow the command
IF /I '%Choice%'=='a' GOTO
IF /I '%Choice%'=='b' GOTO GAMESTART
IF /I '%Choice%'=='q' GOTO EXIT
REM Otherwise return to Menu
GOTO MENU
:EXIT
REM Exit game holder
An hour later I had an intro and a main menu for a game of Naughts and Crosses (Tic Tac Toe) coded... as a batch file.
I did have my reasons for choosing a batch file though:
1. I spend so much time hacking the school network through them anyway I actually know a fair bit
2. They're damn easy to make anyway (mm.. text editor)
3. It was simple enough to keep me interested
So all of 24 hours later, I popped out a finished product. A wonderful 6.84kb (of which about half is blank lines and notes so I actually remember what I was doing anyway...) I've got a couple of things I want to add.. maybe some options to change the colour, names for the players, an actual help menu... the sort of things that wouldn't be too hard.
How to play it... well, just chuck in the grid section you want to take. Format is letter-number, i.e. a1 is top left, c3 is bottom right.
I did come across a problem which stumped me for a while. I was trying to work out how to see if someone had won. Seeing as Batch Files don't support any sort of variable other than a variable, let alone an array, I knew it had to be some tedious way of looking at all the possible outcomes.
So I coded it to look at each one and check if all 3 in that line were equal. I then discovered it classed 3 "."s (I used period as a blank space) as a win. Oh dear... Now it checks if each line is equal to the symbol of the last go... it eats up a ton of lines though. Can anyone think of something more efficient?
Oh, I just remembered... I haven't coded in a stop for taking squares already taken or an actual tie code... So you can have wars with the other player by taking squares they already have... Right, that's the fixes for version 0.15 planned...
Code is below, feel free to try it:
REM Danny252's Naughts and Crosses
REM Version 0.2
REM Complete working version of game
REM More features planned in future
ECHO OFF
:INTRO
REM Intro, will eventually
REM Time delayed by the Pings
CLS
COLOR 0a
ECHO Dannei!! Productions Present...
PING -n 5 127.0.0.1 >NUL
CLS
ECHO A Danny252 Production...
PING -n 5 127.0.0.1 >NUL
CLS
ECHO Welcome to Danny252's...
ECHO.
ECHO.
PING -n 5 127.0.0.1 >NUL
COLOR 1c
ECHO ##**#** ###** #** #** ###** #** #**#####** ####
ECHO # # #**#** #**#** #**#** #**#** #****#****#
ECHO # # #**#####**#** #**#******#####****#**** ###
ECHO # # #**#** #**#** #**# ###**#** #****#********#
ECHO #**##**#** #** ###****###** #** #****#****####
ECHO.
PING -n 2 127.0.0.1 >NUL
COLOR 1e
ECHO****************###** ##**#**####
ECHO************** #** #**# # #**#** #
ECHO************** #####**# # #**#** #
ECHO************** #** #**# # #**#** #
ECHO************** #** #**#**##**####
ECHO.
PING -n 2 127.0.0.1 >NUL
COLOR 1a
ECHO**###** ####****###****####** ####**#####** #### #
ECHO #******#** #**#** #**#******#******#******#**** #
ECHO #******####** #** #** ###****###** ####****###**#
ECHO #******#** #**#** #******#******#**#**********#
ECHO**###** #** #** ###** ####** ####** #####**####**#
ECHO.
PING -n 6 127.0.0.1 >NUL
:MENU
REM Main Menu Display
REM Clears screen and sets color
CLS
COLOR 1a
ECHO Danny252's Naughts and Crosses
ECHO.
ECHO MAIN MENU
ECHO.
ECHO Options:
ECHO A: New Game
ECHO B: Replay Intro
ECHO Q: Quit
ECHO.
REM Ask for choice
SET Choice=
SET /P Choice=
REM Select the first letter
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
REM Follow the command
IF /I '%Choice%'=='a' GOTO GAMESTART
IF /I '%Choice%'=='b' GOTO INTRO
IF /I '%Choice%'=='q' GOTO EXIT
GOTO MENU
:GAMESTART
REM Game Setup
REM Clears screen and sets color
CLS
COLOR 1a
REM Sets up grid.
REM Letter is Column
REM Number is Row
REM N is Neutral (Empty)
REM O is Naught
REM X is Cross
SET a1=.
SET a2=.
SET a3=.
SET b1=.
SET b2=.
SET b3=.
SET c1=.
SET c2=.
SET c3=.
REM Sets up Win/Lose
REM 0 is In play
REM 1 is Player 1
REM 2 is Player 2
SET win=0
REM Sets up Turn
REM Starts as player 1
SET player=1
REM Input Validity Check
REM Valid=1
REM Invalid=0
SET valid=0
REM Turns played
SET turns=0
:GAMELOOP
REM Main Game
REM Clears screen to dump last turn
CLS
REM Set the shape for the round
REM And its name
IF %player%==1 (
****SET shape=O& SET shapename=Naughts
) ELSE (
****SET SHAPE=X& SET shapename=Crosses
)
REM Set the rows to the variables for each square
SET rowa=%a1%%b1%%c1%
SET rowb=%a2%%b2%%c2%
SET rowc=%a3%%b3%%c3%
REM Print out the rows
ECHO.
ECHO** ABC
ECHO**1%rowa%
ECHO**2%rowb%
ECHO**3%rowc%
ECHO.
REM Say who is player
ECHO The current player is
ECHO.
ECHO PLAYER %player% (Who is playing with %shapename%)
REM Ask for grid reference
ECHO.
ECHO Where would you like to go? (Column, Row)
ECHO Type "Q" to return to the menu
SET Choice=
SET /P Choice=
REM Decode the info
IF NOT '%Choice%'=='' SET column=%Choice:~0,1%
IF NOT '%Choice%'=='' SET row=%Choice:~1,2%
REM Check if input is valid for columns
REM Then check if it's quit
REM If input is valid skip remaining checks
:COLUMNCHECK
IF %column%==a (SET valid=1 & GOTO ROWCHECK) ELSE (SET valid=0)
IF %column%==b (SET valid=1 & GOTO ROWCHECK) ELSE (SET valid=0)
IF %column%==c (SET valid=1 & GOTO ROWCHECK) ELSE (SET valid=0)
IF %column%==q (GOTO MENU) ELSE (SET valid=0)
REM Check if input is valid for rows
REM If input is valid skip remaining checks
:ROWCHECK
IF %row%==1 (SET valid=1 & GOTO PASS) ELSE (SET valid=0)
IF %row%==2 (SET valid=1 & GOTO PASS) ELSE (SET valid=0)
IF %row%==3 (SET valid=1 & GOTO PASS) ELSE (SET valid=0)
:PASS
REM If data is bad, don't input
IF %valid%==0 GOTO INVALID
REM Put it together as a variable name
SET input=%column%%row%
REM If taken, tell player and ignore input
IF %input%==a1 IF %a1% NEQ . GOTO TAKEN
IF %input%==a2 IF %a2% NEQ . GOTO TAKEN
IF %input%==a3 IF %a3% NEQ . GOTO TAKEN
IF %input%==b1 IF %b1% NEQ . GOTO TAKEN
IF %input%==b2 IF %b2% NEQ . GOTO TAKEN
IF %input%==b3 IF %b3% NEQ . GOTO TAKEN
IF %input%==c1 IF %c1% NEQ . GOTO TAKEN
IF %input%==c2 IF %c2% NEQ . GOTO TAKEN
IF %input%==c3 IF %c3% NEQ . GOTO TAKEN
REM Put in the shape (set at start of GAMELOOP)
IF %input%==a1 SET a1=%shape%
IF %input%==a2 SET a2=%shape%
IF %input%==a3 SET a3=%shape%
IF %input%==b1 SET b1=%shape%
IF %input%==b2 SET b2=%shape%
IF %input%==b3 SET b3=%shape%
IF %input%==c1 SET c1=%shape%
IF %input%==c2 SET c2=%shape%
IF %input%==c3 SET c3=%shape%
REM Check if anyone has won
REM First checks the start of each possible win for current player's symbol
REM Then checks if the rest in that line are the same
REM If so, it continues to
REM Checks Columns Left to Right
REM Checks Rows Top to Bottom
REM Checks TL to BR
REM Checks BL to TR
IF %a1%==%shape% IF %a1%==%a2% IF %a2%==%a3% GOTO WIN
IF %b1%==%shape% IF %b1%==%b2% IF %b2%==%b3% GOTO WIN
IF %c1%==%shape% IF %c1%==%c2% IF %c2%==%c3% GOTO WIN
IF %a1%==%shape% IF %a1%==%b1% IF %b1%==%c1% GOTO WIN
IF %a2%==%shape% IF %a2%==%b2% IF %b2%==%c2% GOTO WIN
IF %a3%==%shape% IF %a3%==%b3% IF %b3%==%c3% GOTO WIN
IF %a1%==%shape% IF %a1%==%b2% IF %b2%==%c3% GOTO WIN
IF %a3%==%shape% IF %a3%==%b2% IF %b2%==%c1% GOTO WIN
:NOWIN
REM Check if it's been 9 turns
REM If so, it's a draw
IF %turns%==8 GOTO DRAW
REM No one has won, continue play
REM Change player
IF %player%==1 (SET player=2) ELSE (SET player=1)
REM Increment round
REM Done after checks so that invalid turns don't get counted
SET /a turns=%turns%+1
GOTO GAMELOOP
:INVALID
REM Grid square doesn't exist
REM Tell the user and await awknowledgement
ECHO.
ECHO Sorry, that is not an avaliable square
ECHO Please try again
PAUSE
REM Go back to the game as it was before
GOTO GAMELOOP
:TAKEN
REM Tell the user that the square has already been taken
REM Similar to :INVALID
ECHO.
ECHO Sorry, that square has been taken already
ECHO Please try again
PAUSE
REM Go back to the game as it was before
GOTO GAMELOOP
:DRAW
REM No one has won after 9 turns
REM So it's a draw
CLS
REM Say that it's a draw
ECHO DRAW
ECHO.
ECHO No one has won, it's a draw!
ECHO.
ECHO Here's what the game looked like:
ECHO.
REM Display final game status
REM Set the rows to the variables for each square
SET rowa=%a1%%b1%%c1%
SET rowb=%a2%%b2%%c2%
SET rowc=%a3%%b3%%c3%
REM Print out the rows
ECHO.
ECHO** ABC
ECHO**1%rowa%
ECHO**2%rowb%
ECHO**3%rowc%
ECHO.
REM New Game, Main Menu or Quit
REM If invalid, returns to Menu
ECHO Press A to return to the menu, B for a new game or Q to quit
REM Ask for choice
SET Choice=
SET /P Choice=
REM Select the first letter
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
REM Follow the command
IF /I '%Choice%'=='a' GOTO
IF /I '%Choice%'=='b' GOTO GAMESTART
IF /I '%Choice%'=='q' GOTO EXIT
REM Otherwise return to Menu
GOTO MENU
:WIN
REM A player has won one of the possibilities
REM Clear screen
CLS
REM Display "WINNER!" and flash colours
COLOR 0F
ECHO # # #**#####**##**#**##**#**#####**####**#
PING -n 2 127.0.0.1 >NUL
COLOR 1E
ECHO # # #****#****# # #**# # #**#******#** # #
PING -n 2 127.0.0.1 >NUL
COLOR 2D
ECHO # # #****#****# # #**# # #**####** ####**#
PING -n 2 127.0.0.1 >NUL
COLOR 3C
ECHO # # #****#****# # #**# # #**#******#** #
PING -n 2 127.0.0.1 >NUL
COLOR 4B
ECHO**# #** #####**#**##**#**##**#####**#** # #
PING -n 2 127.0.0.1 >NUL
COLOR 5A
PING -n 5 127.0.0.1 >NUL
REM Change to normal color
COLOR 1a
REM Say who won
ECHO.
ECHO PLAYER %player% has won!!!
ECHO.
ECHO Well done!
ECHO.
ECHO Here's what the game looked like:
ECHO.
REM Display final game status
REM Set the rows to the variables for each square
SET rowa=%a1%%b1%%c1%
SET rowb=%a2%%b2%%c2%
SET rowc=%a3%%b3%%c3%
REM Print out the rows
ECHO.
ECHO** ABC
ECHO**1%rowa%
ECHO**2%rowb%
ECHO**3%rowc%
ECHO.
REM New Game, Main Menu or Quit
REM If invalid, returns to Menu
ECHO Press A to return to the menu, B for a new game or Q to quit
REM Ask for choice
SET Choice=
SET /P Choice=
REM Select the first letter
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
REM Follow the command
IF /I '%Choice%'=='a' GOTO
IF /I '%Choice%'=='b' GOTO GAMESTART
IF /I '%Choice%'=='q' GOTO EXIT
REM Otherwise return to Menu
GOTO MENU
:EXIT
REM Exit game holder