'                        ****************************
'                        *     The game of 21       *
'                        *       Version 1.1        *
'                        *      by Alex Ford        *
'                        *    November/ 14/ 2000    *
'                        ****************************

'Press SHIFT + F5 to play the game or choose run then start to play the game

'But first check out this cool code 

'****************************************************************************
'THIS IS A CODE BOOK. READ THIS PARAGRAPH FOR A COOL CODE!
'When you type in your name to begin a game, type in the name Alex or alex, and
'in the game you will roll a seven every time! That means if you roll three
'times you will always get 21! NOTE: (It doesn't matter if you choose to play
'the computer or a 2 player game!)
'****************************************************************************

RANDOMIZE TIMER
CLS
CONST black = 0, blue = 1, green = 2, cyan = 3, red = 4, magenta = 5
CONST brown = 6, white = 7, gray = 8, lblue = 9, lgreen = 10, lcyan = 11
CONST lred = 12, lmagenta = 13, yellow = 14, lwhite = 15
CONST true = -1, false = 0
delay = 100
'****************************************************************************
'This subroutine is the main subroutine
COLOR 10, 0
GOSUB load
GOSUB titlescreen
GOSUB password
done1 = false
DO
GOSUB gamechoice
GOSUB mainmenu
IF x = false THEN
        GOSUB password
        COLOR 15, 0
        done1 = true
END IF
LOOP UNTIL done1 = true
CLS
COLOR 15, 0
CLS
COLOR 2
CHAIN "c:\windows\profiles\alex\desktop\q-basi~1\gameinto"
'****************************************************************************
load:
CLS
COLOR 0, 0
CLS
col = 31
COLOR 0, 0
CLS
LOCATE 10, 30
COLOR 1, 0
PRINT "лллллллллллллллллллл"
LOCATE 11, 30
COLOR 10, 1
PRINT "     Loading...     "
LOCATE 12, 30
COLOR 1, 0
PRINT "л                  л"
LOCATE 13, 30
COLOR 10, 1
PRINT "   Please Wait...   "
DO
LOCATE 12, col
COLOR 4, 2
PRINT "л"
col = col + 1
SLEEP 1
LOOP UNTIL col = 49
BEEP
RETURN
'****************************************************************************
password:
donepass = false
WHILE NOT donepass
COLOR 0, 0
CLS
LOCATE 10, 30
COLOR 1, 0
PRINT "лллллллллллллллллллл"
LOCATE 11, 30
COLOR 4, 9
PRINT "   Enter Password   "
LOCATE 12, 30
COLOR 1, 0
PRINT "л                  л"
LOCATE 13, 30
COLOR 1, 0
PRINT "лллллллллллллллллллл"
colr = INT(RND * 15) + 1
LOCATE 12, 31
COLOR 0, 0
INPUT "", passwordchc$
IF passwordchc$ = "901008" THEN
        donepass = true
ELSE
        BEEP
END IF
WEND
RETURN
'****************************************************************************
titlescreen:
COLOR , black
CLS
COLOR black, lgreen
FOR col = 1 TO 35 STEP 1
        LOCATE 12, 1
        COLOR cyan, cyan
        PRINT "             "
        LOCATE 16, col
        COLOR lblue, black
        PRINT " December/ 1/ 2000 "
        LOCATE 16, col
        COLOR 0, 0
        PRINT " "
        FOR delay = 1 TO 500
        NEXT delay
NEXT col
SOUND 500, 1
FOR col = 1 TO 35 STEP 1
        LOCATE 14, col
        COLOR lred, black
        PRINT "  By Alex Ford! "
        LOCATE 14, col
        COLOR 0, 0
        PRINT " "
        FOR delay = 1 TO 300
        NEXT delay
NEXT col
SOUND 500, 1
FOR row = 1 TO 10
        COLOR black, black
        IF row > 1 THEN
        LOCATE row - 1, 30
        PRINT "                         "
        END IF
        LOCATE row, 35
        COLOR lgreen, lblue
        PRINT " The game of 21! "
        FOR delay = 1 TO 300
        NEXT delay
NEXT row
SOUND 500, 1
SLEEP 1
FOR row = 1 TO 12
        SOUND 300, 1
        LOCATE 12, 1
        COLOR cyan, cyan
        PRINT "             "
        COLOR black, black
        IF row > 1 THEN
        LOCATE row - 1, 1
        PRINT "             "
        END IF
        LOCATE row, 1
        COLOR lgreen, black
        PRINT " Version 1.1 "
        FOR delay = 1 TO 1000
        NEXT delay
NEXT row
SOUND 500, 1
FOR col = 1 TO 36
        COLOR black, black
        IF row > 1 THEN
                LOCATE row - 1, col
                PRINT "             "
        END IF
        LOCATE 12, col
        COLOR lgreen, cyan
        PRINT "  Version 1.1 "
        LOCATE 12, col
        COLOR black, black
        PRINT " "
        FOR delay = 1 TO 500
        NEXT delay
NEXT col
SOUND 500, 1
INPUT "(Press <ENTER> to continue)", g$
RETURN
'****************************************************************************
gamechoice:
donechoice = false
WHILE NOT donechoice
RANDOMIZE TIMER
CLS
LOCATE 10, 30
COLOR 10
PRINT "Opponent Choice"
COLOR 9
LOCATE 11, 30
PRINT "1) Computer"
LOCATE 12, 30
PRINT "2) A player 2"
COLOR 10
LOCATE 13, 30
INPUT "What is your choice?: ", gamechoice1
IF gamechoice1 = 1 OR gamechoice1 = 2 THEN
        donechoice = true
ELSE
        BEEP
END IF
WEND
RETURN
'****************************************************************************
setup:
CLS
score1 = 0
score2 = 0
INPUT "What is player 1's name?: ", player1name$
IF gamechoice1 = 2 THEN
        INPUT "What is player 2's name?: ", player2name$
END IF
CLS
RETURN
'****************************************************************************
mainmenu:
GOSUB setup
donemain = false
WHILE NOT donemain
RANDOMIZE TIMER
COLOR 0, 0
CLS
LOCATE 10, 30
COLOR 10
PRINT "Main Menu"
COLOR 9
LOCATE 11, 30
PRINT "1) Instructions"
LOCATE 12, 30
PRINT "2) Play game"
LOCATE 13, 30
PRINT "3) Go back to opponent choice"
LOCATE 14, 30
PRINT "4) Exit"
COLOR 10
LOCATE 15, 30
INPUT "What is your choice?: ", mmenuchoice
IF mmenuchoice = 1 THEN
        GOSUB instructions
ELSEIF mmenuchoice = 2 THEN
        GOSUB game
ELSEIF mmenuchoice = 3 THEN
        donemain = true
        x = true
ELSEIF mmenuchoice = 4 THEN
        donemain = true
        x = false
ELSE
        BEEP
END IF
WEND
RETURN
'****************************************************************************
instructions:
CLS
COLOR red
PRINT "When your in the game the object is to get as close to 21 without going over it plus you have to get higher than your opponent without going over 21. The rest of the game is pretty much self explanitory. When you are close to 21 and high enough "
PRINT "That you don't think your oppent can beat you then choose stop and it will go to your opponents turn. BE CAREFUL!"
INPUT "(Press <ENTER> to continue)", g$
RETURN
'****************************************************************************
game:
donegame = false
CLS
GOSUB setup2
WHILE NOT donegame
RANDOMIZE TIMER
GOSUB mycls
LOCATE 1, 1
COLOR 9
PRINT player1name$
COLOR 10, 0
LOCATE 10, 30
PRINT player1name$; "'s turn"
LOCATE 11, 30
COLOR 9
PRINT "1) Roll"
LOCATE 12, 30
PRINT "2) Stop"
LOCATE 13, 30
PRINT "3) Quit"
LOCATE 14, 30
COLOR 10
INPUT "What is your choice?: ", dicechoice
IF dicechoice = 1 OR dicechoice = 4 THEN
    IF player1name$ = "Alex" OR player1name$ = "alex" THEN
        shake = 7
    ELSEIF dicechoice = 4 THEN
        shake = 21
    ELSE
        shake = INT(RND * 11) + 2
    END IF
    COLOR 15
    LOCATE 2, 1
    PRINT "Your previous score was "; score1
    LOCATE 3, 1
    PRINT "Your current roll is "; shake
    LOCATE 4, 1
    COLOR 10
    score1 = score1 + shake
    PRINT "Your current score is "; score1
    COLOR 12, 0
    LOCATE 5, 1
    PRINT "Score to beat is "; score2
    IF score1 >= 22 THEN
        COLOR red
        PRINT player1name$;
        INPUT " went over 21! (Press <ENTER> to continue)", g$
        GOSUB winner
        donegame = true
    END IF
ELSEIF dicechoice = 2 THEN
        IF gamechoice1 = 1 THEN
            GOSUB computer
            donegame = true
        ELSE
            GOSUB 2
            donegame = true
        END IF
ELSEIF dicechoice = 3 THEN
        donegame = true
ELSE
        BEEP
END IF
x = x + 1
IF x = 2 THEN
        x = 1
END IF
WEND
RETURN
'****************************************************************************
2 :
CLS
donegame2 = false
WHILE NOT donegame2
RANDOMIZE TIMER
GOSUB mycls
LOCATE 1, 1
COLOR 9
PRINT player2name$
COLOR 10, 0
LOCATE 10, 30
PRINT player2name$; "'s turn"
LOCATE 11, 30
COLOR 9
PRINT "1) Roll"
LOCATE 12, 30
PRINT "2) Stop"
LOCATE 13, 30
PRINT "3) Quit"
LOCATE 14, 30
COLOR 10
INPUT "What is your choice?: ", dicechoice
IF dicechoice = 1 THEN
    IF player2name$ = "Alex" OR player2name$ = "alex" THEN
        shake = 7
    ELSE
        shake = INT(RND * 11) + 2
    END IF
    COLOR 15
    LOCATE 2, 1
    PRINT "Your previous score was "; score2
    LOCATE 3, 1
    PRINT "Your current roll is "; shake
    LOCATE 4, 1
    COLOR 10
    score2 = score2 + shake
    PRINT "Your current score is "; score2
    COLOR 12, 0
    LOCATE 5, 1
    PRINT "Score to beat is "; score1
    IF score2 >= 22 THEN
        COLOR red
        PRINT player2name$;
        INPUT " went over 21! (Press <ENTER> to continue)", g$
        GOSUB winner
        donegame2 = true
    END IF
ELSEIF dicechoice = 2 THEN
        GOSUB winner
        donegame2 = true
ELSEIF dicechoice = 3 THEN
        donegame2 = true
ELSE
        BEEP
END IF
x = x + 1
IF x = 2 THEN
        x = 1
END IF
WEND
RETURN
'****************************************************************************
computer:
CLS
player2name$ = "Computer"
donegame2 = false
WHILE NOT donegame2
RANDOMIZE TIMER
LOCATE 1, 30
COLOR 9
PRINT "Computer"
IF score2 < score1 AND score1 <= 21 THEN
    shake = INT(RND * 11) + 2
    COLOR 15
    LOCATE 2, 30
    PRINT "Your previous score was "; score2
    LOCATE 3, 30
    PRINT "Your current roll is "; shake
    LOCATE 4, 30
    COLOR 10
    score2 = score2 + shake
    PRINT "Your current score is "; score2
    COLOR 12, 0
    LOCATE 5, 30
    PRINT "Score to beat is "; score1
    IF score2 >= 22 THEN
        COLOR 0, 0
        LOCATE 12, 30
        PRINT "                                                            "
        COLOR red
        PRINT player2name$;
        INPUT " went over 21! (Press <ENTER> to continue)", g$
        GOSUB winner
        GOTO end1
    END IF
ELSE
        donegame2 = true
END IF
IF score2 > score1 THEN
        donegame2 = true
END IF
IF score2 >= 17 THEN
        COLOR 10, 0
        LOCATE 12, 30
        INPUT "(Press <ENTER> to continue)                  ", g$
        GOSUB winner
        GOTO end1
END IF
COLOR 12
LOCATE 12, 30
PRINT "Please Wait... (It's the computer's turn)"
SLEEP 2
WEND
GOSUB winner
end1:
RETURN
'****************************************************************************
winner:
CLS
IF gamechoice1 = 1 THEN
        player2name$ = "Computer"
END IF
COLOR 26
IF score1 > score2 AND score1 <= 21 THEN
        COLOR 26
        LOCATE 12, 30
        PRINT "Congratulations ";
        COLOR 20
        PRINT player1name$;
        COLOR 26
        PRINT ", You won!!!"
ELSEIF score2 > score1 AND score2 <= 21 THEN
        LOCATE 12, 30
        PRINT "Congratulations ";
        COLOR 20
        PRINT player2name$;
        COLOR 26
        PRINT ", You won!!!"
ELSEIF score1 = score2 THEN
        LOCATE 12, 30
        COLOR 20
        PRINT player1name$;
        COLOR 26
        PRINT " tied with ";
        COLOR 20
        PRINT player2name$
ELSEIF score1 >= 22 THEN
        LOCATE 12, 30
        COLOR 26
        PRINT "Congratulations ";
        COLOR 20
        PRINT player2name$;
        COLOR 26
        PRINT ", You won!!!"
ELSEIF score2 >= 22 THEN
        LOCATE 12, 30
        PRINT "Congratulations ";
        COLOR 20
        PRINT player1name$;
        COLOR 26
        PRINT ", You won!!!"
END IF
LOCATE 13, 30
COLOR 4
PRINT player1name$; "'s";
COLOR 9
PRINT " score was ";
COLOR 2
PRINT score1
LOCATE 14, 30
COLOR 4
PRINT player2name$; "'s";
COLOR 9
PRINT " score was ";
COLOR 2
PRINT score2
LOCATE 15, 30
COLOR 2
INPUT "(Press <ENTER> to continue)", g$
RETURN
'****************************************************************************
mycls:
COLOR 0, 0
LOCATE 14, 52
PRINT "          "
LOCATE 15, 1
PRINT "                                                                "
RETURN
'****************************************************************************
setup2:
score1 = 0
score2 = 0
RETURN
'****************************************************************************

