24 KiB
خلائی کھیل بنائیں حصہ 6: اختتام اور دوبارہ شروع کریں
ہر بہترین کھیل کے لیے واضح اختتامی شرائط اور ایک ہموار دوبارہ شروع کرنے کا طریقہ کار ضروری ہوتا ہے۔ آپ نے ایک متاثر کن خلائی کھیل بنایا ہے جس میں حرکت، لڑائی اور اسکورنگ شامل ہے - اب وقت ہے کہ آخری ٹکڑوں کو شامل کریں جو اسے مکمل محسوس کرائیں۔
آپ کا کھیل فی الحال غیر معینہ مدت تک چلتا ہے، جیسے ناسا کے 1977 میں لانچ کیے گئے ووئجر پروبز - جو دہائیوں بعد بھی خلا میں سفر کر رہے ہیں۔ جبکہ یہ خلائی تحقیق کے لیے ٹھیک ہے، کھیلوں کو اطمینان بخش تجربات پیدا کرنے کے لیے واضح اختتامی پوائنٹس کی ضرورت ہوتی ہے۔
آج، ہم مناسب جیت/ہار کی شرائط اور ایک دوبارہ شروع کرنے کا نظام نافذ کریں گے۔ اس سبق کے اختتام تک، آپ کے پاس ایک پالش شدہ کھیل ہوگا جسے کھلاڑی مکمل اور دوبارہ کھیل سکتے ہیں، بالکل کلاسک آرکیڈ گیمز کی طرح جنہوں نے اس میڈیم کو متعین کیا۔
پری لیکچر کوئز
کھیل کے اختتامی شرائط کو سمجھنا
آپ کا کھیل کب ختم ہونا چاہیے؟ یہ بنیادی سوال آرکیڈ کے ابتدائی دور سے گیم ڈیزائن کو تشکیل دے رہا ہے۔ پیک مین اس وقت ختم ہوتا ہے جب آپ بھوتوں کے ہاتھوں پکڑے جاتے ہیں یا تمام نقطے صاف کرتے ہیں، جبکہ اسپیس انویڈرز اس وقت ختم ہوتا ہے جب خلائی مخلوق نیچے پہنچ جاتی ہے یا آپ انہیں سب کو تباہ کر دیتے ہیں۔
بطور کھیل تخلیق کار، آپ فتح اور شکست کی شرائط کو متعین کرتے ہیں۔ ہمارے خلائی کھیل کے لیے، یہاں آزمودہ طریقے ہیں جو دلچسپ گیم پلے تخلیق کرتے ہیں:
Nدشمن جہاز تباہ ہو چکے ہیں: یہ کافی عام ہے اگر آپ کھیل کو مختلف سطحوں میں تقسیم کریں کہ آپ کو ایک سطح مکمل کرنے کے لیےNدشمن جہاز تباہ کرنے کی ضرورت ہو۔- آپ کا جہاز تباہ ہو گیا ہے: یقینی طور پر ایسے کھیل ہیں جہاں آپ کا جہاز تباہ ہونے پر آپ کھیل ہار جاتے ہیں۔ ایک اور عام طریقہ یہ ہے کہ آپ کے پاس زندگیوں کا تصور ہو۔ ہر بار جب آپ کا جہاز تباہ ہوتا ہے تو یہ ایک زندگی کم کر دیتا ہے۔ جب تمام زندگیاں ختم ہو جائیں تو آپ کھیل ہار جاتے ہیں۔
- آپ نے
Nپوائنٹس جمع کیے ہیں: ایک اور عام اختتامی شرط یہ ہے کہ آپ پوائنٹس جمع کریں۔ آپ پوائنٹس کیسے حاصل کرتے ہیں یہ آپ پر منحصر ہے لیکن یہ کافی عام ہے کہ مختلف سرگرمیوں جیسے دشمن جہاز کو تباہ کرنے یا شاید ان اشیاء کو جمع کرنے پر پوائنٹس دیے جائیں جو تباہ ہونے پر گرتی ہیں۔ - ایک سطح مکمل کریں: اس میں کئی شرائط شامل ہو سکتی ہیں جیسے
Xدشمن جہاز تباہ،Yپوائنٹس جمع یا شاید ایک مخصوص آئٹم جمع کیا گیا ہو۔
کھیل کو دوبارہ شروع کرنے کی فعالیت نافذ کرنا
اچھے کھیل ہموار دوبارہ شروع کرنے کے طریقہ کار کے ذریعے دوبارہ کھیلنے کی ترغیب دیتے ہیں۔ جب کھلاڑی ایک کھیل مکمل کرتے ہیں (یا شکست کا سامنا کرتے ہیں)، وہ اکثر فوراً دوبارہ کوشش کرنا چاہتے ہیں - چاہے اپنے اسکور کو شکست دینے کے لیے یا اپنی کارکردگی کو بہتر بنانے کے لیے۔
ٹیٹرس اس کی بہترین مثال ہے: جب آپ کے بلاکس اوپر تک پہنچ جاتے ہیں، آپ فوراً ایک نیا کھیل شروع کر سکتے ہیں بغیر پیچیدہ مینو میں جانے کے۔ ہم ایک ایسا ہی دوبارہ شروع کرنے کا نظام بنائیں گے جو کھیل کی حالت کو صاف طور پر ری سیٹ کرے اور کھلاڑیوں کو جلدی سے دوبارہ ایکشن میں لے آئے۔
✅ عکاسی: ان کھیلوں کے بارے میں سوچیں جو آپ نے کھیلے ہیں۔ وہ کن شرائط پر ختم ہوتے ہیں، اور آپ کو دوبارہ شروع کرنے کے لیے کیسے اکسایا جاتا ہے؟ کیا چیز دوبارہ شروع کرنے کے تجربے کو ہموار بناتی ہے اور کیا چیز اسے مایوس کن بناتی ہے؟
آپ کیا بنائیں گے
آپ وہ آخری خصوصیات نافذ کریں گے جو آپ کے پروجیکٹ کو مکمل کھیل کے تجربے میں تبدیل کرتی ہیں۔ یہ عناصر پالش شدہ کھیلوں کو بنیادی پروٹوٹائپس سے ممتاز کرتے ہیں۔
آج ہم کیا شامل کر رہے ہیں:
- فتح کی شرط: تمام دشمنوں کو تباہ کریں اور ایک مناسب جشن منائیں (آپ نے یہ حاصل کیا ہے!)
- شکست کی شرط: زندگیاں ختم ہو جائیں اور شکست کے اسکرین کا سامنا کریں
- دوبارہ شروع کرنے کا طریقہ کار: انٹر دبائیں اور فوراً دوبارہ کھیلنا شروع کریں - کیونکہ ایک کھیل کبھی کافی نہیں ہوتا
- حالت کا انتظام: ہر بار صاف آغاز - پچھلے کھیل سے کوئی بچا ہوا دشمن یا عجیب گڑبڑ نہیں
شروعات کرنا
آئیے آپ کے ترقیاتی ماحول کو تیار کریں۔ آپ کے پاس پچھلے اسباق سے اپنے خلائی کھیل کی تمام فائلیں تیار ہونی چاہئیں۔
آپ کا پروجیکٹ کچھ اس طرح نظر آنا چاہیے:
-| assets
-| enemyShip.png
-| player.png
-| laserRed.png
-| life.png
-| index.html
-| app.js
-| package.json
اپنا ترقیاتی سرور شروع کریں:
cd your-work
npm start
یہ کمانڈ:
http://localhost:5000پر ایک مقامی سرور چلاتا ہے- آپ کی فائلوں کو صحیح طریقے سے پیش کرتا ہے
- جب آپ تبدیلیاں کرتے ہیں تو خود بخود تازہ کرتا ہے
اپنے براؤزر میں http://localhost:5000 کھولیں اور تصدیق کریں کہ آپ کا کھیل چل رہا ہے۔ آپ کو حرکت کرنے، شوٹ کرنے اور دشمنوں کے ساتھ تعامل کرنے کے قابل ہونا چاہیے۔ ایک بار تصدیق ہو جانے کے بعد، ہم نفاذ کے ساتھ آگے بڑھ سکتے ہیں۔
💡 پرو ٹپ: ویژول اسٹوڈیو کوڈ میں انتباہات سے بچنے کے لیے،
gameLoopIdکو اپنی فائل کے اوپرlet gameLoopId;کے طور پر اعلان کریں بجائے اس کے کہ اسےwindow.onloadفنکشن کے اندر اعلان کریں۔ یہ جدید جاوا اسکرپٹ متغیر اعلان کے بہترین طریقوں کی پیروی کرتا ہے۔
نفاذ کے مراحل
مرحلہ 1: اختتامی شرط کو ٹریک کرنے والے فنکشنز بنائیں
ہمیں ایسے فنکشنز کی ضرورت ہے جو یہ نگرانی کریں کہ کھیل کب ختم ہونا چاہیے۔ جیسے انٹرنیشنل اسپیس اسٹیشن پر سینسرز جو مسلسل اہم نظاموں کی نگرانی کرتے ہیں، یہ فنکشنز کھیل کی حالت کو مسلسل چیک کریں گے۔
function isHeroDead() {
return hero.life <= 0;
}
function isEnemiesDead() {
const enemies = gameObjects.filter((go) => go.type === "Enemy" && !go.dead);
return enemies.length === 0;
}
یہاں کیا ہو رہا ہے:
- چیک کرتا ہے کہ ہمارا ہیرو زندگیوں سے باہر ہے یا نہیں (افسوس!)
- گنتی کرتا ہے کہ کتنے دشمن ابھی زندہ ہیں اور لڑ رہے ہیں
- سچ واپس کرتا ہے جب میدان جنگ دشمنوں سے صاف ہو جاتا ہے
- سادہ سچ/جھوٹ منطق استعمال کرتا ہے تاکہ چیزیں سیدھی رہیں
- فلٹر کرتا ہے تمام کھیل کے اشیاء کے ذریعے زندہ بچ جانے والوں کو تلاش کرنے کے لیے
مرحلہ 2: اختتامی شرائط کے لیے ایونٹ ہینڈلرز کو اپ ڈیٹ کریں
اب ہم ان شرطوں کو کھیل کے ایونٹ سسٹم سے جوڑیں گے۔ جب بھی کوئی تصادم ہوتا ہے، کھیل اس کا جائزہ لے گا کہ آیا یہ کسی اختتامی شرط کو متحرک کرتا ہے۔ یہ اہم کھیل کے واقعات کے لیے فوری تاثرات پیدا کرتا ہے۔
eventEmitter.on(Messages.COLLISION_ENEMY_LASER, (_, { first, second }) => {
first.dead = true;
second.dead = true;
hero.incrementPoints();
if (isEnemiesDead()) {
eventEmitter.emit(Messages.GAME_END_WIN);
}
});
eventEmitter.on(Messages.COLLISION_ENEMY_HERO, (_, { enemy }) => {
enemy.dead = true;
hero.decrementLife();
if (isHeroDead()) {
eventEmitter.emit(Messages.GAME_END_LOSS);
return; // loss before victory
}
if (isEnemiesDead()) {
eventEmitter.emit(Messages.GAME_END_WIN);
}
});
eventEmitter.on(Messages.GAME_END_WIN, () => {
endGame(true);
});
eventEmitter.on(Messages.GAME_END_LOSS, () => {
endGame(false);
});
یہاں کیا ہو رہا ہے:
- لیزر دشمن کو مارتا ہے: دونوں غائب ہو جاتے ہیں، آپ کو پوائنٹس ملتے ہیں، اور ہم چیک کرتے ہیں کہ آپ جیت گئے ہیں یا نہیں
- دشمن آپ کو مارتا ہے: آپ ایک زندگی کھو دیتے ہیں، اور ہم چیک کرتے ہیں کہ آپ ابھی بھی زندہ ہیں یا نہیں
- سمارٹ ترتیب: ہم پہلے شکست کے لیے چیک کرتے ہیں (کوئی بھی ایک ہی وقت میں جیتنا اور ہارنا نہیں چاہتا!)
- فوری ردعمل: جیسے ہی کچھ اہم ہوتا ہے، کھیل اس کے بارے میں جانتا ہے
مرحلہ 3: نئے پیغام کے مستقلات شامل کریں
آپ کو اپنے Messages مستقل آبجیکٹ میں نئے پیغام کی اقسام شامل کرنے کی ضرورت ہوگی۔ یہ مستقلات مستقل مزاجی برقرار رکھنے اور آپ کے ایونٹ سسٹم میں ٹائپوز کو روکنے میں مدد کرتے ہیں۔
GAME_END_LOSS: "GAME_END_LOSS",
GAME_END_WIN: "GAME_END_WIN",
اوپر، ہم نے:
- شامل کیے کھیل کے اختتامی واقعات کے لیے مستقلات تاکہ مستقل مزاجی برقرار رہے
- استعمال کیے وضاحتی نام جو واضح طور پر ایونٹ کے مقصد کی نشاندہی کرتے ہیں
- موجودہ نام دینے کے کنونشن کی پیروی کی پیغام کی اقسام کے لیے
مرحلہ 4: دوبارہ شروع کرنے کے کنٹرولز نافذ کریں
اب آپ کی بورڈ کنٹرولز شامل کریں گے جو کھلاڑیوں کو کھیل دوبارہ شروع کرنے کی اجازت دیتے ہیں۔ انٹر کی کلید ایک قدرتی انتخاب ہے کیونکہ یہ عام طور پر کارروائیوں کی تصدیق اور نئے کھیل شروع کرنے سے منسلک ہوتی ہے۔
اپنے موجودہ کی ڈاؤن ایونٹ لسٹنر میں انٹر کی کلید کا پتہ لگانا شامل کریں:
else if(evt.key === "Enter") {
eventEmitter.emit(Messages.KEY_EVENT_ENTER);
}
نئے پیغام کے مستقل کو شامل کریں:
KEY_EVENT_ENTER: "KEY_EVENT_ENTER",
آپ کو کیا جاننے کی ضرورت ہے:
- آپ کے موجودہ کی بورڈ ایونٹ ہینڈلنگ سسٹم کو بڑھاتا ہے
- انٹر کی کلید کو دوبارہ شروع کرنے کے محرک کے طور پر استعمال کرتا ہے تاکہ صارف کے تجربے کو بدیہی بنایا جا سکے
- ایک حسب ضرورت ایونٹ خارج کرتا ہے جسے آپ کے کھیل کے دیگر حصے سن سکتے ہیں
- آپ کے دیگر کی بورڈ کنٹرولز کے جیسے ہی پیٹرن کو برقرار رکھتا ہے
مرحلہ 5: پیغام ڈسپلے سسٹم بنائیں
آپ کے کھیل کو کھلاڑیوں کے ساتھ نتائج واضح طور پر بات چیت کرنے کی ضرورت ہے۔ ہم ایک پیغام کا نظام بنائیں گے جو فتح اور شکست کی حالتوں کو رنگین متن کے ذریعے ظاہر کرے گا، ابتدائی کمپیوٹر سسٹمز کے ٹرمینل انٹرفیس کی طرح جہاں سبز کامیابی کی نشاندہی کرتا تھا اور سرخ غلطیوں کا اشارہ کرتا تھا۔
displayMessage() فنکشن بنائیں:
function displayMessage(message, color = "red") {
ctx.font = "30px Arial";
ctx.fillStyle = color;
ctx.textAlign = "center";
ctx.fillText(message, canvas.width / 2, canvas.height / 2);
}
مرحلہ وار، یہاں کیا ہو رہا ہے:
- فونٹ کا سائز اور خاندان سیٹ کرتا ہے تاکہ متن واضح اور پڑھنے کے قابل ہو
- رنگ پیرامیٹر کو "سرخ" کے ڈیفالٹ کے ساتھ لاگو کرتا ہے انتباہات کے لیے
- متن کو افقی اور عمودی طور پر کینوس پر مرکز کرتا ہے
- جدید جاوا اسکرپٹ ڈیفالٹ پیرامیٹرز استعمال کرتا ہے لچکدار رنگ کے اختیارات کے لیے
- کینوس 2D سیاق و سباق کا فائدہ اٹھاتا ہے براہ راست متن رینڈرنگ کے لیے
endGame() فنکشن بنائیں:
function endGame(win) {
clearInterval(gameLoopId);
// Set a delay to ensure any pending renders complete
setTimeout(() => {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
if (win) {
displayMessage(
"Victory!!! Pew Pew... - Press [Enter] to start a new game Captain Pew Pew",
"green"
);
} else {
displayMessage(
"You died !!! Press [Enter] to start a new game Captain Pew Pew"
);
}
}, 200)
}
یہ فنکشن کیا کرتا ہے:
- سب کچھ جگہ پر منجمد کرتا ہے - مزید حرکت کرنے والے جہاز یا لیزرز نہیں
- ایک چھوٹا وقفہ لیتا ہے (200ms) تاکہ آخری فریم ڈرائنگ مکمل کر سکے
- اسکرین کو صاف کرتا ہے اور ڈرامائی اثر کے لیے اسے سیاہ رنگ دیتا ہے
- مختلف پیغامات دکھاتا ہے فاتحین اور ہارنے والوں کے لیے
- خبریں رنگین کوڈ کرتا ہے - اچھے کے لیے سبز، اور... اچھے کے لیے نہیں، سرخ
- کھلاڑیوں کو بتاتا ہے کہ دوبارہ کھیلنا کیسے شروع کریں
مرحلہ 6: کھیل کو ری سیٹ کرنے کی فعالیت نافذ کریں
ری سیٹ سسٹم کو موجودہ کھیل کی حالت کو مکمل طور پر صاف کرنا اور ایک نیا کھیل سیشن شروع کرنا چاہیے۔ یہ یقینی بناتا ہے کہ کھلاڑیوں کو پچھلے کھیل سے کسی بھی بچی ہوئی ڈیٹا کے بغیر صاف آغاز ملے۔
resetGame() فنکشن بنائیں:
function resetGame() {
if (gameLoopId) {
clearInterval(gameLoopId);
eventEmitter.clear();
initGame();
gameLoopId = setInterval(() => {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
drawPoints();
drawLife();
updateGameObjects();
drawGameObjects(ctx);
}, 100);
}
}
آئیے ہر حصے کو سمجھیں:
- چیک کرتا ہے کہ آیا کوئی کھیل کا لوپ فی الحال چل رہا ہے یا نہیں ری سیٹ کرنے سے پہلے
- موجودہ کھیل کے لوپ کو صاف کرتا ہے تاکہ تمام موجودہ کھیل کی سرگرمی کو روک سکے
- تمام ایونٹ لسٹنرز کو ہٹاتا ہے تاکہ میموری لیک کو روکا جا سکے
- کھیل کی حالت کو دوبارہ شروع کرتا ہے تازہ اشیاء اور متغیرات کے ساتھ
- ایک نیا کھیل کا لوپ شروع کرتا ہے تمام ضروری کھیل کے فنکشنز کے ساتھ
- ایک ہی 100ms وقفہ برقرار رکھتا ہے مستقل کھیل کی کارکردگی کے لیے
اپنے initGame() فنکشن میں انٹر کی کلید ایونٹ ہینڈلر شامل کریں:
eventEmitter.on(Messages.KEY_EVENT_ENTER, () => {
resetGame();
});
اپنے ایونٹ ایمیٹر کلاس میں clear() طریقہ شامل کریں:
clear() {
this.listeners = {};
}
یاد رکھنے کے اہم نکات:
- انٹر کی کلید دبانے کو کھیل ری سیٹ کرنے کی فعالیت سے جوڑتا ہے
- کھیل کی شروعات کے دوران اس ایونٹ لسٹنر کو رجسٹر کرتا ہے
- تمام ایونٹ لسٹنرز کو ہٹانے کا صاف طریقہ فراہم کرتا ہے کھیلوں کے درمیان
- کھیلوں کے درمیان ایونٹ ہینڈلرز کو صاف کرتا ہے میموری لیک کو روکنے کے لیے
- لسٹنرز آبجیکٹ کو خالی حالت میں ری سیٹ کرتا ہے تازہ شروعات کے لیے
مبارک ہو! 🎉
👽 💥 🚀 آپ نے کامیابی سے زمین سے ایک مکمل کھیل بنایا۔ جیسے 1970 کی دہائی میں پہلے ویڈیو گیمز بنانے والے پروگرامرز نے، آپ نے کوڈ کی لائنوں کو ایک انٹرایکٹو تجربے میں تبدیل کیا ہے جس میں مناسب کھیل کے میکینکس اور صارف کی رائے شامل ہے۔ 🚀 💥 👽
آپ نے حاصل کیا:
- مکمل جیت اور ہار کی شرائط نافذ کیں صارف کی رائے کے ساتھ
- مسلسل گیم پلے کے لیے ہموار دوبارہ شروع کرنے کا نظام بنایا
- کھیل کی حالتوں کے لیے واضح بصری مواصلات ڈیزائن کیے
- پیچیدہ کھیل کی حالت کی منتقلی اور صفائی کا انتظام کیا
- تمام اجزاء کو ایک مربوط، کھیلنے کے قابل کھیل میں جمع کیا
گٹ ہب کوپائلٹ ایجنٹ چیلنج 🚀
ایجنٹ موڈ کا استعمال کرتے ہوئے درج ذیل چیلنج مکمل کریں:
تفصیل: خلائی کھیل کو ایک سطحی ترقیاتی نظام کے ساتھ بڑھائیں جس میں بڑھتی ہوئی مشکل اور بونس خصوصیات شامل ہوں۔
پرومپٹ: ایک کثیر سطحی خلائی کھیل کا نظام بنائیں جہاں ہر سطح میں زیادہ دشمن جہاز ہوں جن کی رفتار اور صحت میں اضافہ ہو۔ ایک اسکورنگ ملٹی پلائر شامل کریں جو ہر سطح کے ساتھ بڑھتا ہے، اور پاور اپس (جیسے ریپڈ فائر یا شیلڈ) نافذ کریں جو دشمنوں کے تباہ ہونے پر تصادفی طور پر ظاہر ہوں۔ سطح مکمل کرنے کا بونس شامل کریں اور موجودہ سطح کو اسکور اور زندگیوں کے ساتھ اسکرین پر دکھائیں۔
ایجنٹ موڈ کے بارے میں مزید جانیں یہاں۔
🚀 اختیاری اضافہ چیلنج
اپنے کھیل میں آڈیو شامل کریں: اپنے گیم پلے کے تجربے کو بہتر بنائیں آواز کے اثرات نافذ کر کے! غور کریں کہ آڈیو شامل کریں:
- لیزر شاٹس جب کھلاڑی فائر کرتا ہے
- دشمن کی تباہی جب جہاز مارے جاتے ہیں
- ہیرو کو نقصان جب کھلاڑی کو نقصان پہنچتا ہے
- فتح کی موسیقی جب کھیل جیتا جاتا ہے
- شکست کی آواز جب کھیل ہارا جاتا ہے
آڈیو نفاذ کی مثال:
// Create audio objects
const laserSound = new Audio('assets/laser.wav');
const explosionSound = new Audio('assets/explosion.wav');
// Play sounds during game events
function playLaserSound() {
laserSound.currentTime = 0; // Reset to beginning
laserSound.play();
}
آپ کو کیا جاننے کی ضرورت ہے:
- مختلف آواز کے اثرات کے لیے آڈیو آبجیکٹ بناتا ہے
- تیز آواز کے اثرات کی اجازت دینے کے لیے
currentTimeکو ری سیٹ کرتا ہے - براؤزر آٹو پلے پالیسیوں کو سنبھالتا ہے صارف کی تعاملات سے آوازوں کو متحرک کر کے
- آڈیو حجم اور وقت کا انتظام کرتا ہے بہتر کھیل کے تجربے کے لیے
💡 سیکھنے کا ذریعہ: اس آڈیو سینڈ باکس کو دریافت کریں تاکہ جاوا اسکرپٹ کھیلوں میں آڈیو نافذ کرنے کے بارے میں مزید جان سکیں۔
پوسٹ لیکچر کوئز
جائزہ اور خود مطالعہ
آپ کا کام ایک نیا نمونہ کھیل بنانا ہے، لہذا وہاں موجود کچھ دلچسپ کھیلوں کو دریافت کریں تاکہ دیکھ سکیں کہ آپ کس قسم کا کھیل بنا سکتے ہیں۔
اسائنمنٹ
[نمون
اعلانِ لاتعلقی:
یہ دستاویز AI ترجمہ سروس Co-op Translator کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔