Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
while loop problems
#1
my while loop isnt stopping for me in my blackjack program. it wont stop my program from giving a card to the player1 when a hit is asked for.
ife is Short Lets pick on it.
Reply
#2
here is my code:

Code:
'Blackjack with Funtions
'Functions
DECLARE SUB cardselect ()
DECLARE SUB playertotal ()
DECLARE SUB cpuselect ()
DECLARE SUB cputotal ()
DECLARE SUB playerhit ()
DECLARE SUB cpuhit ()
DIM SHARED playercxrdz(5)
COMMON SHARED cpusum, sum

'Main Program
CLS
PRINT "Player1"
PRINT "___________"
cardselect
playerhit

PRINT ""
PRINT "Player Total"
PRINT "____________"
playertotal

PRINT ""
PRINT "Cpu/Player2"
PRINT "___________"
cpuselect

PRINT ""
PRINT "Cpu/Player2"
PRINT "___________"
cpuhit
cputotal

SUB cardselect
        RANDOMIZE TIMER                   'randomizing chances of drawing same card
        FOR i = 0 TO 1                    'looping
        card = RND * 3                    'card suit randomizing
        IF pickcard < 1 THEN              'pick suit
                PRINT "Clubs"
                ELSEIF pickcard < 2 AND pickcard > 1 THEN
                PRINT "Diamonds"
                ELSEIF pickcard < 3 AND pickcard > 2 THEN
                PRINT "Spades"
                ELSEIF pickcard < 4 AND pickcard > 3 THEN
                PRINT "Hearts"
                END IF

        cardvalue = RND * 12              'card randomizing
        IF cardvalue < 1 THEN             'pick card
                PRINT "2"
                ELSEIF cardvalue < 2 AND cardvalue > 1 THEN
                PRINT "3"
                ELSEIF cardvalue < 3 AND cardvalue > 2 THEN
                PRINT "4"
                ELSEIF cardvalue < 4 AND cardvalue > 3 THEN
                PRINT "5"
                ELSEIF cardvalue < 5 AND cardvalue > 4 THEN
                PRINT "6"
                ELSEIF cardvalue < 6 AND cardvalue > 5 THEN
                PRINT "7"
                ELSEIF cardvalue < 7 AND cardvalue > 6 THEN
                PRINT "8"
                ELSEIF cardvalue < 8 AND cardvalue > 7 THEN
                PRINT "9"
                ELSEIF cardvalue < 9 AND cardvalue > 8 THEN
                PRINT "10"
                ELSEIF cardvalue > 9 AND cardvalue < 10 THEN
                        PRINT "Jack"
                        ELSEIF cardvalue > 10 AND cardvalue < 11 THEN
                        PRINT "Queen"
                        ELSEIF cardvalue > 11 AND cardvalue < 12 THEN
                        PRINT "King"
                ELSEIF cardvalue < 13 AND cardvalue > 12 THEN
                PRINT "Ace"
                END IF
        
        IF cardvalue < 1 THEN             'pick value
                cardvalue = 2
                ELSEIF cardvalue < 2 AND cardvalue > 1 THEN
                cardvalue = 3
                ELSEIF cardvalue < 3 AND cardvalue > 2 THEN
                cardvalue = 4
                ELSEIF cardvalue < 4 AND cardvalue > 3 THEN
                cardvalue = 5
                ELSEIF cardvalue < 5 AND cardvalue > 4 THEN
                cardvalue = 6
                ELSEIF cardvalue < 6 AND cardvalue > 5 THEN
                cardvalue = 7
                ELSEIF cardvalue < 7 AND cardvalue > 6 THEN
                cardvalue = 8
                ELSEIF cardvalue < 8 AND cardvalue > 7 THEN
                cardvalue = 9
                ELSEIF cardvalue < 9 AND cardvalue > 8 THEN
                cardvalue = 10
                ELSEIF cardvalue > 9 AND cardvalue < 10 THEN
                        cardvalue = 10
                        ELSEIF cardvalue > 10 AND cardvalue < 11 THEN
                        cardvalue = 10
                        ELSEIF cardvalue > 11 AND cardvalue < 12 THEN
                        cardvalue = 10
                ELSEIF cardvalue < 13 AND cardvalue > 12 THEN
                cardvalue = 11
                END IF
        
        playercxrdz(i) = cardvalue    'storage of card values
        sum = cardvalue
        NEXT i                        'end loop
END SUB



SUB cpuhit
        WHILE cpusum <= 16
                IF cardvalue < 16 THEN
                card = RND * 3                    'card suit randomizing
                END IF
                IF pickcard < 1 THEN              'pick suit
                PRINT "Clubs"
                END IF
                IF pickcard < 2 AND pickcard > 1 THEN
                PRINT "Diamonds"
                END IF
                IF pickcard < 3 AND pickcard > 2 THEN
                PRINT "Spades"
                END IF
                IF pickcard < 4 AND pickcard > 3 THEN
                PRINT "Hearts"
                END IF

                cardvalue2 = RND * 12              'card randomizing
                IF cardvalue2 < 1 THEN             'pick card
                PRINT "2"
                END IF
                IF cardvalue2 < 2 AND cardvalue2 > 1 THEN
                PRINT "3"
                END IF
                IF cardvalue2 < 3 AND cardvalue2 > 2 THEN
                PRINT "4"
                END IF
                IF cardvalue2 < 4 AND cardvalue2 > 3 THEN
                PRINT "5"
                END IF
                IF cardvalue2 < 5 AND cardvalue2 > 4 THEN
                PRINT "6"
                END IF
                IF cardvalue2 < 6 AND cardvalue2 > 5 THEN
                PRINT "7"
                END IF
                IF cardvalue2 < 7 AND cardvalue2 > 6 THEN
                PRINT "8"
                END IF
                IF cardvalue2 < 8 AND cardvalue2 > 7 THEN
                PRINT "9"
                END IF
                IF cardvalue2 < 9 AND cardvalue2 > 8 THEN
                PRINT "10"
                END IF
                IF cardvalue2 > 9 AND cardvalue2 < 10 THEN
                PRINT "Jack"
                END IF
                IF cardvalue2 > 10 AND cardvalue2 < 11 THEN
                PRINT "Queen"
                END IF
                IF cardvalue2 > 11 AND cardvalue2 < 12 THEN
                PRINT "King"
                END IF
                IF cardvalue2 < 13 AND cardvalue2 > 12 THEN
                PRINT "Ace"
                END IF
    
                IF cardvalue2 < 1 THEN             'pick value
                cardvalue2 = 2
                END IF
                IF cardvalue2 < 2 AND cardvalue2 > 1 THEN
                cardvalue2 = 3
                END IF
                IF cardvalue2 < 3 AND cardvalue2 > 2 THEN
                cardvalue2 = 4
                END IF
                IF cardvalue2 < 4 AND cardvalue2 > 3 THEN
                cardvalue2 = 5
                END IF
                IF cardvalue2 < 5 AND cardvalue2 > 4 THEN
                cardvalue2 = 6
                END IF
                IF cardvalue2 < 6 AND cardvalue2 > 5 THEN
                cardvalue2 = 7
                END IF
                IF cardvalue2 < 7 AND cardvalue2 > 6 THEN
                cardvalue2 = 8
                END IF
                IF cardvalue2 < 8 AND cardvalue2 > 7 THEN
                cardvalue2 = 9
                END IF
                IF cardvalue2 < 9 AND cardvalue2 > 8 THEN
                cardvalue2 = 10
                END IF
                IF cardvalue2 > 9 AND cardvalue2 < 10 THEN
                        cardvalue2 = 10
                        END IF
                        IF cardvalue2 > 10 AND cardvalue2 < 11 THEN
                        cardvalue2 = 10
                        END IF
                        IF cardvalue2 > 11 AND cardvalue2 < 12 THEN
                        cardvalue2 = 10
                        END IF
                IF cardvalue2 < 13 AND cardvalue > 12 THEN
                cardvalue2 = 11
                END IF

        cpusum = cpusum + cardvalue2
        playercxrdz(5) = cardvalue    'storage of card values
        WEND                        'end loop


END SUB

SUB cpuselect
        RANDOMIZE TIMER                   'randomizing chances of drawing same card
        card = RND * 3                    'card suit randomizing
        IF pickcard < 1 THEN              'pick suit
                PRINT "Clubs"
                END IF
                IF pickcard < 2 AND pickcard > 1 THEN
                PRINT "Diamonds"
                END IF
                IF pickcard < 3 AND pickcard > 2 THEN
                PRINT "Spades"
                END IF
                IF pickcard < 4 AND pickcard > 3 THEN
                PRINT "Hearts"
                END IF

        cardvalue = RND * 12              'card randomizing
        IF cardvalue < 1 THEN             'pick card
                PRINT "2"
                END IF
                IF cardvalue < 2 AND cardvalue > 1 THEN
                PRINT "3"
                END IF
                IF cardvalue < 3 AND cardvalue > 2 THEN
                PRINT "4"
                END IF
                IF cardvalue < 4 AND cardvalue > 3 THEN
                PRINT "5"
                END IF
                IF cardvalue < 5 AND cardvalue > 4 THEN
                PRINT "6"
                END IF
                IF cardvalue < 6 AND cardvalue > 5 THEN
                PRINT "7"
                END IF
                IF cardvalue < 7 AND cardvalue > 6 THEN
                PRINT "8"
                END IF
                IF cardvalue < 8 AND cardvalue > 7 THEN
                PRINT "9"
                END IF
                IF cardvalue < 9 AND cardvalue > 8 THEN
                PRINT "10"
                END IF
                IF cardvalue > 9 AND cardvalue < 10 THEN
                        PRINT "Jack"
                        END IF
                        IF cardvalue > 10 AND cardvalue < 11 THEN
                        PRINT "Queen"
                        END IF
                        IF cardvalue > 11 AND cardvalue < 12 THEN
                        PRINT "King"
                        END IF
                IF cardvalue < 13 AND cardvalue > 12 THEN
                PRINT "Ace"
                END IF
      
        IF cardvalue < 1 THEN             'pick value
                cardvalue = 2
                END IF
                IF cardvalue < 2 AND cardvalue > 1 THEN
                cardvalue = 3
                END IF
                IF cardvalue < 3 AND cardvalue > 2 THEN
                cardvalue = 4
                END IF
                IF cardvalue < 4 AND cardvalue > 3 THEN
                cardvalue = 5
                END IF
                IF cardvalue < 5 AND cardvalue > 4 THEN
                cardvalue = 6
                END IF
                IF cardvalue < 6 AND cardvalue > 5 THEN
                cardvalue = 7
                END IF
                IF cardvalue < 7 AND cardvalue > 6 THEN
                cardvalue = 8
                END IF
                IF cardvalue < 8 AND cardvalue > 7 THEN
                cardvalue = 9
                END IF
                IF cardvalue < 9 AND cardvalue > 8 THEN
                cardvalue = 10
                END IF
                IF cardvalue > 9 AND cardvalue < 10 THEN
                cardvalue = 10
                END IF
                IF cardvalue > 10 AND cardvalue < 11 THEN
                cardvalue = 10
                END IF
                IF cardvalue > 11 AND cardvalue < 12 THEN
                cardvalue = 10
                END IF
                IF cardvalue < 13 AND cardvalue > 12 THEN
                cardvalue = 11
                END IF
      
        cpusum = cardvalue
      
        WHILE cpusum <= 16
                IF cardvalue < 16 THEN
                card = RND * 3                    'card suit randomizing
                END IF
                IF pickcard < 1 THEN              'pick suit
                PRINT "Clubs"
                END IF
                IF pickcard < 2 AND pickcard > 1 THEN
                PRINT "Diamonds"
                END IF
                IF pickcard < 3 AND pickcard > 2 THEN
                PRINT "Spades"
                END IF
                IF pickcard < 4 AND pickcard > 3 THEN
                PRINT "Hearts"
                END IF

                cardvalue2 = RND * 12              'card randomizing
                IF cardvalue2 < 1 THEN             'pick card
                PRINT "2"
                END IF
                IF cardvalue2 < 2 AND cardvalue2 > 1 THEN
                PRINT "3"
                END IF
                IF cardvalue2 < 3 AND cardvalue2 > 2 THEN
                PRINT "4"
                END IF
                IF cardvalue2 < 4 AND cardvalue2 > 3 THEN
                PRINT "5"
                END IF
                IF cardvalue2 < 5 AND cardvalue2 > 4 THEN
                PRINT "6"
                END IF
                IF cardvalue2 < 6 AND cardvalue2 > 5 THEN
                PRINT "7"
                END IF
                IF cardvalue2 < 7 AND cardvalue2 > 6 THEN
                PRINT "8"
                END IF
                IF cardvalue2 < 8 AND cardvalue2 > 7 THEN
                PRINT "9"
                END IF
                IF cardvalue2 < 9 AND cardvalue2 > 8 THEN
                PRINT "10"
                END IF
                IF cardvalue2 > 9 AND cardvalue2 < 10 THEN
                PRINT "Jack"
                END IF
                IF cardvalue2 > 10 AND cardvalue2 < 11 THEN
                PRINT "Queen"
                END IF
                IF cardvalue2 > 11 AND cardvalue2 < 12 THEN
                PRINT "King"
                END IF
                IF cardvalue2 < 13 AND cardvalue2 > 12 THEN
                PRINT "Ace"
                END IF
    
                IF cardvalue2 < 1 THEN             'pick value
                cardvalue2 = 2
                END IF
                IF cardvalue2 < 2 AND cardvalue2 > 1 THEN
                cardvalue2 = 3
                END IF
                IF cardvalue2 < 3 AND cardvalue2 > 2 THEN
                cardvalue2 = 4
                END IF
                IF cardvalue2 < 4 AND cardvalue2 > 3 THEN
                cardvalue2 = 5
                END IF
                IF cardvalue2 < 5 AND cardvalue2 > 4 THEN
                cardvalue2 = 6
                END IF
                IF cardvalue2 < 6 AND cardvalue2 > 5 THEN
                cardvalue2 = 7
                END IF
                IF cardvalue2 < 7 AND cardvalue2 > 6 THEN
                cardvalue2 = 8
                END IF
                IF cardvalue2 < 8 AND cardvalue2 > 7 THEN
                cardvalue2 = 9
                END IF
                IF cardvalue2 < 9 AND cardvalue2 > 8 THEN
                cardvalue2 = 10
                END IF
                IF cardvalue2 > 9 AND cardvalue2 < 10 THEN
                        cardvalue2 = 10
                        END IF
                        IF cardvalue2 > 10 AND cardvalue2 < 11 THEN
                        cardvalue2 = 10
                        END IF
                        IF cardvalue2 > 11 AND cardvalue2 < 12 THEN
                        cardvalue2 = 10
                        END IF
                IF cardvalue2 < 13 AND cardvalue > 12 THEN
                cardvalue2 = 11
                END IF

        cpusum = cpusum + cardvalue2
        playercxrdz(5) = cardvalue    'storage of card values
        WEND                        'end loop


END SUB

SUB cputotal
        FOR i = 0 TO 4
                
                NEXT i
       PRINT cpusum

END SUB

SUB playerhit
        WHILE sum <= 16
        INPUT choice$
        IF choice$ = "No" THEN
        PRINT sum
        END IF
        IF choice$ = "Yes" THEN
        card = RND * 3                    'card suit randomizing
        IF pickcard < 1 THEN              'pick suit
                PRINT "Clubs"
                ELSEIF pickcard < 2 AND pickcard > 1 THEN
                PRINT "Diamonds"
                ELSEIF pickcard < 3 AND pickcard > 2 THEN
                PRINT "Spades"
                ELSEIF pickcard < 4 AND pickcard > 3 THEN
                PRINT "Hearts"
                END IF

        cardvalue = RND * 12              'card randomizing
        IF cardvalue < 1 THEN             'pick card
                PRINT "2"
                ELSEIF cardvalue < 2 AND cardvalue > 1 THEN
                PRINT "3"
                ELSEIF cardvalue < 3 AND cardvalue > 2 THEN
                PRINT "4"
                ELSEIF cardvalue < 4 AND cardvalue > 3 THEN
                PRINT "5"
                ELSEIF cardvalue < 5 AND cardvalue > 4 THEN
                PRINT "6"
                ELSEIF cardvalue < 6 AND cardvalue > 5 THEN
                PRINT "7"
                ELSEIF cardvalue < 7 AND cardvalue > 6 THEN
                PRINT "8"
                ELSEIF cardvalue < 8 AND cardvalue > 7 THEN
                PRINT "9"
                ELSEIF cardvalue < 9 AND cardvalue > 8 THEN
                PRINT "10"
                ELSEIF cardvalue > 9 AND cardvalue < 10 THEN
                        PRINT "Jack"
                        ELSEIF cardvalue > 10 AND cardvalue < 11 THEN
                        PRINT "Queen"
                        ELSEIF cardvalue > 11 AND cardvalue < 12 THEN
                        PRINT "King"
                ELSEIF cardvalue < 13 AND cardvalue > 12 THEN
                PRINT "Ace"
                END IF
      
        IF cardvalue < 1 THEN             'pick value
                cardvalue = 2
                ELSEIF cardvalue < 2 AND cardvalue > 1 THEN
                cardvalue = 3
                ELSEIF cardvalue < 3 AND cardvalue > 2 THEN
                cardvalue = 4
                ELSEIF cardvalue < 4 AND cardvalue > 3 THEN
                cardvalue = 5
                ELSEIF cardvalue < 5 AND cardvalue > 4 THEN
                cardvalue = 6
                ELSEIF cardvalue < 6 AND cardvalue > 5 THEN
                cardvalue = 7
                ELSEIF cardvalue < 7 AND cardvalue > 6 THEN
                cardvalue = 8
                ELSEIF cardvalue < 8 AND cardvalue > 7 THEN
                cardvalue = 9
                ELSEIF cardvalue < 9 AND cardvalue > 8 THEN
                cardvalue = 10
                ELSEIF cardvalue > 9 AND cardvalue < 10 THEN
                        cardvalue = 10
                        ELSEIF cardvalue > 10 AND cardvalue < 11 THEN
                        cardvalue = 10
                        ELSEIF cardvalue > 11 AND cardvalue < 12 THEN
                        cardvalue = 10
                ELSEIF cardvalue < 13 AND cardvalue > 12 THEN
                cardvalue = 11
                END IF
      
        playercxrdz(i) = cardvalue    'storage of card values
      
        END IF
        PRINT sum
        WEND
END SUB

SUB playertotal
        FOR i = 0 TO 4
                sum = sum + playercxrdz(i)
                NEXT i
       PRINT sum
END SUB
ife is Short Lets pick on it.
Reply
#3
EXIT WHILE Tongue

Oh, and by the way:

Code:
cardvalue = RND * 12              'card randomizing
        IF cardvalue < 1 THEN             'pick card
                PRINT "2"
                END IF
        IF cardvalue < 2 AND cardvalue > 1 THEN
                PRINT "3"
                END IF
       [...]

Better this:

Code:
cardvalue = INT(RND*12) + 2

PRINT cardvalue
SCUMM (the band) on Myspace!
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i
Reply
#4
....when you do RND * n you only get n number of possible values.

so rnd * 12 will return 12 possible values... (0 to 11) a deck of cards has 13 cards, not 12 anyways, so if you do this

a = rnd * 13, youll get a random number from 0 to 12 (13 numbers)

nath pointed you in the right direction, youll want to do

cardvalue = int(RND * 13) + 1, to have 1 thru 13 as the possibilities...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)