درخواست سورس شناسایی و حمله به حریف
#1
سلام بکس
کسی سورس مثل بازی کلش نداره یا نمیتونه درست کنه؟
البته منظورم از کلش مبارزه ی کاراکترهاس
یعنی ما چندتا کارت داریم میذاریم توی بازی و میره به سمت حریف , چطور بهش بگیم به اولین حریفی که رسیدی اول به اون حمله کن و وقتی نابود شد بره سراغ حریف بعدی؟
اینو من واقعا گیج شدم و نمیدونم چطور باید اینکارو کرد
چون هم باید رهگیری کنه هدف رو هم بره سمتش بعد که رسید بهش باهاش بجنگه وقتی مرد دوباره هدف بهدی رو رهگیری کنه بعد به اون حمله کنه و حالا اگه کسی نبود بره به سمت قلعه
هوووف خیلی سخته

خلاصه شو بخوام بگم مثل کلش رویال که البته ما توی کانس دوبعدی و تصویر از بالا یا کنار میتونیم بسازیم 39

اگه یکی میتونه صواب داره درست کنه برامون
اگه هم پولی باشه موردی نداره صحبت میکنیم سر قیمت
ولی خب برای کمک به همه مون اگه رایگان باشه بهتره 4
  پاسخ


 سپاس شده توسط:
#2
(1398/10/19، 06:53 عصر)Master Badfar نوشته است:
(1398/10/18، 05:05 عصر)mahdi.p نوشته است:
سلام بکس
کسی سورس مثل بازی کلش نداره یا نمیتونه درست کنه؟
البته منظورم از کلش مبارزه ی کاراکترهاس
یعنی ما چندتا کارت داریم میذاریم توی بازی و میره به سمت حریف , چطور بهش بگیم به اولین حریفی که رسیدی اول به اون حمله کن و وقتی نابود شد بره سراغ حریف بعدی؟
اینو من واقعا گیج شدم و نمیدونم چطور باید اینکارو کرد
چون هم باید رهگیری کنه هدف رو هم بره سمتش بعد که رسید بهش باهاش بجنگه وقتی مرد دوباره هدف بهدی رو رهگیری کنه بعد به اون حمله کنه و حالا اگه کسی نبود بره به سمت قلعه
هوووف خیلی خسته
اگه یکی میتونه صواب داره درست کنه برامون

سلام؛
فرض کنیم حریف ها متحرک هستن و فقط یک کاراکتر داریم؛ 
شما کافیه به تعداد حریف ها متغیر بسازین و بگین که موقعیت (مختصات) لحظه ای هر کدوم توی متغیر مربوطه ذخیره بشه؛
در ضمن یک متغیر هم بسازین که موقعیت (مختصات) لحظه ای پلیر توش ذخیره بشه؛
بعد بگین هر وقت پلیر نزدیک تر بود به مختصات هر کدوم اول به اون حمله کنه.... به عبارتی هر وقت فاصله پلیر کمتر بود با هر کدوم از حریف ها اول به اون حمله کنه که برای این میتونین از یک رابطه ساده توی مبحث معادله خط در ریاضیات استفاده کنین:
فرمولش به این شکله:
اگر دو نقطه A و B مختصاتشان به ترتیب (x1,y1) و (x2,y2) باشند برای محاسبه فاصله (AB) داریم:
(2^(AB = rad((x1-x2)^2+(y1-y2
(rad به معنای رادیکال هست)
اگر کشته شد (یعنی مثلاً نوار سلامت حریف اول تموم شد و یا سلامت به صفر رسید) مقدار متغیر مربوطش تغییر بکنه به عدد یک که معنیش اینه نابود شده؛ 
بعد مجدد پروسه تشخیص نزدیکترین فاصله انجام میشه و ادامه ماجـرا.... (معنیش اینه در شناسایی های اولیه به بعد باید معیار اینکه حریفمون توی بازی باشه یا نه  این باشه که مقدار متغیر مربوطه اش یک نباشه.....)
برای رسیدن به قلعه هم اگر هیچ حریفی نبود و مقدار متغیرهای مربوطه صفر بود معنیش اینه که راه برای رسیدن به قلعه بازه!

پ.ن: البته میتونین برای هر کدوم از حریف ها یک متغیر مستقل نسازین و فقط بیاین یک متغیر بسازین و مختصات لحظه ای هر اسپرایت رو هر لحظه داخل همون متغیر ذخیره کنین و بینشون با یک علامت bitwise or و یا هر کاراکتر جداکننده دیگه ای فاصله بندازین؛
مثلاً:
کد:
Sprite.X&","&Sprite.Y&"|"&Sprite2.X&","&Sprite2.Y&"|"
در نظر داشته باشین که طول و عرض مختصات هر حریف باید با یک کاما از هم جدا بشن تا بشه تشخیص داد کدوم طول هست و کدوم عرض......
بعد با استفاده از اکسپرشن tokenat مقدار هر اسپرایت حریف رو هر لحظه جدا کنین و فاصله اش رو با پلیر طبق فرمولی که گفتم حساب کنین و بعد تصمیم گیری بشه......
در صـورتی که یک متغیر برای همه حریف ها تعریف کنین در مقابلش باید یک متغیر جدا هم بسازین مثلاً با نام health_stat که با کشته شدن هر حریف مقدارش وضعیت آنی و لحظه ای سلامت هر حریف رو نمایش بده؛ مثلاً بگه اسپرایت یک موجود و اسپرایت فلان ناموجود...... ضمناً وضعیت هر اسپرایت حریف با یک کاراکتر مثل bitwise or باید جدا بشه؛ علاوه بر این مقدار پیشفرض هر اسپرایت حریف روی وضعیت موجوده؛
مثال:
با محو شدن اسپرایت یک از صفحه وضعیت اسپرایت یک رو (یعنی در واقع مقدار پیشفرض اسپرایت یک در متغیر حریف ها رو) به مقدار صفر (ناموجود) تغییر میدیم؛ توجه کنین که مقدار یک به معنی موجود بودن هست........
اجازه بدین اول مقدار پیشفرض رو بررسی کنیم؛
کد:
"Sprite1"&","&"1"&"|"&"Sprite2"&","&"1"
می بینیم که هر دو اسپرایت حریف در وضعیت موجود (یک) هستن؛
حالا بعد از محو شدن اسپرایت یک داریم:
کد:
"Sprite1"&","&"0"&"|"&"Sprite2"&","&"1"
مشخصه که چون اسپرایت یک از بین رفته و محو شده مقدارش باید به صفر تغییر کنه که این اتفاق میفته.....

بعد میگیم بعد از هر کشته شدن بررسی کنه دقیقاً کیا از دور بازی حذف شدن (یعنی مقدارشون صفر شده) و اونا رو توی یک متغیر جدا به نام kicked_out قرار میدیم (برای اینکار بازم اکسپرشن tokenat به کار میاد) و بعد برای حملات بعد پلیر به اون استناد میکنیم...... یعنی اونایی که عملاً از دور کار خارج شدن دیگه کاندیدای حمله نیستن و فقط فاصله پلیر رو با اونایی که جزء مقدار متغیر kicked_out نیستن میسنجیم.......

***** این راهیه که با دیدن سوال شما و آنی به ذهنم رسید و شاید دوستان راه های بهتری داشته باشن....*****

***** بد نبود یه تاپیک جداگانه برای پرسشتون باز میکردین ...... *****

موفق باشین 1


  پاسخ


 سپاس شده توسط: mahdi.p ، MohammadHadi ، oak ، M.gh


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information پرداخت درون برنامه مایکت کوردوا ya mahdi 0 230 1404/1/17، 05:43 عصر
آخرین ارسال: ya mahdi
  نحوه خروجی اندروید کوردوا ya mahdi 0 182 1404/1/11، 04:06 عصر
آخرین ارسال: ya mahdi
Wink حل شده مقادير لازم در environment variable ᔕinaᗪehghani 24 11,598 1403/10/23، 12:10 صبح
آخرین ارسال: Tggi
  تپسل .....فروشگاه Hamidreza 3 1,932 1403/10/22، 11:57 عصر
آخرین ارسال: Tggi
  خروجی اندروید با Intel xdk ya mahdi 0 130 1403/8/25، 02:08 عصر
آخرین ارسال: ya mahdi

پرش به انجمن: