CasinoGames/Baccarat
2026-01-24 16:29:44 -06:00
..
Baccarat Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-24 16:29:44 -06:00
Baccarat.xcodeproj updated privacy 2026-01-20 15:37:59 -06:00
BaccaratTests Signed-off-by: Matt Bruce <matt.bruce1@toyota.com> 2025-12-28 21:43:53 -06:00
BaccaratUITests Signed-off-by: Matt Bruce <matt.bruce1@toyota.com> 2025-12-28 22:27:44 -06:00
GAME_CENTER_PLAN.md Signed-off-by: Matt Bruce <matt.bruce1@toyota.com> 2025-12-28 21:43:53 -06:00
README.md Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-24 16:06:36 -06:00

Baccarat - Casino Card Game

A feature-rich Baccarat (Punto Banco) app for iOS built with SwiftUI. Experience authentic casino gameplay with side bets, road map history, and detailed statistics — all without risking real money.

Platform Swift SwiftUI

Features

🎓 First-Time User Experience

  • Welcome Sheet — Interactive introduction on first launch
  • Spotlight Walkthrough — Guided tour with spotlight focus on key UI elements
  • Sherpa Framework — Modern walkthrough with progress indicators and haptic feedback
  • Never Intrusive — All onboarding is skippable and shown only once

🎰 Authentic Punto Banco Gameplay

  • Complete Baccarat rules with automatic third card logic
  • Natural detection (8 or 9 on initial deal)
  • Multi-deck shoe support (1, 6, or 8 decks)
  • Animated card dealing with sound effects and haptics
  • Automatic shoe reshuffling with burn card

⚙️ Settings & Customization

  • Dealing animations toggle and adjustable dealing speed
  • Card reveal style: Auto (instant flip), Tap (per-card), Squeeze (peek/drag reveal)
  • Persistent preferences via iCloud sync

💰 Betting Options

Main Bets

Bet Type Payout House Edge
Player 1:1 1.24%
Banker 0.95:1 (5% commission) 1.06%
Tie 8:1 14.4%

Side Bets

Bet Type Payout
Player Pair 11:1
Banker Pair 11:1
Dragon Bonus (Natural) 1:1
Dragon Bonus (Win by 4) 1:1
Dragon Bonus (Win by 5) 2:1
Dragon Bonus (Win by 6) 4:1
Dragon Bonus (Win by 7) 6:1
Dragon Bonus (Win by 8) 10:1
Dragon Bonus (Win by 9) 30:1

📊 Road Map History

  • Visual "Big Road" style result display
  • Color-coded outcomes (Blue=Player, Red=Banker, Green=Tie)
  • Pair markers (yellow dot)
  • Natural markers (star)
  • Scrollable session history

🎚️ Table Limits

Level Min Bet Max Bet
Casual $5 $500
Low Stakes $10 $1,000
Medium Stakes $25 $5,000
High Stakes $100 $10,000
VIP $500 $50,000

☁️ iCloud Sync

  • Balance and statistics sync across devices
  • Settings persist via iCloud
  • Automatic conflict resolution

Architecture

Baccarat/
├── BaccaratApp.swift          # App entry point
├── ContentView.swift          # Root view
├── Engine/
│   ├── BaccaratEngine.swift   # Core game logic, third card rules, payouts
│   └── GameState.swift        # Observable state machine
├── Models/
│   ├── BetType.swift          # Bet types, payouts, Dragon Bonus table
│   ├── GameResult.swift       # Round outcomes
│   ├── GameSettings.swift     # User preferences, table limits
│   ├── Hand.swift             # Baccarat hand model
│   └── Shoe.swift             # Multi-deck shoe with shuffle/burn
├── Storage/
│   └── BaccaratGameData.swift # Persistence models
├── Theme/
│   └── DesignConstants.swift  # Design system tokens
├── Views/
│   ├── Development/           # Dev-only views (branding, icons)
│   ├── Game/                  # Main game UI components
│   ├── Sheets/                # Modal views (settings, stats, rules)
│   └── Table/                 # Table layout, betting zones, road map
└── Resources/
    └── Localizable.xcstrings  # Localization strings

Game Rules

Card Values

  • Ace: 1 point
  • 2-9: Face value
  • 10, J, Q, K: 0 points
  • Hand value = sum mod 10 (e.g., 7+8=15 → 5)

Third Card Rules

Player

  • 0-5: Draws third card
  • 6-7: Stands
  • 8-9: Natural (no third card)

Banker (when Player draws)

Banker Total Draws if Player's 3rd is...
0-2 Always draws
3 0-7, 9 (not 8)
4 2-7
5 4-7
6 6-7
7 Never draws

Tech Stack

  • iOS 26.0+ target
  • Swift 6.2 with strict concurrency
  • SwiftUI with @Observable for state management
  • CasinoKit — Shared package for cards, chips, sounds, and common UI
  • CloudKit — iCloud sync for game data and settings

Requirements

  • Xcode 16.0+
  • iOS 26.0+ deployment target
  • Swift 6.2+

Getting Started

  1. Open CasinoGames.xcworkspace in Xcode
  2. Select the Baccarat scheme
  3. Build and run on a simulator or device

Localization

The app supports:

  • English (en)
  • Spanish - Mexico (es-MX)
  • French - Canada (fr-CA)

Strings are managed via String Catalogs (Localizable.xcstrings).

Design System

All UI values are centralized in DesignConstants.swift:

  • Spacing, corner radii, font sizes
  • Opacity and shadow values
  • Animation durations
  • Semantic color definitions

Accessibility

  • Full VoiceOver support with meaningful labels
  • Dynamic Type for scalable text
  • High-contrast visuals
  • Accessibility summaries for road map history

Why Baccarat?

  • Lowest house edge in the casino (1.06% on Banker bet)
  • No skill required — pure chance with simple rules
  • Fast-paced gameplay
  • Elegant and sophisticated atmosphere
  • James Bond's favorite casino game

License

This project is proprietary software. All rights reserved.


Built with ❤️ using SwiftUI