PDA

View Full Version : سوال: انتخاب یک حالت از بین انبوهی از حالات



rroona
جمعه 16 مهر 1389, 19:28 عصر
سلام
میخواستم یه بازی قدیمی رو بنویسم که گیر کردم
بازی به اینصورته که برنامه 4 تا رنگ بصورت رندوم از بین 7 رنگ انتخاب میکنه و شما باید در 10 مرحله به جواب برسید
حالا سوال اینجاست که حالتهای خیلی زیادی پیش میاد. آیا باید همه این حالتهارو برای برنامه تعریف کنم یا اینکه راه ساده تری هم هست
دنبال یه ایده هستم لطفا کمکم کنید

group45
جمعه 16 مهر 1389, 19:38 عصر
سلام
شما میتونید از switch استفاده کنید. :متفکر:

شاهرخ عشایری
جمعه 16 مهر 1389, 19:54 عصر
سلام دوست عزیز.
در مرحله اول لازمه که 7 رنگ رو برای برنامه تعریف کنید(بهتره که درون یک آرایه ذخیره بشه). بعد توسط تابع Random چهار تای اون را بطور تصادفی برداشته و درون یک آرایه ی 4 عنصری دیگه بنویسی. در مرحله بعد کاربر باید رنگ های خودش رو وارد کنه. هر بار که کاربر رنگ مورد نظرش رو وارد میکنه باید به شمارشگری که برای این منظور در نظر گرفته شده، یک واحد اضافه بشه. در این بین هر بار که کاربر رنگ رو وارد میکنه، اگر رنگ درست بود میشه اون رنگ رو توی یک آرایه ی دیگه نوشت تا بشه در آخر بررسی کرد در غیر اینصورت هیچ کاری انجام نمیشه و فقط شمارنده افزایش پیدا میکنه تا به عدد 10 برسه. یعنی اینکه شما به یک حلقه هم نیاز دارید.

دعای شما را خواستاریم....

rroona
جمعه 16 مهر 1389, 20:15 عصر
در این بین هر بار که کاربر رنگ رو وارد میکنه، اگر رنگ درست بود میشه اون رنگ رو توی یک آرایه ی دیگه نوشت تا بشه در آخر بررسی کرد
دوست عزیز زمانی میتونیم بررسی کنیم که اولا تمام حالات رو داشته باشیم وثانیا رنگهای انتخابی توسط برنامه رو هم داشته باشیم که از مقایسه این دو با حالتهای انتخابی توسط کاربر به جواب میرسیم
فکر میکنم یه چیزی حدود 1300 حالت میشه!!!
آیا باید همه حالتها رو تعریف کنم؟؟

شاهرخ عشایری
جمعه 16 مهر 1389, 20:23 عصر
آیا ترتیب این رنگ ها برات مهمه؟ یعنی کاربر باید با ترتیب خاصی وارد کنه یا نه؟

rroona
جمعه 16 مهر 1389, 20:29 عصر
نه کاربر از بین 7 رنگ 4تا انتخاب میکنه وبعد تایید میکنه تا برنامه کارشو شروع کنه

شاهرخ عشایری
جمعه 16 مهر 1389, 20:33 عصر
البته باید منو ببخشید...
شما در پست اولتون نوشته بودید که برنامه از بین 7 رنگ 4 تا رو انتخاب میکنه اما حالا چیز دیگه ای نوشتید...

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

rroona
جمعه 16 مهر 1389, 20:45 عصر
اگه یادت باشه اسم بازی به فکر وبکر معروف بود
7رنگ وجود داره که ابتدا برنامه بصورت رندوم 4تای اون رو انتخاب میکنه، حالا نوبت شماست که در 10 مرحله و هر مرحله با اتتخاب فقط 4 رنگ از همون 7 رنگ به رنگهایی که برنامه انتخاب کرده برسید
در هر مرحله برنامه شمارو از نتیجه کارتون آگاه میکنه تا به جواب برسید
http://imgdl.ir/images/631Untitled_2.jpg

شاهرخ عشایری
جمعه 16 مهر 1389, 21:06 عصر
خیلی عالیه....
شما میتونید یه متد مخصوص بررسی کردن این رنگها بنویسید به این شکل:
1- این متد دو پارامتر داره. یکی برای دریافت آرایه ی 4 عنصری که برنامه رنگهای رندوم رو توی اون میریزه و دیگری شامل آرایه ای که رنگ های انتخاب شده توسط کاربر رو در خودش نگه میداره.
2- خروجی تابع هم یک آرایه ی 4 عنصری هستش
3- درون این تابع کدی قرار میگیره که 4 عنصر از آرایه اول (رنگهای انتخاب شده توسط برنامه) رو با آرایه ی دوم (رنگ های وارد شده توسط کاربر) مقایسه می کنه. در هر مرحله مقایسه (در مقایسه خانه به خانه) اگر رنگ ها با هم برابر بودن؛ مقدار عنصر متناظر در آرایه ی خروجی (آرایه ای که قرار است به خروجی ارسال بشه) برابر True و در غیر اینصورت برابر False خواهد بود.

این مربوط به متدی بود که وظیفه بررسی رنگها رو بر عهده داشت.
اما در خارج از متد (یعنی جایی که قراره از آرایه ی خروجی متد مذکور استفاده بشه) باید عناصر آرایه مورد بررسی قرار بگیره که آیا تمام آنها برابر مقدار True هستند که این به معنی درست وارد کردن تمام رنگ ها توسط کاربره در غیر اینصورت برنامه به گرفتن رنگها از کاربر ادامه میده. (البته تا 10 مرحله)


موفق باشید...

rroona
جمعه 16 مهر 1389, 21:37 عصر
بازم رسیدم به خونه اولم
هنوز متوجه نشدم
وقتی میگید مقایسه من ذهنم میره به سمت همه حالات ممکن
نمیتونیم به همین راحتی بگیم در غیر اینصورت
اگه دو تا از رنگهای سیستم شبیه هم باشه چی؟
اگه سه تا از رنگهای سیستم شبیه هم باشه چی؟
اینم بگه اگه مثلا رنگ خونه اول کاربر با رنگ خونه اول سیستم برابر باشه برنامه رنگ سبز رو نشون میده و اون دوتا خونه دیگه تو مقایسه نباید شرکت کنن، اگه اینطور نباشه ورنگ کاربر در یکی از سه خونه دیگه موجود یاشه ، رنگ قرمز رو نشون میده و اینبار خونه سیستم دیگه تو مقایسه نباید شرکت کنه، و اگر رنگ کاربر با هیچ کدوم از رنگهای سیستم یکی نباشه کاری نمیکنه

شاهرخ عشایری
جمعه 16 مهر 1389, 22:04 عصر
چون مقایسه خونه به خونه انجام میشه شما می تونید هر نوع کنترلی روی کاری که میخواهیدانجام بدید داشته باشید.

حتی اگر رنگ عنصر شماره 2 از رنگ های سیستم با رنگ شماره 3 از رنگهای کاربر برابر باشه، خونه شماره 2 از آرایه خروجی برابر False خواهد بود. چون ترتیب برای ما مهمه.

فقط درصورتی خانه شماره 2 از آرایه خروجی برابر True خواهد بود که هر دو خانه از آرایه های مورد بحث با هم برابر باشند.

به همین دلیل فکر نمیکنم مشکلی پیش بیاد...