April 10th, 2019 at 2:01:57 PM
permalink

Quote:michael99000Quote:beachbumbabsQuote:WizardAny comments on the following strategy?

- Never play a heart, unless it's your only choice.
- Given the choice of multiple non-heart cards to play, play the one with fewer outs. For any given card, the number of outs is the number of remaining cards that match in rank or suit, not counting hearts.

Here is an example:

The 3c has 13 outs -- the 11 clubs left in the deck and 2 non-heart threes.

The 8c has 12 outs -- the 11 clubs left in the deck and the 1 non-heart eight.

So, play the 8c, because it has fewer outs.

Any situations this advice doesn't cover?

Bad example? 2 non-heart 8s remain.

Isn’t that why he’s saying hold onto the 3? Because the last dealer card is more likely to be a 3 than an 8

No, because the examples have the same number of outs remaining. Rank doesnt mattter when the dealer has a heart. its a free play, no bonus for matching rank. 11 clubs, 8S, 8D is 13 outs, and any heart is more outs, but is equally true for both.

Maybe I'm missing something?

If the House lost every hand, they wouldn't deal the game.

April 10th, 2019 at 7:34:03 PM
permalink

I really want to like this game but the HE just kills it. It's fun to play as long as you're not betting money on the outcome.

Have you tried 22 tonight? I said 22.

April 10th, 2019 at 10:15:19 PM
permalink

Quote:GialmereI really want to like this game but the HE just kills it. It's fun to play as long as you're not betting money on the outcome.

That's really easy to fix. Pay 20 or 25 to 1 for 5 hearts on the Hearts paytable. It only happens about 1 in 400 hands. That would bring the effective HE down around 2%, which is the sweet spot.

But I agree. I wouldn't play it with this paytable. As I mentioned before, I was seeing a steady drain that was too fast on the demo. Nice to have the math to confirm that, thanks Wiz and Miplet.

If the House lost every hand, they wouldn't deal the game.

April 10th, 2019 at 10:30:55 PM
permalink

I analyzed the base game today. Please revisit my Heart Attack page for the details. Bottom line is an expected loss of 3.89% of combined money bet between the Ante and Hearts bets, which is in the sweet spot for profitability for a new game where there won't be a lot of meat on the bone of player error.

On paper, this game seems rather complicated and out of left field, but after playing it a bit, I kind of like it. It seems like I lose more than 3.89%, but that's based on a small sample size.

I welcome all comments on my page.

On paper, this game seems rather complicated and out of left field, but after playing it a bit, I kind of like it. It seems like I lose more than 3.89%, but that's based on a small sample size.

I welcome all comments on my page.

It's not whether you win or lose; it's whether or not you had a good bet.

April 10th, 2019 at 10:48:48 PM
permalink

What happens if there are 3 hearts among the 6 cards in play, but the player makes strategy mistakes and does not discard all 3 of his cards? Would the hearts bet still win the 1-1 payout?

On the rack card, there is a comma between the words “Ante” and “and” that makes this confusing.

On the rack card, there is a comma between the words “Ante” and “and” that makes this confusing.

April 10th, 2019 at 11:48:11 PM
permalink

House Edge calculation always assumes players make the best choice at each stage. Where there are three Hearts in play then each turn should either have the Dealer play a Heart or the Player play a Heart, but not both. Thus the Player should always be able to win. With four or more Hearts in play, sometimes the Player will also have to play a Heart, but will always win.Quote:michael99000...if there are 3 hearts among the 6 cards in play...player makes strategy mistakes...

April 11th, 2019 at 5:16:07 AM
permalink

Quote:michael99000What happens if there are 3 hearts among the 6 cards in play, but the player makes strategy mistakes and does not discard all 3 of his cards? Would the hearts bet still win the 1-1 payout?

On the rack card, there is a comma between the words “Ante” and “and” that makes this confusing.

The player MUST lay all three cards for the hearts bet to pay. Especially because this game is new and a bit tricky at first, I do think that the dealer would allow the player to re-arrange the cards if there is a combination that would result in all three cards being laid (except for in non-heart situations where there was a 50/50 choice as described a few posts back)

The only error I can think of would be a player playing a Heart when they shouldn’t on a dealer’s heart:

AH 3D 6S vs X X 7H

Lay 6S

AH 3D vs X 8H 7H

For some reason lay AH

3D vs 2C 8H 7H

Lose both the ante and Hearts bet.

Based on the amount of coaching that was going on, neither the dealer nor pitboss would allow this error. They would have said “don’t play a heart on a heart if you have another card available” and likely would’ve just swapped the cards on the players layout to show they went out.

Maybe this will change once the game has been around a while (years maybe) when not every single person playing is new.

If anyone thinks this is optimistic or unlikely, I would try thinking of it as a rule of the game “player may only lay hearts on a dealer heart if it is the only option”. That’s how the dealer and PB were coaching

HOWEVER in the demo it will let you make this mistake and you will lose both bets

Last edited by: GBAM on Apr 11, 2019

April 11th, 2019 at 7:31:48 AM
permalink

Here is my code, in the unlikely event anyone cares.

#include <iostream>

#include <fstream>

#include <stdlib.h>

#include <string.h>

#include <math.h>

#include <time.h>

#include <stdio.h>

using namespace std;

struct card

{

int r;

int s;

int in;

};

void ante(void);

void attack(void);

int score(card player[]);

void sort(card player[]);

void main(void)

{

int ch;

cerr << "1. Attack bet\n";

cerr << "2. Ante bet\n";

cin >> ch;

if (ch==1)

attack();

else if (ch==2)

ante();

cerr << "Hit any key\n";

cin >> ch;

return;

}

void ante(void)

{

int i,j,k,z,d1,d2,d3,p1,p2,p3,out_array[3],card_played[3],win,tot_hearts;

card dealer[3],player[3],deck[52];

__int64 tot_win=0;

__int64 tot_loss=0;

__int64 card1loss=0;

__int64 card2loss=0;

__int64 card3loss=0;

__int64 count=0;

__int64 tot_hearts_array[52];

bool debug1=true;

for (i=0; i<=51; i++)

{

deck.r=(int)i/4;

deck.s=i%4;

deck.in=1;

tot_hearts_array=0;

}

for (i=0; i<=49; i++)

{

player[0]=deck;

deck.in=0;

cerr << i << "\n";

for (j=i+1; j<=50; j++)

{

player[1]=deck;

deck.in=0;

for (k=j+1; k<=51; k++)

{

count++;

deck[k].in=0;

player[2]=deck[k];

for (z=0; z<=2; z++)

card_played[z]=99;

for (d1=0; d1<=51; d1++)

{

if (deck[d1].in==1)

{

// if (debug1==true)

// cerr << "d1=" << d1 << "\t";

deck[d1].in=0;

dealer[0]=deck[d1];

for (z=0; z<=2; z++)

out_array[z]=0;

for (p1=0; p1<=2; p1++)

{

if ((dealer[0].s==0)||(player[p1].s==0)||(player[p1].r==dealer[0].r)||(player[p1].s==dealer[0].s)) // card may be played

{

if (player[p1].s==0)

out_array[p1]=52;

else // if ((player[p1].r==dealer[0].r)||(player[p1].s==dealer[0].s))

{

for (z=0; z<=51; z++)

{

if ((deck[z].in==1)&&(deck[z].s!=0)&&((deck[z].r==player[p1].r)||(deck[z].s==player[p1].s))) // out

out_array[p1]++;

}

}

}

}

if ((out_array[0]>0)||(out_array[1]>0)||(out_array[2]>0)) // at least one card may be played

{

if ((out_array[0]>0)&&((out_array[1]==0)||(out_array[0]<=out_array[1]))&&((out_array[2]==0)||(out_array[0]<=out_array[2])))

card_played[0]=0; // first card played is player card 1

else if ((out_array[1]>0)&&((out_array[2]==0)||(out_array[1]<=out_array[2])))

card_played[0]=1;

else

card_played[0]=2;

for (d2=0; d2<=51; d2++)

{

if (deck[d2].in==1)

{

deck[d2].in=0;

dealer[1]=deck[d2];

for (z=0; z<=2; z++)

out_array[z]=0;

for (p2=0; p2<=2; p2++)

{

if ((card_played[0]!=p2)&&((dealer[1].s==0)||(player[p2].s==0)||(player[p2].r==dealer[1].r)||(player[p2].s==dealer[1].s))) // card may be played

{

if (player[p2].s==0) // heart

out_array[p2]=52;

else

{

for (z=0; z<=51; z++)

{

if ((deck[z].in==1)&&(deck[z].s!=0)&&((deck[z].r==player[p2].r)||(deck[z].s==player[p2].s))) // out

out_array[p2]++;

}

}

}

} // end p2 for loop

if ((out_array[0]>0)||(out_array[1]>0)||(out_array[2]>0)) // card may be played

{

if ((card_played[0]!=0)&&(out_array[0]>0)&&((out_array[1]==0)||(out_array[0]<=out_array[1]))&&((out_array[2]==0)||(out_array[0]<=out_array[2])))

card_played[1]=0;

else if ((card_played[0]!=1)&&(out_array[1]>0)&&((out_array[2]==0)||(out_array[1]<=out_array[2])))

card_played[1]=1;

else

card_played[1]=2;

for (d3=0; d3<=51; d3++)

{

if (deck[d3].in==1)

{

dealer[2]=deck[d3];

win=0;

for (p3=0; p3<=2; p3++)

{

if ((card_played[0]!=p3)&&(card_played[1]!=p3)&&((dealer[2].s==0)||(player[p3].s==0)||(player[p3].r==dealer[2].r)||(player[p3].s==dealer[2].s))) // card may be played

{

tot_win++;

win=1;

tot_hearts=0;

for (z=0; z<=2; z++)

{

if (player[z].s==0)

tot_hearts++;

}

for (z=0; z<=2; z++)

{

if (dealer[z].s==0)

tot_hearts++;

}

tot_hearts_array[tot_hearts]++;

}

}

if (win==0)

{

tot_loss++;

card3loss++;

}

} // d3 in deck

// cerr << temp << "\t";

} // end d3 for loop

card_played[1]=99;

} // end player can play second card

else // can't play second card

{

card2loss+=47;

tot_loss+=47;

}

deck[d2].in=1;

} // d2 in deck

} // end d2 for loop */

card_played[0]=99;

} // can play card 1

else

{

card1loss+=2256;

tot_loss+=2256;

}

deck[d1].in=1;

} // end if (deck[d1].in==1)

} // end for d1 loop

deck[k].in=1;

}

deck.in=1;

}

deck.in=1;

}

__int64 count2=tot_win+card1loss+card2loss+card3loss;

printf("count=\t%I64i\n",count);

printf("Total wins=\t%I64i\n",tot_win);

printf("Total losses=\t%I64i\n",tot_loss);

printf("Can't play first card=\t%I64i\t%f\n",card1loss,(double)card1loss/(double)count2);

printf("Can't play second card=\t%I64i\t%f\n",card2loss,(double)card2loss/(double)count2);

printf("Can't play third card=\t%I64i\t%f\n",card3loss,(double)card3loss/(double)count2);

for (z=6; z>=0; z--)

printf("Hearts=\t%i\t%I64i\t%f\n",z,tot_hearts_array[z],(double)tot_hearts_array[z]/(double)count2);

printf("Total=\t%I64i\n",tot_loss+tot_win);

return;

}

void attack(void)

{

int i,j,k,sc,score_array[52];

card player[3],deck[52];

for (i=0; i<=51; i++)

{

deck.r=(int)i/4;

deck.s=i%4;

score_array=0;

}

for (i=0; i<=49; i++)

{

player[0]=deck;

for (j=i+1; j<=50; j++)

{

player[1]=deck;

for (k=j+1; k<=51; k++)

{

player[2]=deck[k];

sc=score(player);

score_array[sc]++;

}

}

}

for (i=7; i>=0; i--)

printf("%i\t%i\n",i,score_array);

return;

}

int score(card player[])

{

int i;

int tot_hearts=0;

card temp[3];

for (i=0; i<=2; i++)

{

temp=player;

if (temp.s==0)

tot_hearts++;

}

sort(player);

if ((temp[0].r==10)&&(tot_hearts==3))

return 7;

else if ((temp[1].r==1)&&(temp[2].r==12)&&(tot_hearts==3)) // wheel straight flush

return 6;

else if ((temp[0].r+2==temp[2].r)&&(tot_hearts==3)) // straight flush

return 6;

else if ((temp[0].r==temp[2].r)&&(tot_hearts>=1)) // three of a kind with a heart

return 5;

else if (tot_hearts==3) // flush in hearts

return 4;

else if ((temp[0].r==0)&&(temp[1].r==1)&&(temp[2].r==12)&&(tot_hearts>=1)) // wheel straight with heart

return 3;

else if ((temp[0].r+1==temp[1].r)&&(temp[1].r+1==temp[2].r)&&(tot_hearts>=1)) // straight with heart

return 3;

else if ((temp[0].r==temp[1].r)&&((temp[0].s==0)||(temp[1].s==0))) // pair in first two cards with a heart

return 2;

else if ((temp[1].r==temp[2].r)&&((temp[1].s==0)||(temp[2].s==0))) // pair in second two cards with a heart

return 2;

else if (tot_hearts==2)

return 1;

else

return 0;

}

void sort(card d[]) // lowest to highest

{

int i,j;

card hold;

for (i=1; i>=0; i--)

for (j=0; j<=i; j++)

if (d.r > d[j+1].r)

{

hold=d;

d=d[j+1];

d[j+1]=hold;

}

}

It's not whether you win or lose; it's whether or not you had a good bet.

April 11th, 2019 at 10:56:29 AM
permalink

I will be going back tomorrow to play this and other games. Are there any specific questions or things anyone would like me to look out for?

April 11th, 2019 at 11:36:28 AM
permalink

Quote:GBAMI will be going back tomorrow to play this and other games. Are there any specific questions or things anyone would like me to look out for?

Thanks for the offer. I can't think of anything to ask. However, I'd like just a picture of the game. I know casinos aren't big on photography, so understand if you can't do it.

It's not whether you win or lose; it's whether or not you had a good bet.