Posts: 22
Threads: 8
Joined: Oct 2004
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.
Posts: 22
Threads: 8
Joined: Oct 2004
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.
Posts: 6,419
Threads: 74
Joined: Mar 2002
EXIT WHILE
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
....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...