Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Procedures and Array help
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
illu45




PostPosted: Wed Jun 01, 2005 5:17 pm   Post subject: Procedures and Array help

Hello all,

I'm having a problem with calling arrays inside procedures. I know that I can't call an entire array, but I don't know how to call just one of the elements of the array...

Here's what I have so far:

code:

var curcard : int
var pile : int := 0
var hand : array 1 .. 4 of int
var cardplayed : int
var AIhand : array 1 .. 4 of int

procedure GetHand (hand : string, card : int)
    randint (curcard, 1, 13)
    if curcard = 11 or curcard = 12 then
        curcard := 0
        hand (card) := curcard
    elsif curcard = 13 then
        curcard := -1
        hand (card) := curcard
    else
        hand (card) := curcard
    end if
end GetHand

procedure ChangePile (cardplayed : int)
    if hand (cardplayed) not= -1 then
        pile := pile + hand (cardplayed)
    else
        pile := 98
    end if
end ChangePile

procedure PutHand ()
    for count : 1 .. 4
        if hand (count) = 0 then
            put "Negator " ..
        elsif hand (count) = -1 then
            put "King " ..
        else
            put hand (count), " " ..
        end if
    end for
    put ""
end PutHand
for count : 1 .. 4
    GetHand ("hand", count)
end for

procedure Player ()
    put "Pile: ", pile
    put "You have : " ..
    PutHand ()
    put "Which card would you like to play? (1,2,3,4)"
    get cardplayed
    ChangePile (cardplayed)
    GetHand ("hand", cardplayed)
end Player

for count : 1 .. 4
    GetHand ("AIhand", count)
end for
procedure AI
    for count : 1 .. 4
        if AIhand (count) not= -1 then
            if AIhand (count) + pile <= 98 then
                if AIhand (count) > 0 then
                    cardplayed := AIhand (count)
                    ChangePile (cardplayed)
                    GetHand ("AIhand", count)
                else
                    cardplayed := AIhand (count)
                    ChangePile (cardplayed)
                    GetHand ("AIhand", count)
                end if
            end if
        else
            cardplayed := AIhand (count)
            ChangePile (cardplayed)
            GetHand ("AIhand", count)
        end if
    end for
end AI
loop
    exit when pile > 98
    Player ()
    AI ()
end loop



It crashes at procedure Gethand's ':='s, sayin that hand is not a variable...

Any ideas?
Sponsor
Sponsor
Sponsor
sponsor
Delos




PostPosted: Wed Jun 01, 2005 6:51 pm   Post subject: (No subject)

code:

procedure GetHand (hand : string, card : int)
    randint (curcard, 1, 13)
    if curcard = 11 or curcard = 12 then
        curcard := 0
        hand (card) := curcard
    elsif curcard = 13 then
        curcard := -1
        hand (card) := curcard
    else
        hand (card) := curcard
    end if
end GetHand


Of course 'hand' is not a variable. You've specified it in your parameters to be a string. Also, you have a Global Variable of the same name, but in the procedure, the local variable (the parameter) is taking precedence.

I don't personally like the idea of accessing global variables directly from within a procedure, but anyway...
Just change or completely omit the paramter 'hand' from the procedure. I don't see it's use anyway.

And actually, you can call an entire array...depending on what context you're thinking of:

Turing:

procedure initArr (inArr : array 1..* of int)
   for i : 1..upper(inArr)
      inArr(i) := i
   end for
end initArr

var myArr : array 1..5 of int
initArr (myArr)
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 2 Posts ]
Jump to:   


Style:  
Search: