هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.


 
الرئيسيةجستجوأحدث الصورثبت نامورود

 

 Game Programming

اذهب الى الأسفل 
2 مشترك
نويسندهپيام
00110




تعداد پستها : 123
Location : Tab
Registration date : 2008-05-03

Game Programming Empty
پستعنوان: Game Programming   Game Programming Icon_minitimeالثلاثاء سبتمبر 02, 2008 8:30 am

به نام زیبایی مطلق

با توجه به اینکه اقا حامد هم فرمودن که برنامه نویسی بازی واسه موبایل از مباحث مهم هست این تاپیک رو ایجاد کردم که هر کس سوالی داره اینجا بپرسه فقط مثل تاپیک قبلی نشه که حامد جان بیاد و اینجا رو هم تخته کنه .

Razz Smile Wink I love you
بازگشت به بالاي صفحه اذهب الى الأسفل
00110




تعداد پستها : 123
Location : Tab
Registration date : 2008-05-03

Game Programming Empty
پستعنوان: !!!   Game Programming Icon_minitimeالثلاثاء سبتمبر 02, 2008 8:36 am

من سوالامو شروع میکنم بپرسم تا شما هم خجالت نکشید : Laughing

ایا میشه برنامه رو طوری نوشت که تو گوشی هایی با اندازه صفحه متفاوت کار کنه ؟؟؟
دوم اینکه چطور میشه فهمید که کدام گوشی ها اندازشون مثلا 240 در 320 هست ؟؟؟
به طور کلی شما واسه کدوم اندازه بازی تون رو طراحی میکنید که بیشترین تعداد گوشی رو داشته باشه ؟؟؟
بازگشت به بالاي صفحه اذهب الى الأسفل
haamoon




تعداد پستها : 308
Registration date : 2008-02-07

Game Programming Empty
پستعنوان: رد: Game Programming   Game Programming Icon_minitimeالأربعاء سبتمبر 03, 2008 2:04 am

خوب یک بازی یک سری resource داره که وابسته به اندازه ی صفحه هستند.
مثلا تصویر بازیکن شما که برای screen های بزرگ باید بزرگ تر باشه.
دقت کنید که همیشه کد رو میتونید یه جوری بزنید که کاملا مستقل به اندازه screen باشه. یا طول و عرض رو بگیره و طبق اون رفتار کنه.

پس فقط می مونه resource ها.
شرکت های بازی سازی چون می خوان یک بازی رو به یک نفر بفروشن و اونم می تونه فقط روی یک گوشی نصبش کنه براساس نوع گوشی طرف فایل مربوط به اون گوشی رو با resource های مربوط به اون اندازه ی صفحه بهش می ده.

ولی تو برنامه های free که دوست دارید یک فایل رو پخش کنید و رو همه ی گوشی ها اجرا بشه تا به سرعت به دست همه برسه چندتا کار بکنید:
1- resource ها رو تبدیل کنید، مثلا اندازه ی عکس ها رو بصورت run time تغییر بدین و بعد ازش استفاده کنید. مشکل این کار اینه که resize عکس های بزرگ زمان زیادی می بره و عکس ها بعد از resize شدن فضای زیادی از heap اشغال می کنن. مثلا یک عکس 100X100 حدودا 40KB فضا می گیره.

2- خوب برای چندتا screen size مهم resource ها رو بسازید و همه رو تو jar قرار بدین و وقتی برنامه اجرا می شه بر حسب اندازه ی صفحه از یکی شونه استفاده می کنه. 95% ها 3 تا screen size دارن. تو این کار مشکل سرعت و ram رو ندارین ولی حجم jar بالاتره.

3-راه حل سوم که خیلی ازش استفاده می شه. اینجوری هست که شما اصلا resource ها رو تو برنامه نمی ذارید وقتی برای اولین بار برنامه اجرا می شه به سرور وصل می شه و بر حسب اندازه ی صفحه resource ها رو دانلود می کنه و تو RecordStore ذخیره می کنه و از اون به بعد ازش استفاده می کنه. این روش مشکل حجم رو خیلی خوب حل می کنه چون اصلا resource ها رو تو برنامه نذاشتید و مشکل سرعت هم نداره ولی خوب مشکل نبود GPRS تو ایران استفاده ازش رو محدود می کنه.
بازگشت به بالاي صفحه اذهب الى الأسفل
00110




تعداد پستها : 123
Location : Tab
Registration date : 2008-05-03

Game Programming Empty
پستعنوان: !!!   Game Programming Icon_minitimeالخميس سبتمبر 04, 2008 1:35 am

ممنون امیر جان خیلی کمک کرد ...

یه سوال دیگه من دارم یه بازی تانک البته خیلی ابتدایی و واسه یادگیری خودم درست میکنم من تانک رو با توسعه دادن کلاس Sprite درست کردم و توپ ( بمب ) اون رو هم یه Sprite ساده تعریف کردم در این حالت فقط یک توپ میشه شلیک کرد و تا زمانی که اون توپ به جایی برخورد نکرده نمیشه توپ دیگه ای رو شلیک کرد واسه حل این مشکل چه راه حلی رو پیش نهاد میکنید ؟؟؟
بازگشت به بالاي صفحه اذهب الى الأسفل
haamoon




تعداد پستها : 308
Registration date : 2008-02-07

Game Programming Empty
پستعنوان: رد: Game Programming   Game Programming Icon_minitimeالخميس سبتمبر 04, 2008 3:07 am

خوب این کار ربطی به j2me نداره! ولی شما مختصات توپ رو انقدر تغییر می دی تا بالاخره به زمین برخورد کنه. خوب یک متغییر boolean canKickABall تعریف کن که وقتی توپ رو شلیک می کنی false کنش و وقتی توپ به زمین رسید و ترکید true بکنش. و وقتی هم طرف می خواد بمب بزنه چک کن ببین اگر این متغییر true هست بمب رو پرتاب کن.
بازگشت به بالاي صفحه اذهب الى الأسفل
00110




تعداد پستها : 123
Location : Tab
Registration date : 2008-05-03

Game Programming Empty
پستعنوان: !!!   Game Programming Icon_minitimeالخميس سبتمبر 04, 2008 8:14 am

haamoon نوشته است:
خوب این کار ربطی به j2me نداره! ولی شما مختصات توپ رو انقدر تغییر می دی تا بالاخره به زمین برخورد کنه. خوب یک متغییر boolean canKickABall تعریف کن که وقتی توپ رو شلیک می کنی false کنش و وقتی توپ به زمین رسید و ترکید true بکنش. و وقتی هم طرف می خواد بمب بزنه چک کن ببین اگر این متغییر true هست بمب رو پرتاب کن.
من سوالم رو بد مطرح کردم
ممنون من الان همین کار رو کردم ولی میخوام که کاربر بتونه بیش از یک توپ رو شلیک کنه یعنی وقتی یدونه شلیک کرد اگه دوباره شلیک کرد و توپ قبلی هنوز به جایی برخورد نکرده توپ دوم هم شلیک بشه ...
بازگشت به بالاي صفحه اذهب الى الأسفل
haamoon




تعداد پستها : 308
Registration date : 2008-02-07

Game Programming Empty
پستعنوان: رد: Game Programming   Game Programming Icon_minitimeالخميس سبتمبر 04, 2008 1:00 pm

خوب، برای هر شلیک یک new sprite بکن و وقتی به زمین رسید بندازش دور. برای اینکه بتونی موقیت هموشون رو هم update بکنی همه رو تو یک Vector نگه دار و به جای اینکه هر چند وقت که موقعیت یک توپ رو update می کنی این بار موقعیت تمام توپ ها رو آپدیت کن.
بازگشت به بالاي صفحه اذهب الى الأسفل
00110




تعداد پستها : 123
Location : Tab
Registration date : 2008-05-03

Game Programming Empty
پستعنوان: !!!   Game Programming Icon_minitimeالإثنين سبتمبر 08, 2008 1:30 pm

haamoon نوشته است:
خوب، برای هر شلیک یک new sprite بکن و وقتی به زمین رسید بندازش دور. برای اینکه بتونی موقیت هموشون رو هم update بکنی همه رو تو یک Vector نگه دار و به جای اینکه هر چند وقت که موقعیت یک توپ رو update می کنی این بار موقعیت تمام توپ ها رو آپدیت کن.
ممنون از کمکتون
من هر کاری کردم با این Vector کنار نیومدم من چند مدل امتحان کردم ولی نشد لطفا کمک کنید
یه بار خود Sprite رو به صورت ارایه در نظر گرفتم :

كد:
TankSprite[]  Bomb;
این TankSprite همون Sprite توسعه داده شده هست بعد
كد:
                    G = VBomb.size();
                   
                    Bomb[G] = new TankSprite(BImg);
                    Bomb[G].TDirection = Tank.TDirection;
                    Bomb[G].setPosition(Tank.getRefPixelX(), Tank.getRefPixelY());                   
                    VBomb.addElement(Bomb[G]);
این نشد که خطای NullPointer پرتاب میکنه ...


بعد اینطوری کردم :
كد:
TankSprite  Bomb;            // Bomb
                   
                    Bomb = new TankSprite(BImg);
                    Bomb.TDirection = Tank.TDirection;                              Bomb.setPosition(Tank.getRefPixelX(),Tank.getRefPixelY());                   
                    VBomb.addElement(Bomb);
که از اینم سر در نیاوردم ...
110 تا کاره دیگه هم کردم خلاصه نشد ما دوتا با هم کنار نیومدیم یکی بیاد مارو آشتی بده ...
لطفا راهنمایی کنید و در ضمن بعد این مرحله من می خوام که مثلا یکی از خصوصیات یکی از این Sprite هارو تغییر بدم چه طور باید به این عناصر دسترسی پیدا کنم ؟؟؟
بازگشت به بالاي صفحه اذهب الى الأسفل
haamoon




تعداد پستها : 308
Registration date : 2008-02-07

Game Programming Empty
پستعنوان: رد: Game Programming   Game Programming Icon_minitimeالإثنين سبتمبر 08, 2008 11:07 pm

Vector VBomb = new Vector();
a
که یادت نرفته؟

اینجوری می تونی یک شی در مکان i ام رو بگیری:
Bomb bomb = (Bomb) VBomb..elementAt(i);
a
بعد هم یک قرار دادی هست که می گن:
اسم کلاس ها با حرف بزرگ شروع بشه و
اسم متغییرها با حرف کوچیک مثلا vBomb بهتره.

اون کاری هم که اول کردی و یه آرایه هم گرفتی که فاجعه است! Vector یک آرایه است که اندازه اش dynamic هست و هر چی توش بریزی بزرگ تر می شه.
بازگشت به بالاي صفحه اذهب الى الأسفل
00110




تعداد پستها : 123
Location : Tab
Registration date : 2008-05-03

Game Programming Empty
پستعنوان: !!!   Game Programming Icon_minitimeالثلاثاء سبتمبر 09, 2008 7:23 am

haamoon نوشته است:
Vector VBomb = new Vector();
a
که يادت نرفته؟
امير آقا اماتور هستم ولي ديگه نه تا اين اندازه ...Very Happy

haamoon نوشته است:

اينجوري مي توني يک شي در مکان i ام رو بگيري:
Bomb bomb = (Bomb) VBomb..elementAt(i);


اين فکر ميکنم اينطوري بايد باشه :
كد:
Bomb = (TankSprite)vBomb.elementAt(Index);

haamoon نوشته است:

بعد هم يک قرار دادي هست که مي گن:
اسم کلاس ها با حرف بزرگ شروع بشه و
اسم متغييرها با حرف کوچيک مثلا vBomb بهتره.

آره ممنون ميشه بيشتر توضيح بدي اينجا اخه Bomb که اسم کلاس نيست ...


haamoon نوشته است:

اون کاري هم که اول کردي و يه آرايه هم گرفتي که فاجعه است! Vector يک آرايه است که اندازه اش dynamic هست و هر چي توش بريزي بزرگ تر مي شه.
حالا کارهايي که قبل از اين انجام دادم رو نديدي با ارايه چه کارايي که نکردم اگه يه کمي هم ادامه ميدادم خود اين Vector رو داشتم شبيه سازي ميکردم ...
ممنون عاقبت بخير شي با 3-4 خط حل شد ... lol! I love you Wink
بازگشت به بالاي صفحه اذهب الى الأسفل
 
Game Programming
بازگشت به بالاي صفحه 
صفحه 1 از 1
 مواضيع مماثلة
-
» help for starting of programming
» Game Programing
» Mobile Game Topic

صلاحيات هذا المنتدى:شما نمي توانيد در اين بخش به موضوعها پاسخ دهيد
 :: سوال و جواب-
پرش به: