جاوا میں اپنا پہلا Android گیم کیسے لکھیں

مصنف: John Stephens
تخلیق کی تاریخ: 1 جنوری 2021
تازہ کاری کی تاریخ: 19 مئی 2024
Anonim
RULES OF SURVIVAL AVOID YELLOW SNOW
ویڈیو: RULES OF SURVIVAL AVOID YELLOW SNOW

مواد


اینڈروئیڈ کیلئے گیم بنانے کے بہت سارے طریقے ہیں اور اس کا ایک اہم طریقہ جاوا کے ساتھ اینڈروئیڈ اسٹوڈیو میں شروع سے کرنا ہے۔ اس سے آپ کو زیادہ سے زیادہ کنٹرول ملتا ہے کہ آپ کس طرح اپنے کھیل کو دیکھنا اور برتاؤ کرنا چاہتے ہیں اور یہ عمل آپ کو ایسی مہارتیں سکھائے گا جو آپ دوسرے منظرناموں کی ایک حد میں بھی استعمال کرسکتے ہیں - چاہے آپ کسی ایپ کے لئے سپلیش اسکرین تشکیل دے رہے ہو یا آپ صرف اس کی خواہش رکھتے ہو کچھ متحرک تصاویر شامل کریں. اس بات کو مدنظر رکھتے ہوئے ، یہ ٹیوٹوریل آپ کو یہ بتانے جارہا ہے کہ اینڈروئیڈ اسٹوڈیو اور جاوا کا استعمال کرتے ہوئے ایک سادہ 2D گیم کیسے بنایا جائے۔ اگر آپ اس پر عمل کرنا چاہتے ہیں تو آپ کو تمام کوڈ اور وسائل گتھوب پر مل سکتے ہیں۔

قائم کرنے

اپنا گیم بنانے کے ل we ، ہمیں کچھ مخصوص تصورات: گیم لوپس ، تھریڈز اور کینوسس سے نمٹنے کی ضرورت ہوگی۔ شروع کرنے کے لئے ، Android اسٹوڈیو کو شروع کریں۔ اگر آپ کے پاس یہ انسٹال نہیں ہے تو پھر ہمارا android ڈاؤن لوڈ ، اسٹوڈیو سے تعارف چیک کریں ، جو انسٹالیشن کے عمل سے آگے بڑھتا ہے۔ اب ایک نیا پروجیکٹ شروع کریں اور یقینی بنائیں کہ آپ نے ’خالی سرگرمی‘ ٹیمپلیٹ کا انتخاب کیا ہے۔ یہ ایک کھیل ہے ، لہذا یقینا آپ کو FAB بٹن جیسے معاملات کو پیچیدہ کرنے والے عناصر کی ضرورت نہیں ہے۔


پہلی چیز جو آپ کرنا چاہتے ہیں وہ ہے تبدیل کرنا AppCompatActivity کرنے کے لئے سرگرمی. اس کا مطلب ہے کہ ہم ایکشن بار کی خصوصیات کو استعمال نہیں کریں گے۔

اسی طرح ہم بھی اپنے کھیل کو پوری اسکرین بنانا چاہتے ہیں۔ onCreate () پر کال کانٹوینٹ ویو () پر کال سے پہلے درج ذیل کوڈ شامل کریں:

getWindow (). setFlags (ونڈو مینج۔آر۔لئ آئوٹ پیرامس۔ ایف ایل اے جی_فولس سکرین ، ونڈو مینج۔لئ آئوٹپرمز ۔فلاگ_فولس سکرین)؛ this.requestWindowEeature (ونڈو.FEATURE_NO_TITLE)؛

نوٹ کریں کہ اگر آپ کچھ کوڈ لکھتے ہیں اور اس کی روشنی سرخ رنگ میں ہوجاتی ہے تو ، اس کا شاید مطلب یہ ہوگا کہ آپ کو کلاس درآمد کرنے کی ضرورت ہوگی۔ دوسرے لفظوں میں ، آپ کو Android اسٹوڈیو کو یہ بتانے کی ضرورت ہے کہ آپ کچھ بیانات استعمال کرنا چاہتے ہیں اور انہیں دستیاب کروانا چاہتے ہیں۔ اگر آپ صرف نیچے لکیر والے لفظ پر کہیں بھی کلک کرتے ہیں اور پھر Alt + Enter کو دباتے ہیں تو پھر یہ آپ کے لئے خود بخود ہو جائے گا!


اپنے گیم کا نظارہ بنانا

آپ ایسے ایپس کے لئے استعمال ہوسکتے ہیں جو بٹن ، تصاویر اور لیبل جیسے نظارے کی ترتیب کی وضاحت کے لئے XML اسکرپٹ کا استعمال کرتے ہیں۔ یہی لائن ہے سیٹ کانٹ ویو ہمارے لئے کر رہا ہے۔

لیکن ایک بار پھر ، یہ ایک ایسا کھیل ہے جس کے معنی میں براؤزر ونڈوز یا سکرولنگ ری سائیکلر کے نظارے رکھنے کی ضرورت نہیں ہے۔ اس کی بجائے ، ہم اس کے بجائے کینوس دکھانا چاہتے ہیں۔ اینڈروئیڈ اسٹوڈیو میں کینوس بالکل ویسا ہی ہوتا ہے جیسا کہ فن میں ہوتا ہے: یہ ایک ایسا میڈیم ہے جس پر ہم اپنی طرف متوجہ کرسکتے ہیں۔

لہذا پڑھنے کے ل that اس لائن کو تبدیل کریں:

سیٹ کانٹینٹ ویو (نیا گیم ویو (یہ))

آپ کو معلوم ہوگا کہ یہ ایک بار پھر سرخ رنگ کی روشنی میں ہے۔ لیکن ابھی اگر آپ Alt + Enter دبائیں تو ، آپ کے پاس کلاس درآمد کرنے کا آپشن نہیں ہوگا۔ اس کے بجائے ، آپ کے پاس اختیار ہے بنانا ایک معیار. دوسرے لفظوں میں ، ہم اپنی ہی کلاس بنانے والے ہیں جو کینوس پر کیا چلنے والی ہے اس کی وضاحت کرے گی۔ یہی وہ چیز ہے جو ہمیں ریڈی میڈ نظارے کے بجائے اسکرین کی طرف راغب کرنے کی اجازت دے گی۔

تو بائیں طرف آپ کے درجات میں پیکیج کے نام پر دائیں کلک کریں اور منتخب کریں نیا> کلاس. اب آپ کو اپنی کلاس بنانے کے لئے ونڈو پیش کیا جائے گا اور آپ اسے کال کرنے جارہے ہیں کھیل ہی کھیل میں دیکھیں. سپر کلاس کے تحت ، لکھیں: android.view.SurfaceView اس کا مطلب یہ ہے کہ سرفیس ویو سے کلاس طریقوں - اس کی صلاحیتوں کا وارث ہوگا۔

انٹرفیس (زبانیں) کے خانے میں ، آپ لکھیں گے android.view.SurfaceHolder.Callback. کسی بھی کلاس کی طرح ، اب ہمیں اپنا کنسٹرکٹر بنانے کی ضرورت ہے۔ یہ کوڈ استعمال کریں:

نجی مین تھریڈ تھریڈ؛ عوامی گیم ویو (سیاق و سباق) {سپر (سیاق و سباق)؛ getHolder (). addCallback (یہ)؛ }

ہر بار جب ہماری کلاس کو ایک نیا اعتراض بنانے کے لئے کہا جاتا ہے (اس معاملے میں ہماری سطح) ، یہ کنسٹرکٹر کو چلائے گا اور اس سے ایک نئی سطح پیدا ہوگی۔ لائن ’’ سپر ‘‘ کو سپر کلاس کہتے ہیں اور ہمارے معاملے میں وہ سرفیس ویو ہے۔

کال بیک شامل کرکے ، ہم واقعات کو روکنے کے اہل ہیں۔

اب کچھ طریقوں کو اوور رائڈ کریں:

@ آؤرائیڈ پبلک باطل سطح کی سطح (چینج ہولڈر ہولڈر ، انٹ فارمیٹ ، انٹ چوڑائی ، انٹ اونچائی)

یہ بنیادی طور پر ہمیں سپر کلاس (سرفیس ویو) میں (اسی وجہ سے نام) طریقوں کو اوور رائڈ کرنے کی اجازت دیتے ہیں۔ اب آپ کو اپنے کوڈ میں مزید سرخ رنگ کی لکیر نہیں بنانی چاہئے۔ اچھا

آپ نے ابھی ایک نئی کلاس تشکیل دی ہے اور ہر بار جب ہم اس کا حوالہ دیتے ہیں تو ، یہ آپ کے کھیل کو پینٹ کرنے کے لئے کینوس بنائے گا۔ کلاسز بنانا اشیاء اور ہمیں ایک اور کی ضرورت ہے۔

دھاگے بنانا

ہماری نئی کلاس کو بلایا جا رہا ہے مین ٹریڈ. اور اس کا کام ایک دھاگہ بنانا ہوگا۔ ایک تھریڈ بنیادی طور پر کوڈ کے متوازی کانٹے کی طرح ہوتا ہے جو بیک وقت ساتھ ساتھ چل سکتا ہے مرکزی آپ کے کوڈ کا ایک حصہ آپ ایک ساتھ بہت سارے دھاگے چل سکتے ہیں ، اس طرح سخت ترتیب پر قائم رہنے کی بجائے چیزیں بیک وقت ہونے دیتی ہیں۔ یہ کھیل کے ل for اہم ہے ، کیوں کہ ہمیں اس بات کو یقینی بنانا ہوگا کہ یہ بہت آسانی سے چل رہا ہے ، چاہے وہ آسانی سے چلتا رہے۔

اپنی نئی کلاس بنائیں جس طرح آپ نے پہلے کی تھی اور اس بار اس میں توسیع ہونے والی ہے تھریڈ. کنسٹرکٹر میں ہم ابھی فون کرنے جارہے ہیں سپر (). یاد رکھنا ، یہ ایک سپر کلاس ہے ، جو تھریڈ ہے ، اور جو ہمارے لئے تمام بھاری بھرکم لفٹنگ کرسکتی ہے۔ یہ ایسے برتنوں کو دھونے کے لئے پروگرام بنانا ہے جس کو ابھی فون کیا جاتا ہے واشنگ مشین().

جب اس کلاس کو بلایا جاتا ہے تو ، یہ ایک الگ تھریڈ تیار کرنے جا رہا ہے جو مرکزی چیز کی ایک شاٹ کے طور پر چلتا ہے۔ اور یہ ہے سے یہاں کہ ہم اپنا گیم ویو بنانا چاہتے ہیں۔ اس کا مطلب ہے کہ ہمیں گیم ویو کلاس کو بھی حوالہ دینے کی ضرورت ہے اور ہم سرفیس ہولڈر کا استعمال بھی کر رہے ہیں جس میں کینوس موجود ہے۔ لہذا اگر کینوس کی سطح ہے تو ، سرفیس ہولڈر ایزل ہے۔ اور گیم ویو وہ ہے جو اس سب کو ایک ساتھ رکھتا ہے۔

پوری چیز اس طرح نظر آنی چاہئے:

پبلک کلاس مین تھریڈ نے دھاگے کو بڑھایا {نجی سطحی ہولڈر سطحی ہولڈر؛ نجی گیم ویو گیم ویو؛ عوامی مین تھریڈ (سرفیس ہولڈر سطح ہولڈر ، گیم ویو گیم ویو) {سپر ()؛ this.surfaceHolder = سطح ہولڈر؛ this.gameView = گیم ویو؛ }

شوئٹ ہمارے پاس اب گیم ویو اور ایک تھریڈ ہے!

کھیل لوپ کی تشکیل

ہمارے پاس اب اپنا کھیل بنانے کے لئے ہمیں خام مال کی ضرورت ہے ، لیکن ایسا کچھ نہیں ہو رہا ہے۔ یہیں سے گیم لوپ آتا ہے۔ بنیادی طور پر ، یہ کوڈ کا ایک لوپ ہے جو گول اور گول ہوتا ہے اور اسکرین ڈرائنگ سے پہلے آدانوں اور متغیرات کو چیک کرتا ہے۔ ہمارا مقصد اسے ہر ممکن حد تک مستقل بنانا ہے ، تاکہ فریمٹریٹ میں کوئی ہٹ دھرمی یا ہچکی نہ ہو ، جسے میں تھوڑی دیر بعد دریافت کروں گا۔

ابھی کے لئے ، ہم ابھی بھی اس میں ہیں مین ٹریڈ کلاس اور ہم سپر کلاس سے ایک طریقہ کو اوور رائڈ کرنے جارہے ہیں۔ یہ ایک ہے رن.

اور یہ کچھ اس طرح ہے:

@ اوور رائڈ پبلک باطل رن () {جبکہ (چل رہا ہے) {کینوس = کیل؛ کوشش کریں {کینوس = اس.سرفیس ہولڈر.لاک کینوس ()؛ مطابقت پذیر (سطح ہولڈر) {this.gameView.update ()؛ this.gameView.draw (کینوس)؛ }} کیچ (رعایت ای)}} آخر {اگر (کینوس! = null) {سطح {ہولڈر.نلوک کینوس اینڈ پوسٹ (کینوس) آزمائیں { } کیچ (رعایت ای) {e.PrintStackTrace ()؛ }}}}

آپ کو بہت سی خاکہ نگاری نظر آئے گی ، لہذا ہمیں کچھ اور متغیرات اور حوالہ جات شامل کرنے کی ضرورت ہے۔ واپس اوپر کی طرف جائیں اور شامل کریں:

نجی سطحی ہولڈر سطح ہولڈر؛ نجی گیم ویو گیم ویو؛ نجی بولین چل رہا ہے؛ عوامی جامد کینوس کینوس؛

کینوس درآمد کرنا یاد رکھیں۔ کینوس وہ چیز ہے جو ہم دراصل کھینچ رہے ہوں گے۔ جہاں تک ‘لاک کینوس’ کا تعلق ہے ، یہ ضروری ہے کیونکہ یہ وہی چیز ہے جو کینوس کو لازمی طور پر ان پر جمی کرنے کی اجازت دیتی ہے۔ یہ اس لئے اہم ہے کیونکہ بصورت دیگر ، آپ کو ایک ساتھ ایک ساتھ کئی دھاگوں کو اپنی طرف متوجہ کرنے کی کوشش کر سکتے ہیں۔ بس اتنا جان لیں کہ کینوس میں ترمیم کرنے کے ل، ، آپ کو پہلے ہونا ضروری ہے لاک کینوس

اپ ڈیٹ ایک ایسا طریقہ ہے جسے ہم تیار کرنے جارہے ہیں اور یہی وہ جگہ ہے جہاں بعد میں تفریحی سامان آئے گا۔

کوشش کریں اور کیچ دریں اثنا جاوا کی محض ضرورتیں ہیں جو یہ ظاہر کرتی ہیں کہ ہم استثناء (غلطیاں) آزمانے اور سنبھالنے کے لئے تیار ہیں جو کینوس کے لئے تیار نہیں ہیں تو ہوسکتا ہے۔

آخر میں ، جب ہم اس کی ضرورت پڑیں تو ہم اپنا دھاگہ شروع کرنے کے قابل ہونا چاہتے ہیں۔ ایسا کرنے کے ل we ، ہمیں یہاں ایک اور طریقہ کی ضرورت ہوگی جو چیزوں کو حرکت میں لانے کی اجازت دیتی ہے۔ یہی ہے چل رہا ہے متغیر کے لئے ہے (نوٹ کریں کہ بولین متغیر کی ایک قسم ہے جو ہمیشہ ہی سچا یا غلط ہوتا ہے)۔ اس طریقہ کو ربط میں شامل کریں مین ٹریڈ کلاس:

عوامی باطل سیٹ رننگ (بولین isRunning) {چل رہا ہے = isRunning؛ }

لیکن اس مقام پر ، ایک چیز کو اب بھی اجاگر کرنا چاہئے اور وہ ہے اپ ڈیٹ. اس کی وجہ یہ ہے کہ ہم نے ابھی تک اپ ڈیٹ کا طریقہ تشکیل نہیں دیا ہے۔ تو واپس میں پاپ کھیل ہی کھیل میں دیکھیں اور اب طریقہ شامل کریں۔

عوامی باطل اپ ڈیٹ ()}}

ہمیں بھی ضرورت ہے شروع کریں دھاگہ! ہم اپنے میں یہ کرنے جا رہے ہیں سطح کی تشکیل شدہ طریقہ:

@ آؤرائیڈ پبلک باطل سطح (کریٹ ہولڈر ہولڈر) بنا ہوا {thread.setRunning (true)؛ تھریڈ اسٹارٹ ()؛ }

سطح ختم ہونے پر ہمیں دھاگے کو بھی روکنے کی ضرورت ہے۔ جیسا کہ آپ نے اندازہ لگایا ہوگا ، ہم اس کو سنبھال لیں گے سطح ڈسٹروائزڈ طریقہ لیکن دیکھنا یہ ہے کہ دھاگے کو روکنے میں درحقیقت متعدد کوششیں ہوسکتی ہیں ، ہم اسے روکنے اور استعمال کرنے جارہے ہیں کوشش کریں اور کیچ ایک بار پھر پسند کریں:

@ اووررائڈ پبلک باطل سطح کے ڈسٹروائزڈ (سرفیس ہولڈر ہولڈر) {بولین دوبارہ کوشش = سچ؛ جبکہ (دوبارہ کوشش کریں) تھریڈ سیٹ کریں۔ رننگ (جھوٹی)؛ موضوع.جوائن ()؛ } کیچ (مداخلت کا تصور e). e.PrintStackTrace ()؛ ry دوبارہ کوشش = غلط؛ }

اور آخر کار ، کنسٹرکٹر کی طرف بڑھیں اور اپنے تھریڈ کی نئی مثال تیار کرنا یقینی بنائیں ، بصورت دیگر آپ کو خوفناک کالے پوائنٹر کی رعایت ملے گی۔ اور پھر ہم گیم ویو کو قابل توجہ بنانے جا رہے ہیں ، مطلب یہ واقعات کو سنبھال سکتا ہے۔

تھریڈ = نیا مین ٹریڈ (گیٹ ہولڈر ()، اس)؛ سیٹ فوکس ایبل (سچ)؛

اب آپ کر سکتے ہیں آخر میں اصل میں اس چیز کی جانچ! یہ ٹھیک ہے ، رن پر کلک کریں اور اس پر چاہئے دراصل کسی غلطی کے بغیر چلائیں۔ اڑا دیا جائے تیار!

یہ ہے… یہ… ایک خالی اسکرین ہے! وہ سب کوڈ ایک خالی سکرین کے لئے۔ لیکن ، یہ ایک خالی اسکرین ہے موقع. واقعات کو سنبھالنے کے لئے آپ نے اپنی سطح کو اوپر کر لیا ہے اور گیم لوپ کے ساتھ چل رہا ہے۔ اب جو چیزیں باقی ہیں وہ چیزیں بنانا ہے۔ اس سے بھی فرق نہیں پڑتا ہے کہ اگر آپ نے اس نکتے تک سبق میں ہر چیز کی پیروی نہیں کی۔ نقطہ یہ ہے کہ ، آپ شاندار کھیل بنانے شروع کرنے کے لئے آسانی سے اس کوڈ کی ریسائیکل کرسکتے ہیں!

گرافکس کرنا

ٹھیک ہے ، اب ہمارے پاس آنچنے کے لئے ایک خالی اسکرین موجود ہے ، بس ہمیں اس کی طرف راغب کرنے کی ضرورت ہے۔ خوش قسمتی سے ، یہ آسان حصہ ہے۔ آپ کو بس اتنا کرنے کی ضرورت ہے کہ ہمارے میں ڈرا کے طریقہ کار کو اوور رائڈ کریں کھیل ہی کھیل میں دیکھیں کلاس اور پھر کچھ خوبصورت تصاویر شامل کریں:

@ اوور رائیڈ پبلک باطل ڈرا (کینوس کینوس) {سپر ڈرا (کینوس)؛ اگر (کینوس! = null) {canvas.draw coloror (color.WHITE)؛ پینٹ پینٹ = نیا پینٹ ()؛ پینٹ.سیٹ کلر (رنگ. آرجیبی (250 ، 0 ، 0))؛ کینواس ڈاٹ آرکٹ (100 ، 100 ، 200 ، 200 ، پینٹ)؛ }

اسے چلائیں اور اب آپ کو دوسری صورت میں سفید اسکرین کے اوپر بائیں طرف ایک خوبصورت سرخ مربع ہونا چاہئے۔ یقینا This یہ بہتری ہے۔

آپ اپنے پورے گیم کو نظریاتی طور پر اس طریقہ کار کے اندر چسپاں کرکے (اور اوور رائیڈنگ) بنا سکتے ہیں onTouchEvent ان پٹ کو سنبھالنے کے ل)) لیکن یہ چیزوں کے بارے میں جانے کا ایک بہت اچھا طریقہ نہیں ہوگا۔ ہمارے لوپ کے اندر نیا پینٹ رکھنا چیزوں کو کافی سست کردے گا اور یہاں تک کہ اگر ہم اسے کہیں اور رکھ دیتے ہیں تو ، بہت زیادہ کوڈ شامل کرکے ڈرا طریقہ بدصورت اور اس پر عمل کرنا مشکل ہو جائے گا۔

اس کے بجائے ، کھیل کی اشیاء کو ان کی اپنی کلاسوں سے نمٹنے کے لئے یہ بہت زیادہ سمجھ میں آتا ہے۔ ہم ایک ایسے کردار کے ساتھ شروع کرنے جا رہے ہیں جو ایک کردار دکھاتا ہے اور اس کلاس کو بلایا جائے گا کریکٹرپرائٹ. آگے بڑھو اور وہ بناؤ۔

یہ کلاس کینوس پر سپرائٹ کھینچنے والی ہے اور اس کی طرح نظر آئے گی

پبلک کلاس کریکٹرپرائٹ {نجی بٹ نقشہ کی تصویر؛ عوامی کریکٹرپرائٹ (بٹ میپ bmp) {شبیہہ = bmp؛ } عوامی باطل ڈرا (کینوس کینوس) {canvas.drawBitmap (تصویری ، 100 ، 100 ، کال) }

اب اس کو استعمال کرنے کے ل you ، آپ کو پہلے بٹ نقشہ کو لوڈ کرنا پڑے گا اور پھر کلاس سے فون کرنا ہوگا کھیل ہی کھیل میں دیکھیں. کا حوالہ شامل کریں نجی کیریکٹرپرائٹ کریکٹرپرائز اور پھر میں سطح کی تشکیل شدہ طریقہ ، لائن شامل کریں:

کیٹرسپرائٹ = نیا کریکٹرپرپائٹ (بٹ میپ فیکٹری۔ ڈیک کوڈ ریسورس (گیٹ ریسورس ()، آر ڈرائبل ایواڈگرین))؛

جیسا کہ آپ دیکھ سکتے ہیں ، ہم جس بٹ میپ کو لوڈ کررہے ہیں وہ وسائل میں محفوظ ہے اور اسے اے ڈی گرین کہا جاتا ہے (یہ پچھلے کھیل سے تھا)۔ اب آپ بس اتنا کرنے کی ضرورت ہے کہ اس بٹ نقشہ کو نئی کلاس میں پاس کریں ڈرا طریقہ:

کیریکٹرپرائٹ ڈاٹ ڈرا (کینوس)؛

اب چلائیں پر کلک کریں اور آپ کو اپنی سکرین پر اپنا گرافک نمودار ہونا چاہئے! یہ بیبو ہے۔ میں اسے اپنی اسکول کی درسی کتابوں میں کھینچتا تھا۔

اگر ہم اس چھوٹے سے لڑکے کو حرکت دینا چاہتے ہیں تو کیا ہوگا؟ آسان: ہم اس کے عہدوں کے لئے صرف x اور y متغیرات تشکیل دیتے ہیں اور پھر ان اقدار کو ایک میں تبدیل کرتے ہیں اپ ڈیٹ طریقہ

تو حوالہ جات اپنے میں شامل کریں کریکٹرپرائٹ اور پھر اس پر اپنا بٹ نقشہ کھینچیں x ، y. اپ ڈیٹ کا طریقہ یہاں بنائیں اور ابھی ہم صرف کوشش کرنے جارہے ہیں:

y ++؛

جب بھی کھیل لوپ چلتا ہے ، ہم کردار کو اسکرین سے نیچے لے جاتے ہیں۔ یاد رکھنا ، y نقاط کو اوپر سے ماپا جاتا ہے 0 سکرین کے سب سے اوپر ہے. یقینا ہمیں فون کرنا ہوگا اپ ڈیٹ طریقہ میں کریکٹرپرائٹ سے اپ ڈیٹ طریقہ میں کھیل ہی کھیل میں دیکھیں.

دوبارہ پلے دبائیں اور اب آپ دیکھیں گے کہ آپ کی شبیہہ آہستہ آہستہ سکرین سے نیچے کھوجتی ہے۔ ہم ابھی تک کوئی گیم ایوارڈ نہیں جیت رہے ہیں لیکن یہ ایک آغاز ہے!

ٹھیک ہے ، چیزیں بنانے کے لئے قدرے مزید دلچسپ بات یہ ہے کہ میں یہاں کچھ 'باونسی بال' کوڈ چھوڑنے جا رہا ہوں۔ اس سے اسکرین کے چاروں طرف ہمارے گرافک اچھال ہوجائے گا ، جیسے پرانے ونڈوز اسکرین سیورز۔ تم جانتے ہو ، عجیب طرح سے ہپنوٹک ہیں۔

عوامی باطل اپ ڈیٹ () {x + = x مختلف؛ y + = yVelocity؛ اگر ((x & gt؛ اسکرین وڈتھ - image.getWidth ()) || (x & lt؛ 0)) V xVelocity = xVelocity * -1؛ } if ((y & gt؛ اسکرین ہائٹ - image.getHeight ()) || (y & lt؛ 0)) V yVelocity = yVelocity * -1؛ }

آپ کو ان متغیرات کی وضاحت کرنے کی بھی ضرورت ہوگی:

نجی INT xVelocity = 10؛ نجی INT yVelocity = 5؛ نجی INT اسکرین وڈتھ = وسائل.بیٹ سسٹم (). getDisplayMetrics (). چوڑائی پکسلز؛ نجی INT اسکرین ہائٹ = وسائل.بیٹ سسٹم (). getDisplayMetrics (). اونچائی پکسلز؛

اصلاح

وہاں ہے بہت کچھ یہاں ڈھلنے کے ل player ، پلیئر ان پٹ کو سنبھالنے سے لے کر ، اسکیلنگ امیجز تک ، اسکرین پر ایک ساتھ ہی گھومتے ہوئے بہت سارے کرداروں کا نظم و نسق تک۔ ابھی ، کردار اچھ .ا ہے لیکن اگر آپ بہت قریب سے دیکھیں گے تو ہلکی سی ہنگامہ آرائی ہے۔ یہ کوئی خوفناک بات نہیں ہے لیکن حقیقت یہ ہے کہ آپ اسے ننگی آنکھوں سے دیکھ سکتے ہیں ایک انتباہی علامت ہے۔ جسمانی آلہ کے مقابلے میں رفتار بھی ایمولیٹر پر بہت مختلف ہوتی ہے۔ اب سوچئے کہ جب آپ کے پاس ہوتا ہے تو کیا ہوتا ہے ٹن ایک بار اسکرین پر چل رہا ہے!

اس مسئلے کے چند حل ہیں۔ میں جس کے ساتھ شروع کرنا چاہتا ہوں ، وہ ہے نجی انٹراجر بنانا مین ٹریڈ اور اسے فون کرو ہدف ایف پی ایس. اس کی قیمت 60 ہوگی۔میں کوشش کروں گا اور اپنے کھیل کو اس رفتار سے چلانے کے لئے جاؤں گا اور اس دوران ، میں اس بات کو یقینی بنانے کے لئے جانچ کروں گا۔ اس کے ل I ، میں بھی نجی ڈبل کال کرنا چاہتا ہوں اوسط ایف پی ایس.

میں بھی اپ ڈیٹ کرنے جا رہا ہوں رن ہر گیم لوپ میں کتنا وقت لگتا ہے اور پھر اس کی پیمائش کرنے کا طریقہ توقف اگر گیم ٹارگٹ ایف پی ایس سے آگے ہو تو عارضی طور پر اس گیم لوپ سے باہر ہوجائیں۔ اس کے بعد ہم حساب کتاب کرنے جارہے ہیں کہ یہ کتنا لمبا ہے ابھی لیا اور پھر پرنٹ کریں تاکہ ہم اسے لاگ میں دیکھ سکیں۔

@ اوور رائڈ پبلک باطل رن () {لمبا اسٹارٹ ٹائم؛ طویل وقت ملس؛ طویل انتظار کا وقت؛ لمبی کل ٹائم = 0؛ int فریمکاونٹ = 0؛ لمبی ہدف ٹائم = 1000 / ہدف ایف پی ایس؛ جبکہ (چل رہا ہے) {startTime = System.nanoTime ()؛ کینوس = null؛ کوشش کریں {کینوس = اس.سرفیس ہولڈر.لاک کینوس ()؛ مطابقت پذیر (سطح ہولڈر) {this.gameView.update ()؛ this.gameView.draw (کینوس)؛ }} کیچ (رعایت ای)}} آخر {اگر (کینوس! = null) {سطح {ہولڈر.نلوک کینوس اینڈ پوسٹ (کینوس) آزمائیں { } کیچ (رعایت ای) {e.PrintStackTrace ()؛ ؛}} ٹائم ملس = (سسٹم.انوٹو ٹائم () - اسٹارٹائم) / 1000000؛ ویٹ ٹائم = ٹارگٹ ٹائم - ٹائم ملز؛ کوشش کریں {this.s خوب (ویٹ ٹائم)؛ } کیچ (استثناء ای) {} ٹوٹل ٹائم + = سسٹم.نانو ٹائم () - اسٹارٹ ٹائم؛ فریم کاؤنٹی ++؛ اگر (فریمکاؤنٹ == ہدف ایف پی ایس) {اوسط ایف پی ایس = 1000 / ((ٹوٹل ٹائم / فریمکاؤنٹ) / 1000000)؛ فریم کاونٹ = 0؛ ٹوٹل ٹائم = 0؛ سسٹم آؤٹ.پرنٹلن (اوسط ایف پی ایس)؛ }}}

اب ہمارا گیم اس کی ایف پی ایس 60 کو لاک کرنے کی کوشش کر رہا ہے اور آپ کو معلوم ہونا چاہئے کہ یہ عام طور پر ایک جدید ڈیوائس پر کافی حد تک مستحکم 58-62 ایف پی ایس کی پیمائش کرتا ہے۔ ایمولیٹر پر اگرچہ آپ کو ایک مختلف نتیجہ مل سکتا ہے۔

اسے 60 سے 30 تک تبدیل کرنے کی کوشش کریں اور دیکھیں کہ کیا ہوتا ہے۔ کھیل سست اور یہ چاہئے اب اپنے لاک کیٹ میں 30 پڑھیں۔

خیالات کو بند کرنا

کارکردگی کو بہتر بنانے کے لئے بھی ہم کچھ اور کام کرسکتے ہیں۔ یہاں اس موضوع پر ایک عمدہ بلاگ پوسٹ ہے۔ لوپ کے اندر پینٹ یا بٹ نقشہ کی نئی مثالیں بنانے سے کبھی پرہیز کرنے کی کوشش کریں اور ساری شروعات کریں باہر کھیل شروع ہونے سے پہلے۔

اگر آپ اگلا ہٹ اینڈروئیڈ گیم بنانے کی منصوبہ بندی کر رہے ہیں تو وہاں موجود ہیں یقینا ان دنوں اس کے بارے میں جاننے کے آسان اور زیادہ موثر طریقے۔ لیکن کینوس کی طرف راغب ہونے کے قابل ہونے کے ل definitely یقینی طور پر ابھی بھی استعمال کے معاملات ہیں اور یہ آپ کے ذخیرے میں شامل کرنا ایک انتہائی مفید مہارت ہے۔ مجھے امید ہے کہ اس رہنما نے کسی حد تک مدد کی ہے اور آپ کے آئندہ کوڈنگ کے منصوبوں میں آپ کو نیک تمنائیں ہوں گی۔

اگلےجاوا کے لئے ایک ابتدائی رہنما

آئی فون 7 ، 7 پلس ، 8 اور 8 پلس اب جرمنی میں فروخت کے لئے نہیں ہیں۔ان آلات کو ایپل ڈاٹ کام کے ساتھ ساتھ جرمنی میں ایپل کے 15 سرکاری اسٹوروں سے بھی نکالا گیا ہے۔فروخت پر پابندی قانونی پریشانیوں کے جواب...

پچھلے سال یا اس میں ، OEM نے نمایاں طور پر اپنے طرز عمل کو تبدیل کیا ہے ، جس کا مقصد پولش کے مقابلے میں نئی ​​خصوصیات کو تلاش کرنا ہے ، اور کچھ کرنے والے پہلے شخص کی حیثیت سے جوش و خروش پیدا کرنا ہے۔...

مزید تفصیلات