Merge branch 'develop' into feature/3-100-point-rules

# Conflicts:
#	pubspec.yaml
This commit is contained in:
Felix Kirchner
2025-04-30 00:11:40 +02:00
10 changed files with 111 additions and 17 deletions

View File

@@ -65,6 +65,8 @@ jobs:
test:
runs-on: macos-latest
if: always()
needs: [lint, format]
steps:
- uses: actions/checkout@v4
@@ -82,6 +84,7 @@ jobs:
build:
runs-on: macos-latest
if: false # skips job
needs: [lint, format, test]
steps:
- uses: actions/checkout@v4

View File

@@ -8,7 +8,81 @@
![GitHub Pull Requests](https://img.shields.io/github/issues-pr/flixcoo/Cabo-Counter?logo=github)
![GitHub Last Commit](https://img.shields.io/github/last-commit/flixcoo/Cabo-Counter?logo=github)
Mobile app for the card game CABO.
A mobile score tracker for the card game Cabo, helping players effortlessly manage scores and automatically calculate round results.
`// todo`
## 📱 Description
Cabo Counter is an intuitive Flutter-based mobile application designed to enhance your CABO card game experience. It eliminates manual scorekeeping by automatically calculating points per round.
## ✨ Features
- 🆕 Create new games with customizable rules
- 👥 Support for 2-5 players
- ⚖️ Two game modes:
- **100 Points Mode** (Standard)
- **Infinite Mode** (Casual play)
- 🔢 Automatic score calculation with:
- Kamikaze rule handling
- Exact 100-point bonus (score halving)
- 📊 Round history tracking
## 🚀 Getting Started
### Prerequisites
- Flutter 3.24.5+
- Dart 3.5.4+
### Installation
```bash
git clone https://github.com/flixcoo/Cabo-Counter.git
cd Cabo-Counter
flutter pub get
flutter run
```
## 🎮 Usage
1. **Start New Game**
- Choose game mode (100 Points or Infinite)
- Add 2-5 players
2. **Gameplay**
- Track rounds with automatic scoring
- Handle special rules (Kamikaze, exact 100 points)
- View real-time standings
3. **Round Management**
- Automatic winner detection
- Penalty point calculation
- Game-over detection (100 Points mode)
## 🃏 Key Rules Overview
### Scoring System
- Round winner: 0 points
- Other players: Sum of card values
- Failed Cabo call: +5 penalty points
- Kamikaze: 0 points for caller, 50 for others
- Exact 100 points: Score halved
### Game End
- First player ≥101 points triggers final scoring
- Lowest total score wins
## 🤝 Contributing
Contributions are welcome! If you'd like to improve Cabo Counter, please:
- Follow the existing code style and architecture
- Maintain clean, well-documented code
- Keep changes focused and test your work
Feel free to open issues or submit pull requests!
## ⚠️ Disclaimer
This project is not affiliated with or endorsed by Smiling Monster GmbH. CABO is a registered trademark of its respective owners. This app is designed for scorekeeping purposes only and does not include actual game components.
---
> 🚀 Powered by Flutter | Developed with 🩵

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 350 KiB

View File

@@ -476,7 +476,7 @@
DEVELOPMENT_TEAM = RJB4MM6RVS;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "CABO Counter";
INFOPLIST_KEY_CFBundleDisplayName = "Cabo Counter";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -484,11 +484,16 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.flixco.caboCounterApp;
PRODUCT_BUNDLE_IDENTIFIER = com.flixcoo.caboCounter;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
@@ -668,7 +673,7 @@
DEVELOPMENT_TEAM = RJB4MM6RVS;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "CABO Counter";
INFOPLIST_KEY_CFBundleDisplayName = "Cabo Counter";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -676,12 +681,17 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.flixco.caboCounterApp;
PRODUCT_BUNDLE_IDENTIFIER = com.flixcoo.caboCounter;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@@ -698,7 +708,7 @@
DEVELOPMENT_TEAM = RJB4MM6RVS;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "CABO Counter";
INFOPLIST_KEY_CFBundleDisplayName = "Cabo Counter";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -706,11 +716,16 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.flixco.caboCounterApp;
PRODUCT_BUNDLE_IDENTIFIER = com.flixcoo.caboCounter;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 350 KiB

View File

@@ -7,7 +7,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>CABO-Counter</string>
<string>Cabo Counter</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@@ -24,6 +24,12 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
<string>http</string>
<string>instagram</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
@@ -32,14 +38,10 @@
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIStatusBarHidden</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDarkContent</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
<string>http</string>
<string>instagram</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>

View File

@@ -21,7 +21,7 @@ class App extends StatelessWidget {
),
),
debugShowCheckedModeBanner: false,
title: 'CABO-Counter',
title: 'Cabo Counter',
home: const MainMenuView(),
);
}

View File

@@ -1,5 +1,5 @@
name: cabo_counter
description: "Mobile app for the card game CABO"
description: "Mobile app for the card game Cabo"
publish_to: 'none'
version: 0.1.3+63