[دانلود فایل پروژه](https://quera.org/qbox/view/rEp4rIQr7R/NumberGuess.zip)
جواد و صدرا دو برادر هستند. جواد بیست سال دارد و دانشجوی کامپیوتر است و صدرا نه ساله است و طبیعتا دانشآموز دبستان است!
جواد تصمیم گرفتهاست که برای تولد صدرا تبلتی بخرد که روی آن یک بازی سالم بریزد و به او هدیه دهد. از آنجایی که جواد خودش یک پا برنامهنویس است، میخواهد خودش بازی را بنویسد. امّا جواد به دلیل تجربهی کم در برنامهنویسی اندروید، پروژه را ناقص گذاشته تا شما تکمیل کنید.
جواد میخواهد یک بازی حدس عدد طبیعی بنویسد. به طوریکه ابتدا یک بازه از اعداد توسط کاربر انتخاب شود. سپس برنامه عددی در بازهی دادهشده در نظر بگیرد. سپس کاربر با حدس هر عدد توسط کاربر، جوابی از برنامه دریافت میکند با این محتوا که عدد انتخابی برابر، کمتر یا بیشتر از عدد درنظر گرفتهشده است. سپس تعداد حدسهای کاربر نمایش داده میشود.
ابتدا ```MainActivity``` اجرا شده و ```activity_main.xml``` را به نمایش میگذارد. سپس کاربر مقدار کمینه و بیشینهی بازه را در EditTextهای مربوط وارد میکند و با زدن دکمهی ```submit``` وارد ```GameActivity``` (که ```activity_game.xml``` را نمایش میدهد) میشود. سپس با واردکردن حدس خود در قسمت مربوط و زدن دکمهی ```submit```، پیام مربوط در مورد حدس نمایش داده میشود.(برابر، کمتر، بیشتر)
شما باید تغییرات زیر را در پروژه ایجاد کنید:
+ رنگ پسزمینهی ```LinearLayout```های اصلی برنامه را به ```#d3d3d3``` تغییر دهید.
+ رنگ پسزمینهی دکمهها و ```EditText``` های برنامه را به ```#ffffff``` تغییر دهید.
+ ورودی ```EditText``` ها فقط میتواند عدد باشد.
+ پیام راهنمایی ```edit_max``` و ```edit_min``` و ```edit_guess``` به ترتیب برابر ```Enter max value``` و ```Enter min value``` و ```Enter your guess``` باشد.
+ اگر پس از فشردن دکمهی ```submit``` در ```EditText``` ها مقداری وارد نشده بود، مقدار راهنمایی آنها به ```Please enter number``` با رنگ ```#DC0A14``` تغییر کند.
+ اگر مقدار واردشده در ```edit_min``` بزرگتر یا مساوی مقدار واردشده در ```edit_max``` باشد، در ```txt_warning``` عبارت ```Values are invalid``` با رنگ ```#DC0A14``` چاپ شود.
+ پس از آنکه مقادیر کمینه و بیشینه وارد شدند و دکمه فشرده شد، در صورت خطا نداشتن، باید کلاس ```GameActivity``` شروع به کار کند. شما باید با استفاده از ساختن نمونه از کلاس ```Game``` با مقادیر کمینه و بیشینه، حدسهای کاربر را مدیریت کنید.
+ اگر حدس واردشده توسط کاربر کمتر از مقدار کمینهی واردشده یا بیشتر از مقدار بیشینهی واردشده باشد، عبارت ```Number is not in range``` در ```txt_result``` نمایش داده میشود.
+ اگر حدس واردشده کمتر یا بیشتر از مقدار درنظر گرفتهشده در نمونهی ساختهشده از ```Game``` باشد، به ترتیب پیغام ```Enter bigger number!``` و ```Enter smaller number!``` در ```txt_result``` نمایش داده میشود.
+ اگر حدس واردشده درست بود، در ```txt_result``` عبارت ```You won in n tries``` چاپ شود به طوریکه n تعداد تلاشهای کاربر برای حدسزدن است. همچنین دکمه و ```EditText``` این صفحه باید ناپدید شوند.
فایل ناقص پروژه را دانلود کنید و تغییرات گفتهشده را اعمال کنید. توجه فرمایید که به فایلهای دیگر پروژه دست نزنید.
ساختار فایل ناقص پروژه (فایلهایی که باید تغییر دهید با ----> نمایش داده شده اند):
```
<Your-zip-name>.zip
├───app
│ ├───libs
│ └───src
│ ├───androidTest
│ │ └───...
│ ├───main
│ │ ├───java
│ │ │ └───ir
│ │ │ └───quera
│ │ │ └───numberguess
│ │ │ ├───Game.java <----
│ │ │ ├───GameActivity.java <----
│ │ │ └───MainActivity.java <----
│ │ └───res
│ │ ├───drawable
│ │ ├───layout
│ │ ├───activity_main.xml <----
│ │ └───activity_game.xml <----
│ │ ├───mipmap-hdpi
│ │ ├───mipmap-mdpi
│ │ ├───mipmap-xhdpi
│ │ ├───mipmap-xxhdpi
│ │ ├───mipmap-xxxhdpi
│ │ └───values
│ └───test
│ └───java
│ └───ir
│ └───quera
│ └───numberguess
└───gradle
└───wrapper
```
+ تنها فایلهای موجود در آدرس زیر از پروژه شما استفاده خواهد شد بقیه فایلها از پروژه نمونه قرار داده شده خواهند بود. فایلهای اضافی شما قبل از داوری حذف میشود.
**app/src/main/***
#### **توجه: وجود پوشه ```app``` در ریشه فایل فشرده الزامی میباشد.**
ساختار درختی فایلهای مورد داوری:
```
<Your-zip-name>.zip
├───main
│ │ AndroidManifest.xml
│ │
│ ├───java
│ │ └───ir
│ │ └───quera
│ │ └───numberguess
│ │ Game.java
│ │ GameActivity.java
│ │ MainActivity.java
│ │
│ └───res
│ ├───drawable
│ ├───layout
│ │ activity_game.xml
│ │ activity_main.xml
│ │
│ ├───mipmap-hdpi
│ │ ic_launcher.png
│ │ ic_launcher_round.png
│ │
│ ├───mipmap-mdpi
│ │ ic_launcher.png
│ │ ic_launcher_round.png
│ │
│ ├───mipmap-xhdpi
│ │ ic_launcher.png
│ │ ic_launcher_round.png
│ │
│ ├───mipmap-xxhdpi
│ │ ic_launcher.png
│ │ ic_launcher_round.png
│ │
│ ├───mipmap-xxxhdpi
│ │ ic_launcher.png
│ │ ic_launcher_round.png
│ │
│ └───values
│ colors.xml
│ strings.xml
│ styles.xml
```
+ توجه کنید که پروژه zip شده باید مستقیما در ریشه فایل zip قرار گیرد.