Files
front-hokm/lib/features/game/flame/card_codes.dart
T
2026-06-15 18:57:00 +03:30

47 lines
1.5 KiB
Dart

// توابع کمکیِ خالصِ کدِ کوتاهِ کارت‌ها (مثل "AS", "10H", "KD").
// بدون وابستگی به Flame/Flutter تا قابل‌تست و بازاستفاده باشد.
/// نسبت ابعاد تصویرِ کارت (۵۰۰×۷۲۶ منبع).
const double kCardRatio = 726 / 500;
/// نام کاملِ خال از روی آخرین حرفِ کد: S/H/D/C.
String suitName(String code) {
switch (code[code.length - 1]) {
case 'H':
return 'hearts';
case 'D':
return 'diamonds';
case 'C':
return 'clubs';
default:
return 'spades';
}
}
/// رتبه‌ی عددی کارت (۲..۱۰ معمولی، J=11، Q=12، K=13، A=14).
int rankValue(String code) {
switch (code.substring(0, code.length - 1)) {
case 'A':
return 14;
case 'K':
return 13;
case 'Q':
return 12;
case 'J':
return 11;
default:
return int.tryParse(code.substring(0, code.length - 1)) ?? 0;
}
}
// ترتیب خال‌ها برای چیدنِ دست (سیاه/قرمز متناوب تا تفکیک بصری راحت‌تر باشد).
const _suitOrder = {'S': 0, 'H': 1, 'C': 2, 'D': 3};
/// مقایسه برای مرتب‌سازی کارت‌های دست: ابتدا خال، سپس رتبه.
int compareCards(String a, String b) {
final sa = _suitOrder[a[a.length - 1]] ?? 0;
final sb = _suitOrder[b[b.length - 1]] ?? 0;
if (sa != sb) return sa - sb;
return rankValue(a) - rankValue(b);
}