Game
گیم ایونٹس وہ ترجمہ ہیں جو بے ترتیب پیدا کردہ فلوٹ کو ایک متعلقہ نتیجے میں تبدیل کرتے ہیں جو گیم مخصوص ہے۔ اس میں پاسے کے رول کے نتیجے سے لے کر ایک ڈیک میں کارڈوں کے ترتیب، یا یہاں تک کہ ایک مائن کے کھیل میں ہر بم کی جگہ شامل ہے۔
نیچے ایک تفصیلی وضاحت ہے کہ ہم اپنی پلیٹ فارم پر ہر مخصوص کھیل کے لئے فلوٹ کو واقعات میں کیسے ترجمہ کرتے ہیں۔
ہائیلو
मानक कार्ड डेक میں، 52 منفرد ممکنہ نتائج ہوتے ہیں۔ جب ہماری پلیٹ فارم پر بلاک جیک، ہیلو اور بیکریٹ کھیلنے کی بات آتی ہے تو، ہم گیم ایونٹ تخلیق کرتے وقت لامحدود مقدار میں ڈیک کا استعمال کرتے ہیں، اور اس لیے ہر کارڈ کا ہر ٹرن ہمیشہ ایک ہی امکانات رکھتا ہے۔ اسے حساب کرنے کے لیے، ہم ہر بے ترتیب پیدا کردہ فلوٹ کو 52 سے ضرب دیتے ہیں، اور پھر اس نتیجے کو مخصوص کارڈ میں تبدیل کرتے ہیں، درج ذیل انڈیکس کے مطابق:
// Index of 0 to 51 : ♦2 to ♣A
const CARDS = [
♦2, ♥2, ♠2, ♣2, ♦3, ♥3, ♠3, ♣3, ♦4, ♥4,
♠4, ♣4, ♦5, ♥5, ♠5, ♣5, ♦6, ♥6, ♠6, ♣6,
♦7, ♥7, ♠7, ♣7, ♦8, ♥8, ♠8, ♣8, ♦9, ♥9,
♠9, ♣9, ♦10, ♥10, ♠10, ♣10, ♦J, ♥J, ♠J,
♣J, ♦Q, ♥Q, ♠Q, ♣Q, ♦K, ♥K, ♠K, ♣K, ♦A,
♥A, ♠A, ♣A
];
// Game event translation
const card = CARDS[Math.floor(float * 52)];
ان کھیلوں میں شامل واحد تفریق کرنے والا عنصر یہ ہے کہ ہیلوں اور بلیک جیک میں ایک کرسر 13 ہے تاکہ ان صورتوں کے لیے 52 ممکنہ گیم ایونٹس تیار کیے جائیں جہاں کھلاڑی کو بڑی تعداد میں کارڈز تقسیم کرنے کی ضرورت ہو، جبکہ بیکریٹ میں، ہمیں صرف 6 گیم ایونٹس تیار کرنے کی ضرورت ہوتی ہے تاکہ زیادہ سے زیادہ قابل کھیل کارڈز کو ڈھانپ سکیں۔
ہیروں
جب ہم ڈائمنڈ کھیل رہے ہوتے ہیں تو رتن کی شکل میں 7 ممکنہ نتائج ہوتے ہیں۔ اس کے حصول کے لیے، ہم ہر پیدا کردہ فلوٹ کو 7 سے ضرب دیتے ہیں اس سے پہلے کہ اسے مندرجہ ذیل اشاریہ کا استعمال کرتے ہوئے متعلقہ رتن میں ترجمہ کیا جائے:
// Index of 0 to 51 : ♦2 to ♣A
const CARDS = [
♦2, ♥2, ♠2, ♣2, ♦3, ♥3, ♠3, ♣3, ♦4, ♥4,
♠4, ♣4, ♦5, ♥5, ♠5, ♣5, ♦6, ♥6, ♠6, ♣6,
♦7, ♥7, ♠7, ♣7, ♦8, ♥8, ♠8, ♣8, ♦9, ♥9,
♠9, ♣9, ♦10, ♥10, ♠10, ♣10, ♦J, ♥J, ♠J,
♣J, ♦Q, ♥Q, ♠Q, ♣Q, ♦K, ♥K, ♠K, ♣K, ♦A,
♥A, ♠A, ♣A
];
// Game event translation
const card = CARDS[Math.floor(float * 52)];
ڈائس
ہمارے ڈائس کے ورژن میں، ہم 00.00 سے 100.00 کے ممکنہ رول اسپریڈ کا احاطہ کرتے ہیں، جس میں 10,001 ممکنہ نتائج کی ایک حد ہے۔ گیم ایونٹ کا ترجمہ ممکنہ نتائج کی تعداد سے فلوٹ کو ضرب دے کر اور پھر 100 سے تقسیم کر کے کیا جاتا ہے تاکہ نتیجے میں آنے والی تعداد ہمارے بیان کردہ ڈائس رینج کی حدود میں فٹ ہو سکے۔
// Game event translation
const roll = (float * 10001) / 100;
سکہ پلٹنا
جب ہم کوائنفلپ کھیل رہے ہوتے ہیں تو سکوں کی شکل میں 2 ممکنہ نتائج ہوتے ہیں۔ اس کے حصول کے لیے، ہم ہر پیدا کردہ فلوٹ کو 2 سے ضرب دیتے ہیں اس سے پہلے کہ اسے مندرجہ ذیل اشاریہ کا استعمال کرتے ہوئے متعلقہ رتن میں ترجمہ کیا جائے:
// Index of 0 & 1 : batman & joker
const COINS = [ 0, 1 ];
// Game event translation
const coin = COINS[Math.floor(float * 2)];
لیمبو
جب لیمبو کی بات آتی ہے تو ہم ایک دو مرحلے کا عمل استعمال کرتے ہیں۔ سب سے پہلے، ہم فلوٹ کو زیادہ سے زیادہ ممکنہ ضرب اور ہاؤس ایج دونوں سے ضرب دیتے ہیں۔ پھر، ایک گیم ایونٹ پیدا کرنے کے لیے جس میں احتمالی تقسیم ہم زیادہ سے زیادہ ممکنہ ضرب کو پہلے مرحلے کے نتیجے میں تقسیم کرتے ہیں تاکہ ایک گیم ایونٹ تخلیق کیا جا سکے جو ایک کریش پوائنٹ کی شکل میں ہو۔
// Game event translation with houseEdge of 0.99 (1%)
const floatPoint = 1e8 / (float * 1e8) * houseEdge;
// Crash point rounded down to required denominator
const crashPoint = Math.floor(floatPoint * 100) / 100;
// Consolidate all crash points below 1
const result = Math.max(crashPoint, 1);
Plinko
پلینکو کے کسی بھی کھیل کے لیے، تیار کردہ نتیجہ گرتی ہوئی گیند کے راستے پر مبنی ہے۔ کھیل کا واقعہ گرتی ہوئی گیند کے گرنے کے عمل میں ہر سطح کے لیے گیند کی سمت کا تعین کرتا ہے۔ کھلاڑی کھیل کے 8 اور 16 پن کے درمیان انتخاب کر سکتے ہیں، جو اوپر سے نیچے تک مکمل راستہ تیار کرنے کے لیے ضروری کھیل کے واقعات کی تعداد کا تعین کرتا ہے۔ چونکہ صرف دو ممکنہ سمتیں (بائیں یا دائیں) ہیں، ترجمہ ہر فلوٹ کو 2 سے ضرب دے کر کیا جاتا ہے، جو درج ذیل اشاریہ پر نقشہ بناتا ہے:
// Index of 0 to 1 : left to right
const DIRECTIONS = [ left, right ];
// Game event translation
const direction = CARDS[Math.floor(float * 2)];
Keno
روایتی کینو کھیلوں کے لیے ایک بورڈ پر ہٹ کی شکل میں 10 ممکنہ کھیل کے واقعات کا انتخاب کرنا ضروری ہے۔
// Index of 0 to 39 : 1 to 40
const SQUARES = [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40
];
const hit = SQUARES[Math.floor(float * 40)];
فیشر-یٹس شفل کے نفاذ کو نقل کے ممکنہ ہٹ تیار ہونے سے روکنے کے لئے استعمال کیا جاتا ہے۔
کانیں
ایک مائن کا کھیل 24 علیحدہ کھیل کے واقعات کے ساتھ تیار کیا جاتا ہے، بورڈ پر مائنز کی شکل میں۔ ہر فلوٹ کو بورڈ پر ابھی بھی باقی ممکنہ منفرد ٹائلز کی تعداد سے ضرب دیا جاتا ہے۔ یہ متعلقہ فلوٹ فراہم کرکے ہر کھیل کے واقعے کے نتیجے کی تخلیق کے لئے باقی ٹائلز کی تعداد سے 1 کو کم کرکے کیا جاتا ہے۔ کان的位置 کو بائیں سے دائیں، اوپر سے نیچے گرڈ کی پوزیشن کا استعمال کرکے تیار کیا جاتا ہے۔
فیشر-یٹس شفل کے نفاذ کو نقل کے ممکنہ ہٹ تیار ہونے سے روکنے کے لئے استعمال کیا جاتا ہے۔ منتخب کردہ سیٹنگز کی بنیاد پر 1 سے 24 کھیل کے ایونٹ کے نتائج استعمال کیے جاتے ہیں۔
پہیہ
کھیل کے واقعے کا نمبر فلوٹ کو سیکشن میں ممکنہ نتائج سے ضرب دے کر حساب کیا جاتا ہے۔ پھر اسے گیم ایونٹ کے نتیجے کو ضرب کے طور پر متعین کرنے کے لیے استعمال کیا جاتا ہے، درج ذیل انڈیکس کا استعمال کرتے ہوئے:
// Index per payout configuration
const PAYOUTS = {
'10': {
low: [ 1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0 ],
medium: [ 0, 1.9, 0, 1.5, 0, 2, 0, 1.5, 0, 3 ],
high: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 9.9 ]
},
'20': {
low: [
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0
],
medium: [
1.5, 0, 2, 0, 2, 0, 2, 0, 1.5, 0,
3, 0, 1.8, 0, 2, 0, 2, 0, 2, 0
],
high: [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 19.8
]
},
'30': {
low: [
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0
],
medium: [
1.5, 0, 1.5, 0, 2, 0, 1.5, 0, 2, 0,
2, 0, 1.5, 0, 3, 0, 1.5, 0, 2, 0,
2, 0, 1.7, 0, 4, 0, 1.5, 0, 2, 0
],
high: [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 29.7
]
},
'40': {
low: [
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0
],
medium: [
2, 0, 3, 0, 2, 0, 1.5, 0, 3, 0,
1.5, 0, 1.5, 0, 2, 0, 1.5, 0, 3, 0,
1.5, 0, 2, 0, 2, 0, 1.6, 0, 2, 0,
1.5, 0, 3, 0, 1.5, 0, 2, 0, 1.5, 0
],
high: [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 39.6
]
},
'50': {
low: [
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0,
1.5, 1.2, 1.2, 1.2, 0, 1.2, 1.2, 1.2, 1.2, 0
],
medium: [
2, 0, 1.5, 0, 2, 0, 1.5, 0, 3, 0,
1.5, 0, 1.5, 0, 2, 0, 1.5, 0, 3, 0,
1.5, 0, 2, 0, 1.5, 0, 2, 0, 2, 0,
1.5, 0, 3, 0, 1.5, 0, 2, 0, 1.5, 0,
1.5, 0, 5, 0, 1.5, 0, 2, 0, 1.5, 0
],
high: [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 49.5
]
}
};
// Game event translation
const spin = PAYOUTS[segments][risk][float * segments];
کریش
ہماری انصاف کو ثابت کرنے کے لیے، ہم نے 10,000,000 SHA256 ہیشز کی ایک زنجیر تیار کی ہے جہاں ہر ہیش پچھلے ہیش کی 16 عددی نمائندگی کا ہیش ہے۔ زنجیر میں آخری ہیش یہ ہے: 78a9757d3be42b74a3f70239078ad9317125fe9ee630d5bdada46de963e56752
کھیل کے نتیجے کی پیداوار کے لیے فارمولا:
const gameHash = hashChain.pop()
const hmac = createHmac('sha256', gameHash);
// blockHash is the hash of bitcoin block 584,500
hmac.update(blockHash);
const hex = hmac.digest('hex').substr(0, 8);
const int = parseInt(hex, 16);
// 0.01 will result in 1% house edge with a lowest crashpoint of 1
const crashpoint = Math.max(1, (2 ** 32 / (int + 1)) * (1 - 0.01))
ڈبل
ہمارا ڈبل یورپی ورژن سے ماخوذ ہے جہاں پہیے میں 0 سے 14 تک 15 ممکنہ مختلف جیب ہیں۔ کھیل کا واقعہ 15 سے فلوٹ کو ضرب دے کر حساب کیا جاتا ہے اور پھر اسے مندرجہ ذیل اشاریے کا استعمال کرتے ہوئے ایک متعلقہ جیب میں ترجمہ کیا جاتا ہے۔
// Index of 0 to 14
const POCKETS = [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14
];
// Game event translation
const pocket = POCKETS[Math.floor(float * 15)];
ٹاور
ٹاور کا کھیل 9 علیحدہ گیم ایونٹس کے ساتھ تیار کیا گیا ہے، جو ٹاور کے مختلف درجوں کی شکل میں ہیں۔ ہم ہر درجے کے لیے مشکل کی بنیاد پر ایک مخصوص تعداد میں انڈے تیار کرتے ہیں، اور انڈے جس ٹائل پر ہو سکتے ہیں اس کی حد بھی صحیح عدد کے طور پر بیان کی گئی ہے۔
ہر تیار کردہ فلوٹ کو صحیح عدد میں تبدیل کیا جاتا ہے تاکہ ہر صف میں انڈوں کے مقام کا تعین کیا جا سکے۔ مثال کے طور پر: آسان سطح اس طرح ظاہر کی جائے گی: [0, 1, 3] - انڈے ٹائل 1، 2 اور 4 پر موجود ہوں گے۔
// count represents the number of eggs
// size represents the number of possible squares
const LEVEL_MAP = {
easy: { count: 3, size: 4 },
medium: { count: 2, size: 3 },
hard: { count: 1, size: 2 },
expert: { count1, size: 3 },
master: { count: 1, size: 4 },}
فشیر-یٹس شفل کا نفاذ ایک قطار میں ڈپلیکیٹ انڈوں کو روکنے کے لیے استعمال ہوتا ہے۔