آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوالاتی پیرامون پروژه ی باران Rain project

ChookD1  6 سال پیش  4 سال پیش
+2 0

با سلام .
بنده تازه که دارم این سوال رو طرح میکنم ، به این بخش از آموزش یعنی "پروژه ی باران" رسیده ام .
قبل از این ، پروژه ماشین حساب و بعد از اون ، این پروژه ، برای بنده  از سختترین موارد آموزشی بوده اند و بقیه ی آموزشها رو تاحد بسیار مطلوبی یادگرفتم و میتونم پیاده سازیشون کنم .
حدود سه روز هست که این پروژه من رو به خودش مشغول کرده و نمیزاره جلو برم ، از اونجایی که بنده یک طبع کمال گرایی ای دارم که وسواسم بهم اجازه نمیده  که تا یک آموزشی رو کاملاً یاد نگرفتم ، به پروژه ی بعدی برم ، هر چند خیلی از دوستان مخالف نظریه ی بنده هستند .
به هرحال متوجه شدم که بخشهای آتی بسیار بسیار شیرین و سریع الهضم هست اما این پروژه بهم این اجازه رو نمیده که برم جلو ، اگه نظری داشتید همینجا زیر همین پست بهم بگید ، چه مخالف چه موافق .

پاسخ به معضلات بنده توی پست دوم فراموش نشه :
در این پروژه 2 معضل داشتم که دونه دونه مطرح میکنم و از دوستان موجود در انجمن میخوام که تا حد ممکن بهم کمک کنند .
پیشاپیش دستبوس یکایک شما دوستان هستم .

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
ChookD1  6 سال پیش
+2 0

معضل اول بنده :

اونجایی که : استاد نشون میده در پروژه ی باران چقدر حلقه درحال تولید شدن هستن و چقدر از این حلقه هایی که مقدار Alpha آنها به صفر رسیده  و در صفحه موجود هستند و درحال پردازش هستند .
استاد برای رفع این مشکل میاد و در قسمت onDraw این کد زیر رو مینویسه :

 

 

 @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

synchronized (drops) {
for (int i=drops.size()-1; i>=0; i--) {
Drop drop = drops.get(i);

float alpha = 255 - drop.size * 2.55f;
if (alpha < 0) {
drops.remove(i);
alpha = 0;
}
if (alpha > 255) {
alpha = 255;
}
paint.setAlpha((int) alpha);
canvas.drawCircle(drop.px, drop.py, drop.size, paint);
}
}
}

در واقع استاد تنها  For Loop رو دستکاری کرد و اون خط که نوشته : 

 drops.remove(i);

ممنون میشم اگه کسی بتونه این کدها رو برامون توضیح بده .

کسی میتونه این حلقه for رو توضیح بده ؟

+4 0
سلام ، خب drops یک آرایه از دایره هاست که با گذشت زمان داره به سایزش اضافه میشه ، یعنی دایره های داخلش بیشتر میشه . اما اگه آلفای دایره ای به صفر برسه نیازی به ترسیم نیست . چون دیده نمیشه و از طرفی ترسیمش پروسس اضافه داره . پس میان از انتهای آرایه ( که خودش نکته داره چرا از انتها ) هر کدوم از drop ها آلفاش صفر بود با متد remove حذف میکنه . (6 سال پیش)
+2 0
همین نکته رو میشه عرض بفرمایید ؟ همینجاش موجب شده کمی احساس سردرگمی بکنم (6 سال پیش)
+2 0
چرا و چگونه از ابتدا شروع کرده ؟ (6 سال پیش)
+2 0
راستی ممنون میشم اگه بفرمایید : زمانی که شما به این پروژه رسیدید ، چقدر براتون مشکل بود ؟ آیا ساده بود براتون یا خیر ؟ (6 سال پیش)
+2 0
ببینید ، نکته اینه که شما اگه عنصر i ام یک آرایه رو حذف کنید ، از عنصر i + 1 تا آخر اندیس ها یکی کم میشن . مثلا اگه آرایه سایزش 10 باشه و شما عنصر 4 ام رو حذف کنید ، عنصر اول و دوم و سوم سر جاش هست و 4 هم که حذف شده و 5 تا 10 یکی کم میشه که جای خالی قبل رو پر کنه . یعنی 5 میره سر جای 4 و 6 میره سر جای 5 و ... . حالا اگه شما آرایه ای رو قرار باشه هر عنصر رو برسسی کنید و تحت شرایط خاصی حذفش کنید ( مثل همین باران ) نمیشه از پایین شروع کرد . چون در اولین حذف ، سایز آرایه تغییر میکنه و عناصر هم حذف میشه و ممکنه بعضی عناصر بدون بررسی بمونن و همچنین به خطای ArrayIndexOutOfBoundException بر میخورید . اما اگه از انتها شروع به برسسی و حذف بشه مشکلی پیش نمیاد . چون قرار نیست تا size پیش برین ، قراره تا عنصر صفر بررسی بشه . و اگه عنصر i ام حذف بشه پس یعنی از size تا i ام قبلا بررسی شده ( حالا یا حذف شدن بعضی یا نشدن ) . در هر صورت اندیس های پایین در نخورده هستن و میشه تا صفر پیش رفت (6 سال پیش)
+2 0
لینک این پروژه مثل ماشین حساب ، بازی با الگوریتم هست و پیچیده است . چند بار تمرین کنید و آموزش رو دوباره ببینید آسون میشه . (6 سال پیش)
+2 0
تشکر میکنم بابت توضیحاتی که ارائه دادید. بنده این پروژه رو که علاوه بر سخت بودنش ، حدود 2 ساعت و أندی هم هست ، حدود 4 بار دیدم . واقعا خیلی دوست دارم برم جلوتر اما این پروژه نمیزاره ، بخش بعدیش که دیالوگها هست فکر کنم خیلی شیرین هست ، از طرفی نمیتونم بیشتر توی این پروژه بمونم چون کم کم دارم زده میشم ازش ، از اون طرف بخش بعدی خیلی خوشه و میخوام بهش برسم ، نمیدونم چکار کنم . (6 سال پیش)
+2 0
بعد یه سوالی ، دقیقا drops.size رو میشه یه توضیحی بدید ؟ یه لوگ زدم برای خودم ، داشت همینجور دونه دونه زیاد میشد ، ما توی این drops تعیین کرده بودیم 4 تا float داره توی ، px و py و size و speed . حالا این اعداد چجوریه که داره همینجور زیاد میشه ؟ (6 سال پیش)
+1 0
نظر نه این آموزشو رد شین . چیزی نمیشه . مهم نیست . قسمت های بعدی مهمتر و جذاب تره . و خیلی چیزهایی دیگه هست که باید یاد گرفت . بعدا که نیاز پیدا کردین تو ساخت کنترل های سفارشی تسلط پیدا کنید ، برگردین اینو دوباره ببینید . (6 سال پیش)
+1 0
شما وقتی تاچ میکنی ، یه لیسنر به DOWN و MOVE داری که میاد به آرایه اضافه میکنه دیگه . اگه کاری نکنید که ثابته . ولی تاچ کنید به تعدادش اضافه میشه . اون float ها هر کدوم یه فیلد از کلاس Circle هست . یعنی با تاچ کردن میای یک circle میسازی و مشخصات x و y و زمان تولید و رنگ و غیره میکنی و add میکنی به آرایه . اینا همش میشه یک عنصر در آرایه ، نه 4 تا . تاچ بعدی یا move های بعدی هم همینطور یه دایره میسازه و مشخصات رو پر میکنه و add میکنه به آرایه . (6 سال پیش)
+3 0
درست ، متوجه شدم ، خیلی عالی بود ، ان شاءالله مشکلات دیگه ای هم توی این پروژه داشتم که اگه ازشون رد نشدم ، پایین همینجا میزارم و اگه وقت کردید پاسخ بدید . الحق و الإنصاف که پاسخهای شما و پیگیریتون برای پاسخ ، استحقاق لایک داشت که به نشانه ی تشکر شما رو لایک کردم . (6 سال پیش)
+1 0
چقدر خوندن سوال های شما برای من چذاب است با اینکه برای دوسال پیش بوده و من دارم تجربه میگیرم و امیدوارم شما هم به سوال های من نیز پاسخ دهید (4 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .