A Flutter companion app for "Fuck You" (a.k.a. Ring of Fire), the classic drinking card game where players guess properties of the next card drawn from a deck — color, higher/lower, inside/outside a range, suit, and new/old. Guess wrong, and you drink.
fcku tracks the deck as cards are drawn and tells you the odds before you guess.
| Odds calculator | Statistics | On-device card detection |
|---|---|---|
![]() |
![]() |
![]() |
- Odds calculator — Manually enter drawn cards and get live win-probability recommendations for each round (Color, Higher/Lower, Inside/Outside, Suit, New/Old), computed via Monte Carlo simulation over the remaining deck.
- Camera card detection — Point your phone at a drawn card and it's recognized automatically using an on-device YOLO object detection model, so you don't have to enter cards by hand.
- Player tracking — Add players and keep a running tally of drinks/penalties across a session.
- Statistics — Visualize win probability and simulation results as charts over the course of a game.
- Flutter / Dart
- flutter_bloc + get_it for state management and dependency injection
- ultralytics_yolo with a bundled
int8-quantized TFLite model (assets/best_int8.tflite) trained to detect and classify all 52 playing cards - camera for live camera capture, run on a background isolate
- fl_chart for statistics visualization
- flutter_tailwind_theme for styling
lib/
├── backend/ # deck state, Monte Carlo simulator, card detection glue
├── frontend/ # screens (calculator, camera, players, statistics) and widgets
├── types/ # shared enums and data models (cards, ranks, suits, recommendations)
└── main.dart
assets/
├── best_int8.tflite # YOLO card-detection model
└── metadata.yaml # model class labels (rank + suit per class)
The deck of remaining cards is tracked in BaseDeck. For each round, Simulator runs thousands of randomized simulated draws (SimulationDeck) against the remaining cards to estimate the win probability of each possible choice (e.g. Red vs. Black), then surfaces the best-odds recommendation for the current stage.
This is a standard Flutter app.
flutter pub get
flutter runRequires a device/emulator with camera access for the card-detection feature; the calculator and player-tracking features work without it.


