How to Make a Simple Batch Game (trivia!)

15,870

7

22

Posted

Introduction: How to Make a Simple Batch Game (trivia!)


HI
Today i'm gonna show you how to make a trivia game with Batch. Since batch is kind of limited, some awesome features that you may be thinking of may not come true. That's just how it goes. Hopefully my steps, to you, are simple and easy to understand.


Step 1: Making the Main Page


Ok, like all games, they have a main page(menu). Use all your text pictures-making skills and make it nice and beautiful. Ok, for those who have not much skill in this batch script, input this code:

Firstly, start with a @echo off (duh)

@echo off

Then, add a title

@echo off
title The Trivia Game

Now, add the main title(that will be shown on the screen) and a label

@echo off
title The Trivia game
:Main
echo.
echo.
echo                          ------------------------------
echo                              Trivia Game
echo                         --------------------------------
echo.
echo.

Your script should now look like this^

Now, add the selection part. This is slightly trickier


@echo off
title The Trivia game
:Main
echo.
echo.
echo                ------------------------------
echo                    Trivia Game
echo              --------------------------------
echo.
echo.
echo                     ------------------
echo                    Type A and press ENTER to play
echo                    Type B and press ENTER to see instructions
echo                    ----------------------
set /p input=COMMAND?
if %input%==a goto PLAY
if %input%==b goto instructions

You will use the selection code you used here for all the questions.
Ok, thats basically it for this step.


Step 2: Making a Score System


@echo off
title The Trivia game
:Main
echo.
echo.
echo                             ------------------------------
echo                                    Trivia Game
echo                            --------------------------------
echo.
echo.
echo                                  ------------------
echo                      Type A and press ENTER to play
echo                Type B and press ENTER to see instructions
echo                               ----------------------
set /p input=COMMAND?
if %input%==a goto PLAY
if %input%==b goto instructions


This should be your script so far.
Ok, lets get into some explanation.

1. What is set /p?
Ok, in simpler terms, is kind of like setting up a question.

2. If? What is 'if'?
'If' checks a condition. So 'if' the input is a, it will transport you to the label 'a'. Getting it so far?

3. What's with the percentage marks?
If a word is surrounded with these percentage marks, then that means it is a variable.

Now, this step I am going to explain how to make a score system. A bit tricky to the novice scripter.

Firstly, we shall use a 'set a/'

set a/

Then we shall type in a bit more to the 'set /a', as shown below. The score we will set is how many questions done. This will be abbreiviated to 'qdone'

set a/ qdone=0

Pretty simple. Next, I will show you how to add points to the 'qdone'. We shall use two labels. The first label is the question.

:Q1
echo                         ----------------------------------------
echo                                   What is a boat?
echo                         ----------------------------------------
echo                             [a-A water vehichle]                [b-A land vehicle]
echo                             [c-A truck]                        [d-An animal]
set p/ input=ANSWER?
if %input%==a goto score1
if %input%==b goto wrong
if %input%==c goto wrong
if %input%==d goto wrong
goto error

:score 1
set a/ qdone=%qdone%+1
echo Congratz, you have completed %qdone% question(s)!
echo Press any button to go to the next question!
pause>nul
goto Q2

Ok, thats basically it. Let's get into explanation.

1.How does the set a/ qdone=%qdone%+1 work?
Well, its like resetting the variable, except adding 1 more point.

2. What is the bold for, on the goto error?
Well, i'd just like to point it out.If the command that was entered is invalid, it will go to the error label (that you will make)







Step 3: Finalizing

@echo off
title The Trivia game
:Main
echo.
echo.
echo ------------------------------
echo Trivia Game
echo --------------------------------
echo.
echo.
echo ------------------
echo Type A and press ENTER to play
echo Type B and press ENTER to see instructions
echo ----------------------
set /p input=COMMAND?
if %input%==a goto Q1
if %input%==b goto instructions
goto error

Ok, back to the main menu. We will now add the extra labels that are required (error, instructions, wrong)

@echo off
title The Trivia game
:Main
echo.
echo.
echo ------------------------------
echo Trivia Game
echo --------------------------------
echo.
echo.
echo ------------------
echo Type A and press ENTER to play
echo Type B and press ENTER to see instructions
echo ----------------------
set /p input=COMMAND?
if %input%==a goto PLAY
if %input%==b goto instructions
goto error

:error
echo Dingbat! Thats an invalid command.
pause
goto Main

:instructions
echo Type instructions here
pause
goto Main

:wrong
echo Sorry, but...
echo YOU LOSE!!
pause
goto Main

:Q1
echo                                 ----------------------------------------
echo                                        What is a boat?
echo                                  ----------------------------------------
echo                                [a-A water vehichle] [b-A land vehicle]
echo                                          [c-A truck] [d-An animal]
set p/ input=ANSWER?
if %input%==a goto score1
if %input%==b goto wrong
if %input%==c goto wrong
if %input%==d goto wrong
goto error

:score 1
set a/ qdone=%qdone%+1
echo Congratz, you have completed %qdone% question(s)!
echo Press any button to go to the next question!
pause>nul
goto Q2

:Q2
(Put question here)

Okay, thats basically it. Now, this step is UBER IMPORTANT
save it as a BAT file, so say your game is called trivia save it as trivia.bat





That's basically it! Add more questions, and a winning screen, and your done!



Share

    Recommendations

    • Science of Cooking

      Science of Cooking
    • Pocket-Sized Contest

      Pocket-Sized Contest
    • Microcontroller Contest

      Microcontroller Contest
    user

    We have a be nice policy.
    Please be positive and constructive.

    Tips

    Questions

    22 Comments

    Hey! I have biiig problem with the point system, I am using Windows 10 pro, and the command set not Works like yours. (When i will do command set a/ qdone=0 the placeholder in echo is %a/ qdone% and the if i will do set a/ qdone=%qdone%+1 it will display "0+1", well help me!!!

    Why does this not work?

    @echo off

    echo what is your name?

    set /p name=

    echo Hello %name%

    goto level1

    :level1

    echo elsa a boy

    echo A) True

    echo B) False

    if %select% == goto wrong

    if %select% == goto bye bye

    :worong

    you were wrong! sorry!

    pause

    exit

    :bye bye

    echo goodbye you were right!

    pause

    exit

    The reason why it wont work is because 1. wrong is misspelled 12th line on the code (technically 13 because of your comment but since were talking about the code 12th line.) And also

    if %select% == goto wrong

    if %select% == goto bye bye

    this code is wrong it should be

    if %select% == A goto wrong

    if %select% == B goto bye bye

    And to avoid people cheating I would put this command in after it 'Goto Cheater' this is to prevent people from typing random things and they get it right. I hope I helped you.

    You can actually do

    :FamilyGuyQuestion1

    cls

    Title Family Guy

    echo.

    echo Who is the main character in Family Guy?

    echo.

    echo Peter

    echo.

    echo Glenn

    echo.

    echo Joe

    echo.

    set /p familyguy1=Enter:

    if %familyguy1% equ Peter goto CorrectFG1

    if %familyguy1% equ Glenn goto IncorrectFG1

    if %familyguy1% equ Joe goto IncorrectFG1

    goto FamilyGuyQuestion1

    Something Like this instead of using numbers for answers, works for menus too

    well i made my own one.. but its sure a good one..

    @echo off

    title Cooler Reyes Mini Game

    echo Welcome :D

    pause

    echo Would you like me to start the game? (y/n)

    set /p c=

    if %c%==y goto menu32

    if %c%==n exit

    :menu32

    cls

    echo Hi! im Dexter, how about you?

    set /p name=

    cls

    echo Nice to meet you %name%!

    pause

    cls

    echo What minigame do you want to play %name%?

    echo Math or Bignumber?

    set /p select=

    if %select%==Math goto mathquiz

    if %select%==Bignumber goto number

    :mathquiz

    cls

    echo You have chosen math %name%!

    pause

    echo Now you'll suffer!

    pause

    cls

    echo ok, first one :D

    pause

    echo 365+546?

    echo 1. 779

    echo 2. 911

    echo 3. 690

    set /p choice1=

    if %choice1%==1 goto lose1

    if %choice1%==2 echo You got me!

    if %choice1%==3 goto lose1

    pause

    cls

    echo now, more difficult XD

    pause

    echo 650+765?

    echo 1. 1334

    echo 2. 1565

    echo 3. 1415

    set /p choice2=

    if %choice2%==1 goto lose2

    if %choice2%==2 goto lose2

    if %choice2%==3 echo wooooow!

    pause

    cls

    echo your really good at this %name%!

    pause

    echo but not this time!

    pause

    echo 924+876?

    echo 1. 2000

    echo 2. 1900

    echo 3. 1800

    set /p choice3=

    if %choice3%==1 echo You won the game!! congrats %name% :D

    if %choice3%==2 goto lose3

    if %choice3%==3 goto lose3

    cls

    :lose1

    cls

    echo haha, you lose :D

    pause

    echo try again? (y/n)

    set /p kj=

    if %kj%==y goto mathquiz

    if %kj%==n exit

    cls

    :lose2

    cls

    echo haha, you lose :D

    pause

    echo try again? (y/n)

    set /p kj=

    if %kj%==y goto mathquiz

    if %kj%==n exit

    cls

    :lose3

    cls

    echo haha, you lose :D

    pause

    echo try again? (y/n)

    set /p kj=

    if %kj%==y goto mathquiz

    if %kj%==n exit

    cls

    :number1

    cls

    echo ok lets play the thing you selected %name%! Big number!!!

    pause

    echo type set to go to settings

    set /p sets=

    if %sets%==set goto settings

    echo choose a number 1-10

    set /p cnumber=

    if %cnumber%==1 echo i choose 2! I Win! Play Again? (y/n)

    set /p yorno=

    if %cnumber%==2 echo i choose 3! I Win! Play Again? (y/n)

    if %cnumber%==3 echo i choose 4! I Win! Play Again? (y/n)

    if %cnumber%==4 echo i choose 5! I Win! Play Again? (y/n)

    if %cnumber%==5 echo i choose 6! I Win! Play Again? (y/n)

    if %cnumber%==6 echo i choose 7! I Win! Play Again? (y/n)

    if %cnumber%==7 echo i choose 8! I Win! Play Again? (y/n)

    if %cnumber%==8 echo i choose 9! I Win! Play Again? (y/n)

    if %cnumber%==9 echo i choose 10! I Win! Play Again? (y/n)

    if %cnumber%==10 echo i choose 10! Tie! Play Again? (y/n)

    if %yorno%==y goto number

    if %yorno%==n exit

    cls

    :settings

    cls

    echo CHOOSE :D

    pause

    echo 1. I want me to always win

    echo 2. I want me to always lose

    set /p sets1=

    if %sets1%==1 goto number2

    if %sets1%==2 goto number1

    cls

    :number 2

    cls

    echo ok lets play the thing you selected %name%! Big number!!!

    pause

    echo type set to go to settings

    set /p sets=

    if %sets%==set goto settings

    echo choose a number 1-10

    set /p cnumber=

    if %cnumber2%==1 echo i choose 1! Tie! Play Again? (y/n)

    set /p yorno2=

    if %cnumber2%==2 echo i choose 1! You Win! Play Again? (y/n)

    if %cnumber2%==3 echo i choose 2! You Win! Play Again? (y/n)

    if %cnumber2%==4 echo i choose 3! You Win! Play Again? (y/n)

    if %cnumber2%==5 echo i choose 4! You Win! Play Again? (y/n)

    if %cnumber2%==6 echo i choose 5! You Win! Play Again? (y/n)

    if %cnumber2%==7 echo i choose 6! You Win! Play Again? (y/n)

    if %cnumber2%==8 echo i choose 7! You win! Play Again? (y/n)

    if %cnumber2%==9 echo i choose 8! You win! Play Again? (y/n)

    if %cnumber2%==10 echo i choose 9! You win! Play Again? (y/n)

    if %yorno2%==y goto number

    if %yorno2%==n exit

    This is my code. It won't work, for some reason.
    Please reply.
    Sorry bout the spacing

    @echo off
    title The Trivia game
    :Main
    echo.
    echo.
    echo ------------------------------
    echo Trivia Game
    echo --------------------------------
    echo.
    echo.
    echo ------------------
    echo Type A and press ENTER to play
    echo Type B and press ENTER to see instructions
    echo ----------------------
    set /p input=COMMAND?
    if %input%==a goto start
    if %input%==b goto instructions
    goto error

    :error
    echo Dingbat! Thats an invalid command.
    pause
    goto Main

    :instructions
    echo This is a trivia game. Just do what you think you need to do.
    pause
    goto Main

    :wrong
    echo Sorry, but...
    echo YOU LOSE!!
    echo Now start over. You deserve another chance!
    pause
    goto Main

    :start
    echo ----------------------------------------
    echo What is a boat?
    echo ----------------------------------------
    echo [a-A water vehichle] [b-A land vehicle]
    echo [c-A truck] [d-An animal]
    set p/ input=ANSWER?
    if %input%==a goto score1
    if %input%==b goto wrong
    if %input%==c goto wrong
    if %input%==d goto wrong
    goto error

    :score 1
    set a/ qdone=%qdone%+1
    echo Congratz, you have completed %qdone% question(s)!
    echo Press any button to go to the next question!
    pause>nul
    goto Q2

    :Q2
    echo --------------------------------
    echo What is a duck?
    echo --------------------------------
    echo [a- THE BEST ANIMAL EVAR] [b- An ordinary animal]
    echo [c- A vegetable] [d-Something random]
    set p/ input=ANSWER?
    if %input%==a goto score2
    if %input%==b goto wrong
    if %input%==c goto wrong
    if %input%==d goto wrong
    goto error

    :score 2
    set a/ qdone=%qdone%+2
    echo Congratz, you have completed %qdone% question(s)!
    echo Press any button to go to the next question!
    pause>nul
    goto Q3

    :Q3
    echo ----------------------------------
    echo How do you make a cake?
    echo -----------------------------------
    echo [a-Using the power of your MIND]
    echo [b- Using a recipe]
    echo [c- Go buy it] [d- Get your friends to make it for you]
    set p/ input=ANSWER?
    if %input%==a goto wrong
    if %input%==b goto score3
    if %input%==c goto wrong
    if %input%==d goto wrong
    goto error

    :score 3
    set a/ qdone=%qdone%+3
    echo Congratz, you have completed %qdone% question(s)!
    echo Press any button to go to the next question!
    pause>nul
    goto Q4

    :Q4
    echo ------------------------------------
    echo 5 cubed= ?
    echo ----------------------------------
    echo [a-15] [b-125] [c-250] [d-500]
    set p/ input=ANSWER?
    if %input%==a goto wrong
    if %input%==b goto score4
    if %input%==c goto wrong
    if %input%==d goto wrong
    goto error

    :score 3
    set a/ qdone=%qdone%+4
    echo Congratz, you have completed %qdone% question(s)!
    echo Press any button to go to the next question!
    pause>nul
    goto Q5

    :Q5
    echo --------------------------------------------
    echo What file format does this game use?
    echo --------------------------------------------
    echo [a- .cmd] [b- .exe] [c- I don't even know] [d- .bat]
    set p/ input=ANSWER?
    if %input%==a goto wrong
    if %input%==b goto wrong
    if %input%==c goto wrong
    if %input%==d goto winner
    goto error

    :winner
    echo Great job! You beat the trivia game!
    echo If you'd like, email this to your friends!
    echo Be sure to inform them that it can only be used on Windows PC's.
    echo Thanks for playing!!!!
    pause

    There are some errors in the coding

    I fixed them and this is the new one:

    @echo off
    title The Trivia game
    :Main
    echo.
    echo.
    echo ------------------------------
    echo Trivia Game
    echo --------------------------------
    echo.
    echo.
    echo ------------------
    echo Type A and press ENTER to play
    echo Type B and press ENTER to see instructions
    echo ----------------------
    set /p input=
    if %input%==a goto start
    if %input%==b goto instructions
    if %inpu%==A goto start
    if %input%--B goto instructions
    goto error

    :error
    echo Dingbat! Thats an invalid command.
    pause
    goto Main

    :instructions
    echo This is a trivia game. Just do what you think you need to do.
    pause
    goto Main

    :wrong
    echo Sorry, but...
    echo YOU LOSE!!
    echo Now start over. You deserve another chance!
    pause
    goto Main

    :start
    echo ----------------------------------------
    echo What is a boat?
    echo ----------------------------------------
    echo [a-A water vehichle] [b-A land vehicle]
    echo [c-A truck] [d-An animal]
    set p/ input=ANSWER?
    if %input%==a goto score1
    if %input%==b goto wrong
    if %input%==c goto wrong
    if %input%==d goto wrong
    goto error

    :score 1
    set a/ qdone=%qdone%+1
    echo Congratz, you have completed %qdone% question(s)!
    echo Press any button to go to the next question!
    pause>nul
    goto Q2

    :Q2
    echo --------------------------------
    echo What is a duck?
    echo --------------------------------
    echo [a- THE BEST ANIMAL EVAR] [b- An ordinary animal]
    echo [c- A vegetable] [d-Something random]
    set p/ input=ANSWER?
    if %input%==a goto score2
    if %input%==b goto wrong
    if %input%==c goto wrong
    if %input%==d goto wrong
    goto error

    :score 2
    set a/ qdone=%qdone%+2
    echo Congratz, you have completed %qdone% question(s)!
    echo Press any button to go to the next question!
    pause>nul
    goto Q3

    :Q3
    echo ----------------------------------
    echo How do you make a cake?
    echo -----------------------------------
    echo [a-Using the power of your MIND]
    echo [b- Using a recipe]
    echo [c- Go buy it] [d- Get your friends to make it for you]
    set p/ input=ANSWER?
    if %input%==a goto wrong
    if %input%==b goto score3
    if %input%==c goto wrong
    if %input%==d goto wrong
    goto error

    :score 3
    set a/ qdone=%qdone%+3
    echo Congratz, you have completed %qdone% question(s)!
    echo Press any button to go to the next question!
    pause>nul
    goto Q4

    :Q4
    echo ------------------------------------
    echo 5 cubed= ?
    echo ----------------------------------
    echo [a-15] [b-125] [c-250] [d-500]
    set p/ input=ANSWER?
    if %input%==a goto wrong
    if %input%==b goto score4
    if %input%==c goto wrong
    if %input%==d goto wrong
    goto error

    :score 3
    set a/ qdone=%qdone%+4
    echo Congratz, you have completed %qdone% question(s)!
    echo Press any button to go to the next question!
    pause>nul
    goto Q5

    :Q5
    echo --------------------------------------------
    echo What file format does this game use?
    echo --------------------------------------------
    echo [a- .cmd] [b- .exe] [c- I don't even know] [d- .bat]
    set p/ input=ANSWER?
    if %input%==a goto wrong
    if %input%==b goto wrong
    if %input%==c goto wrong
    if %input%==d goto winner
    goto error

    :winner
    echo Great job! You beat the trivia game!
    echo If you'd like, email this to your friends!
    echo Be sure to inform them that it can only be used on Windows PC's.
    echo Thanks for playing!!!!
    pause




    By Q4 you wrote: set p/ input, That will NOT work you have to make it: set /p input.
    Make the / before the p!