Newbie Question (If Statements)

nyr1man

New member
Joined
Nov 12, 2004
Messages
2
Programming Experience
Beginner
Have to write a concentration (memory) game for my beginners VB class at college. Having a little trouble with some of my syntax. What I am trying to do is use IF statements to compare each individual picturebox in order that I define them to the other pictureboxes I have defined before them. I am doing this to ensure that I end up with the exactly the right number of matches with no extra cards without matches. For example I have 28 cards in the game. Cards 1-14 are all different pictures. Cards 15-28 are the matches for the first 14 cards. What I want to do is randomely place these 28 cards on the board without duplicating any one of them twice so that the game ends with exacty 14 matches everytime. once I use the random statement to choose the first card I will use the random statement to choose the second card. I then want to use the if statement to say If card2 = card1 then choose another card until they don't match. Once card2 is a card not matching card1 I will then use the random statement to choose card three. Then I want to use the If statement to say if card3 = card2 or card1 choose another card until they don't match.

***Long story short is how do you use the if statement correctly to compare more than two items? (Ex: if card5 = card1 or card2 or card3 or card4 then) Any help would be greatly appreciated and if I have confused any on then I can try to make it clearer if necessary.***
 

ahbenshaut

Well-known member
Joined
Oct 29, 2004
Messages
62
Location
Alaska
Programming Experience
5-10
I think your If..statements should read:
if card5 = card1 OR card5=card2 OR card5=card3....then

hope that helps...
 

Paszt

Staff member
Joined
Jun 3, 2004
Messages
1,500
Location
Raleigh, NC - USA
Programming Experience
Beginner
To do the randomizing as you suggest, you could create an arraylist and add an object representing the picture to the arraylist each time one is selected (an integer from 1 to 28 for example). Before adding it, check to see if it already contains that object using the ArrayList.Contains function. If your random statement chooses a number from 1 to 28 each time, by the time you reach the 28 card, your chances of choosing the last available picture would be very low and it could take quite a bit of time to find.

I would suggest creating an arrayList containing integer values from 1 to 28 then randomize the list (there are many examples of how to randomize a list on the net). Then assign the picture to the card based on the new order of the list.
 

nyr1man

New member
Joined
Nov 12, 2004
Messages
2
Programming Experience
Beginner
Thank you both for your suggestions I was close actually in regards to the If statement. Was writing the syntax as If card5= card1 or card2 or card3 then.... not If card5-card1 or card5=card2 or if card5=card3 then.....

VB was not flagging it as incorrect code in the program but as soon as I ran it the program would end with a handler error.

As for the array suggestion - have never used arrays before, but might try it as I understand what you are saying in regards to the time it will take using the Random statement. Seeing as it has 28 cards to choose from it may take a while to finally come up with a card that has not been used by the time you get to the high 20's.
 

twiseman

New member
Joined
Nov 29, 2004
Messages
3
Programming Experience
Beginner
you may consider

You may consider using a select case statement to check against the multiple cards.
 
Top Bottom