If Statement Question. Is nesting possible in GameSalad?
Guys, I'm new to Game Salad, but it definitely is easy to get the hang of and I am enjoying it so far... but I am having trouble understanding how limited or (unlimited) the "if" numeric functions are. Or if I'm making it more complicated than it has to be...
Here's my problem (if I can explain it without confusing you guys or (me anymore than I already am!))
I'm trying to create a card game app similar to Baccarat (same rules for the most part) where basically there are four cards drawn (2) sets of two cards each Banker and Player, and depending on the total value of which two cards the Player gets and the total value of the two cards the Banker gets is whether or not a third card is drawn on either side
For Example:
[Card 3 Banker] [Card 2 Banker][Card 1 Banker] | [Card 1 Player][Card 2 Player] [Card 3 Player]
Four Cards are dealt at first: Card 1,2 Banker and Card 1,2 Player
Card 3 Player is allowed to draw a card depending mostly on the total value of the Player's Two Cards.
Here are the basic rules:
If Player's or Bankers 1st two Cards total 8 or 9 neither side is allowed to draw a third card
The Players side also automatically stands on a Players 1st two card total of 6 or 7
The Bankers side automatically stands on a Bankers 7.
If the Player has a total of 0 through 5 he draws a 3rd card (as long as it doesn't contradict the rules above).
The Banker will only draw a 3rd card if the Players 3rd card is:
If Banker's 1st two cards total:
Banker 3: Player's 3rd card is 0,1,2,3,4,5,6,7,9, (Banker draws 3rd Card) (Banker stands only if Players 3rd card is an 8)
Banker 4: Player's 3rd card is 2-7 (Banker draws 3rd Card)
Banker 5: Player's 3rd card is 4-7 (Banker draws 3rd Card)
Banker 6: Player's 3rd card is 6-7 (Banker draws 3rd Card)
And here's where my issue is:
I have it pretty much working on the Players rules...
The issue is on the Banker's side:
Here's the basic setup of how I've set up my "IF" statements:
Player Side "Draw Card Button"
When "Any" of the following are happening:
if "Player 1st two card total" = 9
if "Player 1st two card total" = 8
if "Bankers 1st two card total" = 9
if "Banker 1st two card total" = 8
do
(left blank)
else
When "all" of the following are happening
Touch is "Pressed"
Change Attribute
set game.3rd card value Player to random 1,52
Bankers Side is basically the same and everything works like the Players side EXCEPT that because there are special rules dependent on the Players THIRD card is where I'm reaching a dead end...
I've tried making separate "if" statements after the "else" statement with no success... it the app still seems to let me draw cards even when I shouldnt be able to.
especially because I'm having to create if statements such as:
if players 1st two cards != 9
if players 1st two cards != 8
if players 1st two cards != 7
if players 1st two cards != 6
if Bankers 1st two cards != 9
if Bankers 1st two cards != 8
if Bankers 1st two cards != 7
if Bankers 1st two cards = 5
if Players 3rd cards = 8
do
(it should be nothing
else
Draw Card
It allows me to draw a card even when the totals say it shouldn't... (I have a display text statement for testing above each card and pairs)
if anyone can help or needs more info, we can discuss privately if need be...
also would it be easier using a table with all the possible combinations? the problem with that is that I don't know the procedures for comparing the card values against every possible combination each time a hand is dealt.
Thank in advance!
acrogod
Best Answer
-
tiger27 Posts: 127
@acrogod I created the random(1, 10) to pick a random number value for the card. You can change the number values into any number values you want. The 52 would end up making up random cards since obviously, nothing goes past 14 (or is it 15?) in a deck. To answer the second qusetion, I made quite a blunder! I forgot that Gamesalad doesn't recognize 0-5. Meaning, unfortunately, you will have to write each line individually. (i.e Game.Player1+2=0, Game.Player1+2=1, Game.Player1+2=2, etc.) This sounds like a cool app! Tell me how it goes.
Answers
This is a little complicated, but I'm trying to see what I can do.
What you describe is definitely possible. I'll see if I can find a time to make a demo but getting late here now, and hopefully @tiger27 has it covered
Contact me for custom work - Expert GS developer with 15 years of GS experience - Skype: armelline.support
So this means that if the banker's two cards total 3, they draw on everything but a player's 8.
If the banker's two cards total 4, they draw on a player's 2-7.
If the banker's two cards total 5, they draw on a player's 4-7.
If the banker's two cards total 6, they draw on a player's 6-7.
Is this correct?
Also, how can the player have a total of 0-1 for their first two cards? What are the possible cards to draw?
Contact me for custom work - Expert GS developer with 15 years of GS experience - Skype: armelline.support
Guys, Thanks for the response.
First, I want to say any help at all is appreciated! And hopefully I didn't make it more complicated than it has to be! Armelline, I should have also explained that in Baccarat, card values are A=1, 2-9 are equal to their face value and face cards are equal 0. if you add two or three cards together and they equal more than 10 or 20, you drop the tens value.
For Example:
8+J+8 would equal 6
A+7+5 would equal 3
and in the game (following the rules of Baccarat) people bet on either the Banker or the Player to win by having the the higher total score after the cards are drawn.
For Example:
a Baccarat Playing Field would be set up similar to this:
http://www.fastodds.com/images/games/baccarat_gold_650x488.jpg
In the image i've linked to, the Player wins 2-0 after the cards are drawn .
I'm just wondering if I've got to make a rule for every possible combination, in a specific order, and multiple copies of the rule.
Thanks again guys!
Also, as a side note, I'm technically not trying to totally recreate the game, but more of a teaching tool. for example, if you try to draw the 3rd card for either side and it goes against what's allowed by the rules of drawing the cards, it'll notify you that it's not allowed.
like I said before, I have the Player's side rules almost done because they are pretty much a static set of rules. The Banker's side rules are a pain in the butt, due to the fact that it depends on both the Banker's 1st two card total AND the Player's 3rd card as to whether the Banker draws another one.
So I'm not sure if I should do this (for each card):
I "All" are Happening:
If P1P2Total = A1
If P1P2Total = A2
If P1P2Total = A3
If P1P2Total != B1
If P1P2Total != B2
If P1P2Total != B3
If B1B2Total !=C1
If B1B2Total !=C2
If B1B2Total !=C3
If B1B2Total =D
If P3rdCard=E
do
draw B3rdCard
else
do nothing (or display notification saying card can not be drawn)
The problem with all the combinations of all the card totals and cards drawn, it can get messy trying to cover all the card totals and card combinations possible.
i have created a table that it pulls from with the card values and images (which makes shuffling easy)
In the table, the 10, J, Q, K values are all "0" so it makes it easier in calculating total card values (except for when adding 2 or 3 cards together which I have to drop the 10's value)
UGH!
Again, Thanks guys!
Hey I did it! I can't upload the project, so I'll give you the code here. But, first you need a table, a single actor and 8 attributes titled:
Player Gets 3rd (boolean)
Banker Gets 3rd (boolean)
Player Stand (boolean)
Banker Stand (boolean)
Player 1+2 (integer)
Banker 1+2 (integer)
Players 3rd= (integer)
Players 3rd= (integer)
The table's columns/rows should be:
Card 1 Card 2 Card 3
Player 0 0 0
Banker 0 0 0
Here's the code (In the one actor):
Hope that works! Tell me if it does not.
Tiger27, Thanks so much! I've spent the better part of the morning creating the actor, table and entering in the code. The only thing I have left to do is wrap my brain around what each rule does specifically... I can interpret most of it, but trying to see how I can fit it into what I already have is a bit tricky... only because I'm new at this. But it does make more sense than how I had it set up.
There are a few additional rules I have to set up in there such as the 667, 547, 427 rule... (see above) unless I'm missing where it is in the code you've provided...
I have a few questions to clarify:
Question 1:
Are the random functions (1-10) just simulating the card shuffling for each card?
I only ask, because the way I have it set up is a table that basically goes:
4 columns:
Card Name (ex: Ace of Clubs)
Card Value (0-9 repeatedly)
Image Name (each playing card image name)
Row Number (1-54 to include the card back & card blank image (this column's probably redundant))
54 rows:
The way I shuffle is to pull a random number from 1-52 and have the change attribute show that image from the Column 4.
tableCellValue(CardTable,Random(1,52),4)
It works great since a normal Baccarat shoe is 8 decks, I don't have to worry about using up all 52 cards.
Question 2:
When you have a Rule such as:
<---- Rule If ALL of the following are happening Game.Player1+2=0-5 Game.PlayerStand is false ---->
Do I have to create a line for each 0 thru 5
ex:
or does Game Salad recognize the syntax:
Anyway, Thanks for the work so far... and I apologize for any questions that sound like TOO much of a novice!
acrogod
Glad I could help!