beachbumbabs
Administrator
beachbumbabs
Joined: May 21, 2013
  • Threads: 99
  • Posts: 14229
April 10th, 2019 at 2:01:57 PM permalink
Quote: michael99000

Quote: beachbumbabs

Quote: Wizard

Any comments on the following strategy?

  1. Never play a heart, unless it's your only choice.
  2. 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.
Gialmere
Gialmere
Joined: Nov 26, 2018
  • Threads: 37
  • Posts: 1593
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.
beachbumbabs
Administrator
beachbumbabs
Joined: May 21, 2013
  • Threads: 99
  • Posts: 14229
Thanks for this post from:
Gialmere
April 10th, 2019 at 10:15:19 PM permalink
Quote: Gialmere

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.



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.
Wizard
Administrator
Wizard
Joined: Oct 14, 2009
  • Threads: 1331
  • Posts: 21908
Thanks for this post from:
MrCasinoGames
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.
It's not whether you win or lose; it's whether or not you had a good bet.
michael99000
michael99000
Joined: Jul 10, 2010
  • Threads: 9
  • Posts: 2107
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.
charliepatrick
charliepatrick
Joined: Jun 17, 2011
  • Threads: 32
  • Posts: 2111
April 10th, 2019 at 11:48:11 PM permalink
Quote: michael99000

...if there are 3 hearts among the 6 cards in play...player makes strategy mistakes...

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.
GBAM
GBAM
Joined: Feb 26, 2019
  • Threads: 9
  • Posts: 82
April 11th, 2019 at 5:16:07 AM permalink
Quote: michael99000

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.



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
Wizard
Administrator
Wizard
Joined: Oct 14, 2009
  • Threads: 1331
  • Posts: 21908
Thanks for this post from:
miplet
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.
GBAM
GBAM
Joined: Feb 26, 2019
  • Threads: 9
  • Posts: 82
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?
Wizard
Administrator
Wizard
Joined: Oct 14, 2009
  • Threads: 1331
  • Posts: 21908
April 11th, 2019 at 11:36:28 AM permalink
Quote: GBAM

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?



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.

  • Jump to: