
-----------------------------------
bradyman3
Mon Jan 03, 2011 11:05 pm

help?
-----------------------------------
I was wondering if you could help me out, I have a code i am working on. Its going to be a 21 game but i would like to create the possibility of all the cards being used and then it will stop the game with multiple players ( not sure how to have multi play, maybe with arrays?). i have the numbers generator working fine, it doesnt use the same number more than 4 times like in a deck of cards, but it seems to get caught up in a executing loop when the total cards used reaches around 32+. There should be a better way to regenerate a used number, maybe increase the number randomization range instead of 1 - 13 to say 1 - 52 (one number for each card)?
Thank you for your time, it is appreciated greatly!

THE code:

var rand_n, ace, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, total, used : int :=0
var card : string := ""


loop

        

if not total = 52 then

    randint(rand_n,1,13)
    
    loop
    
    used:=0
    
    
    
       if ace=4 and rand_n = 1 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 1        
                end loop
        
           used:=used+1
       
        end if 
        
       if two=4 and rand_n = 2 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 2        
                end loop
        
           used:=used+1
       
        end if 
        
       if three=4 and rand_n = 3 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 3        
                end loop
        
           used:=used+1
       
        end if 
        
       if four=4 and rand_n = 4 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 4        
                end loop
        
           used:=used+1
       
        end if 
        
       if five=4 and rand_n = 5 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 5        
                end loop
        
           used:=used+1
       
        end if 
        
       if six=4 and rand_n = 6 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 6        
                end loop
        
           used:=used+1
       
        end if 
        
       if seven=4 and rand_n = 7 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 7        
                end loop
        
           used:=used+1
       
        end if 

       if eight=4 and rand_n = 8 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 8        
                end loop
        
           used:=used+1
       
        end if 
        
       if nine=4 and rand_n = 9 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 9        
                end loop
        
           used:=used+1
       
        end if 
        
       if ten=4 and rand_n = 10 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 10        
                end loop
        
           used:=used+1
       
        end if 
        
       if jack=4 and rand_n = 11 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 11        
                end loop
        
           used:=used+1
       
        end if 
        
       if queen=4 and rand_n = 12 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 12        
                end loop
        
           used:=used+1
       
        end if 
        
       if king=4 and rand_n = 13 then
        
                loop
            
                     randint(rand_n,1,3)
                    
                exit when not rand_n = 13        
                end loop
        
           used:=used+1
       
        end if    
    
    exit when used=0
  end loop
    
elsif total = 52 then
put card

put skip

put ace
put two
put three
put four
put five
put six
put seven
put eight
put nine
put ten
put jack
put queen
put king

put skip

put total

put used

put "win!!"

Input.Pause
cls


    
end if


case rand_n of

label 1 : card := "Ace"

label 2 : card := "Two"

label 3 : card := "Three"

label 4 : card := "Four"

label 5 : card := "Five"

label 6 : card := "Six"

label 7 : card := "Seven"

label 8 : card := "Eight"

label 9 : card := "Nine"

label 10 : card := "Ten"

label 11 : card := "Jack"

label 12 : card := "Queen"

label 13 : card := "King"

label : card := "unknown"

end case

        if card = "Ace" and ace < 4 then

                ace := ace+1

        end if

        if card = "Two" and two < 4 then

                two := two+1

        end if

        if card = "Three" and three < 4 then

                three := three+1

        end if

        if card = "Four" and four < 4 then

                four := four+1

        end if

        if card = "Five" and five < 4 then

                five := five+1

        end if

        if card = "Six" and six < 4 then

                six := six+1

        end if

        if card = "Seven" and seven < 4 then

                seven := seven+1

        end if

        if card = "Eight" and eight < 4 then

                eight := eight+1

        end if

        if card = "Nine" and nine < 4 then

                nine := nine+1

        end if

        if card = "Ten" and ten < 4 then

                ten := ten+1

        end if

        if card = "Jack" and jack < 4 then

                jack := jack+1

        end if

        if card = "Queen" and queen < 4 then

                queen := queen+1

        end if

        if card = "King" and king < 4 then

                king := king+1

        end if

 
total:=ace+two+three+four+five+six+seven+eight+nine+ten+jack+queen+king   



put card

put skip

put ace
put two
put three
put four
put five
put six
put seven
put eight
put nine
put ten
put jack
put queen
put king

put skip

put total

put used


Input.Pause
cls

end loop

-----------------------------------
Tony
Mon Jan 03, 2011 11:28 pm

RE:help?
-----------------------------------
[code]
loop 

randint(rand_n,1,3) 

exit when not rand_n = 1 
end loop 
[/code]
There are better ways of picking between two random numbers.

[code]
loop 

randint(rand_n,1,3) 

exit when not rand_n = 13 
end loop 
[/code]
I'm not sure what's going on here, 1..3 is always not 13, isn't it?

-----------------------------------
TokenHerbz
Tue Jan 04, 2011 1:10 am

RE:help?
-----------------------------------
why not try using a record to hold card info, and an array to use that info. It would be alot easier.

Look up info on 2Darrays, even just arrays, and also "type" and "record".  I think it would be worth your while.
