'===========================================================================
' Subject: GUESSING GAME BETWEEN COMPUTERS    Date: 01-04-98 (22:01)       
'  Author: Bert van Dam                       Code: QB, QBasic, PDS        
'  Origin: bd1rsd@usa.net                   Packet: MISC.ABC
'===========================================================================
'TWO part snippet
' Save first part as MASTER.BAS
' Save second part as PLAYER.BAS
' Run MASTER.BAS

'Ever wonder  what  your programs do when they get really bored? They play a
'number  guessing  game  with eachother. These two programs do exactly that.
'Before  running  the  master  program  check  both master and player to see
'wether the propper path statements have been used.

'Then  start  the master and see him play a game with the player by chaining
'to eachother.

----start of master program----

'This set of programs plays a number guessing game with eachother. Data
'is being transferred between the programs by common variables. Both
'programs chain to eachother. I guess this is what happens when your
'computer programs get really bored :))

'Nov 1997, Bert van Dam, donated to the Public Domain. I can be reached
'in the QUIK_BAS area, Fido 2:285/750.16 or the inet bd1rsd@usa.net

COMMON NoTimes, LowGues, HighGues, Gues, Number, Result, Won
RANDOMIZE TIMER
IF Won = 1 THEN
        COLOR 15, 0
        END
END IF
COLOR 3, 0
PRINT "MASTER: ";
SELECT CASE NoTimes
CASE 0
    CLS
    COLOR 15, 0
    PRINT " ---===[ Two programs playing with eachother ]===---"
    PRINT
    COLOR 3, 0
    PRINT "MASTER: Do you want to play a game?"
    CHAIN "player.bas"
CASE 1
    PRINT "Very well. Guess the number I have in mind..."
    Number = INT(RND(1) * 100) + 1
    CHAIN "player.bas"
CASE 2
    IF INT(Gues) = Number THEN
        PRINT "Congratulations, you have won!"
        Won = 1
        CHAIN "c:\qb45\games\player.bas"
    END IF
    IF INT(Gues) > Number THEN
        PRINT "Too high..."
        Result = 1
        CHAIN "c:\qb45\games\player.bas"
    ELSE
        PRINT "Too low..."
        Result = -1
        CHAIN "c:\qb45\games\player.bas"
    END IF
END SELECT
END

----end of master program----

----start of player program----

'This is the player program. You must start the master program first!

'Nov 1997, Bert van Dam, donated to the Public Domain

COMMON NoTimes, LowGues, HighGues, Gues, Number, Result, Won
COLOR 2, 0
PRINT "PLAYER: ";
SELECT CASE NoTimes
CASE 0
    PRINT "Yes"
    NoTimes = 1
    CHAIN "master.bas"
CASE 1
    PRINT "Ok, my gues is 50"
    Gues = 50
    LowGues = 1
    HighGues = 100
    NoTimes = 2
    CHAIN "master.bas"
CASE 2
    IF Won = 1 THEN
        PRINT "Wow, I'm great!"
        CHAIN "master.bas"
    END IF
    IF Result = 1 THEN
        'too high
        HighGues = Gues
    ELSE
        'too low
        LowGues = Gues
    END IF
    Gues = (LowGues + HighGues) / 2
    PRINT "My gues is "; INT(Gues)
    CHAIN "master.bas"
END SELECT
END

----end of player program----
