windows shell scripting in notepad help

jhendrickson9

Solid State Member
Messages
7
Location
indiana
I have been building the "guess a number game". I have it working like it should but I cant figure out how to write the variable to track the lows and highs of the guesses. or even were to put them.
If anyone can help it would be greatly appreciated.
 
create two variables, hi and lo
set hi equal to -10000 and low to 10000 (may want to adjust depending on the range of numbers you'll be guessing)
after you input from the keyboard, check whether the number input is higher than hi or lower than lo through some kind of if-then statement.
 
That is where I get stuck. the IF statement. I have written it a few different ways and can't get anything but errors.

IF lowguess > random echo +1

as you can tell I am totally lost on how to write the if statement.
thank you.
 
This is the general form for if-then statements:
Code:
if <statement> (
    do something
) else (
    do something else
)
 
this is what the game looks like. i dont know what to write in the if statement.
been stuck on this for a week.







Code:
@ECHO off

COLOR 0E

CLS

SET RandomNo=%random%

SET /a NoGuesses = 0

SET /A HIGHGUESSES = -23767

SET /A LOWGUESSES = 23767

TITLE = T H E  G U E S S  A  N U M B E R  G A M E  -  %RandomNo%
ECHO.
ECHO.
ECHO.
ECHO.
ECHO W E L C O M E   T O   T H E ...........
ECHO.
ECHO.
ECHO.
ECHO.
ECHO GGGG  U  U  EEE  SSSS  SSSS   AA   N   N  U  U  M     M  BBB   EEE  RRR
ECHO G  G  U  U  E    S     S     A  A  NN  N  U  U  MM   MM  B  B  E    R  R
ECHO G     U  U  E    SSS   SSS   AAAA  N N N  U  U  M M M M  B  B  E    RRR
ECHO G  GG U  U  EEE   SSS   SSS  A  A  N N N  U  U  M  M  M  BBB   EEE  RR
ECHO G  G  U  U  E       S     S  A  A  N  NN  U  U  M     M  B  B  E    R R
ECHO GGGG   UU   EEE  SSSS  SSSS  A  A  N   N   UU   M     M  BBB   EEE  R  R
ECHO.
ECHO.
ECHO                                G A M E !!!
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

PAUSE

:BEGINLOOP

CLS

ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

SET /p UserNumber=Please type your guess:

SET /a NoGuesses += 1

ECHO.
ECHO.
ECHO.
ECHO.
ECHO.


IF %UserNumber% LSS %RandomNo% (

  ECHO.
  ECHO Your guess was too low. Try again.
  ECHO.
  ECHO.

  PAUSE

  GOTO :BEGINLOOP
)

IF %UserNumber% GTR %RandomNo% (

  ECHO.
  ECHO Your guess was too high. Try again.
  ECHO.
  ECHO.

  PAUSE

  GOTO :BEGINLOOP
)

CLS

COLOR E0

ECHO.
ECHO     *     *     *     *     *     *     *     *     *     *     *    *
ECHO.
ECHO.
ECHO.
ECHO.
ECHO               Congratulations! You guessed it.
ECHO.
ECHO               The number was %UserNumber%
ECHO.
ECHO               You guessed it in %NoGuesses% guesses
ECHO.
ECHO                    LOW GUESSES %LG%
ECHO.                      
ECHO                        HIGH GUESSES %HG%
ECHO.
ECHO.
ECHO     *     *     *     *     *     *     *     *     *     *     *     *
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

  PAUSE
 
Last edited by a moderator:
It looks like the if/then statements are working fine to me.

The only thing I can see "wrong" is your LG and HG's aren't initialized. I assume you want those as arrays to track every guess higher and lower than the random value?

EDIT: and you have two variables that aren't used, HIGHGUESSES and LOWGUESSES.
I'd turn those into arrays . Inside the if-then statements you'd have to have a counter for the position in your hi array and a counter in your lo array, incremented every time you enter their respective if-then statement.
 
Last edited:
Yep, you'll need to do that with arrays.

Example:
Code:
IF %UserNumber% LSS %RandomNo% (

  noLoGuesses += 1
  LG[noLoGuesses] = %UserNumber%


  ECHO.
  ECHO Your guess was too low. Try again.
  ECHO.
  ECHO.

  PAUSE

  GOTO :BEGINLOOP
)

and on the congratulations screen you will need to use for loops to output the arrays.
 
Is this more like it? i dont know arrays yet i am in the fifth chapter of microsoft shell scripting for the absolute beginner and it does not have anything about arrays in there.

@ECHO off

COLOR 0E

CLS

SET RandomNo=%random%

SET /a NoGuesses = 0

set /a noLoGuesses = 0

set /a NoHiGuesses = 0

TITLE = T H E G U E S S A N U M B E R G A M E - %RandomNo%

ECHO.
ECHO.
ECHO.
ECHO.
ECHO W E L C O M E T O T H E ...........
ECHO.
ECHO.
ECHO.
ECHO.
ECHO GGGG U U EEE SSSS SSSS AA N N U U M M BBB EEE RRR
ECHO G G U U E S S A A NN N U U MM MM B B E R R
ECHO G U U E SSS SSS AAAA N N N U U M M M M B B E RRR
ECHO G GG U U EEE SSS SSS A A N N N U U M M M BBB EEE RR
ECHO G G U U E S S A A N NN U U M M B B E R R
ECHO GGGG UU EEE SSSS SSSS A A N N UU M M BBB EEE R R
ECHO.
ECHO.
ECHO G A M E !!!
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

PAUSE

:BEGINLOOP

CLS

ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

SET /p UserNumber=Please type your guess:

SET /a NoGuesses += 1

ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

IF %UserNumber% LSS %RandomNo% (


noLoGuesses += 1
LG(noLoGuesses) = %UserNumber%



ECHO.
ECHO Your guess was too low. Try again.
ECHO.
ECHO.

PAUSE

GOTO :BEGINLOOP

IF %UserNumber% LSS %RandomNo% (

noLoGuesses += 1
HG(noHiGuesses) = %UserNumber%


ECHO.
ECHO Your guess was too low. Try again.
ECHO.
ECHO.

PAUSE

GOTO :BEGINLOOP
)

CLS

COLOR E0

ECHO.
ECHO * * * * * * * * * * * *
ECHO.
ECHO.
ECHO.
ECHO.
ECHO Congratulations! You guessed it.
ECHO.
ECHO The number was %UserNumber%
ECHO.
ECHO You guessed it in %NoGuesses% guesses
ECHO.
ECHO low guesses %nologuesses%
ECHO.
ECHO high guesses %nohiguesses%
ECHO.
ECHO * * * * * * * * * * * *
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

PAUSE
 
Back
Top Bottom