End Google Ads 201810 - BS.net 01 --> السلام عليكم ورحمه الله وبركاته
ازيكو يا جماعه ... كل سنه وانتم طيبين ...
أنا انهاردة هديلكو شويه اممممم هما شويه حلوين يعنى
فى طريقه عمل ال ( اكيد مش بسبوسه :P (
طريقه عمل ال سناك او ما تسمى بال ثعبان
تعالو كدة نفكر
يعنى اية سناك ...بلاش يعنى اية
طب اية هى هيئه ال سناك ... عبارة عن اية ...؟؟؟
انا من وجهة نظرى شفت ان ال سناك عبارة عن شويه حاجات مرتبطه ببعضها وبتتحرك
هتقولى ازاى ؟
هقولك دلوقتى ... لو جبت عقد مفكوك يعنى على هيئة خط مستقيم بالشكل دة
00000000000000
عبارة عن فصوص جنب بعضها وليها نفس الشكل
طب اية رأيك تحرك العقد دة على الأرض مثلاً وشوف طريقه تحريكه
هتلاقيه بياخد الباث ( المسار ) اللى انت اتحركت فيه ... من الآخر هتلاقيه
Flexible
طب ماهو ال سناك كدة فى الحقيقه بإختلاف
ان اول فص فى العقد ( اقصد ال سناك ) عبارة عن رأس ال سناك
واخر فص هو الذيل
يبقى اتفقنا ان ال سناك عبارة عن حاجة واحدة بإختلاف شكل اول جزء واخر جزء
طيب نسأل نفسنا سؤال ويمكن دة اهم جزء واخطر جزء فى ال سناك
وهو
ازى لما كنت بحرك العقد كان بيمشى على المسار اللى مشيت فيه ...؟؟؟ يعنى ازاى بيحتفظ بالمسار
هقولك طريقه حلوة
ما تيجى نجيب 10 زمايلنا ولا حتى 5 لأنى عارف انهم مش فاضيين
ونقف طابور واحد
ونخلى واحد لوحدة كدة واقف قدام هو اللى يحرك اول واحد يقوله روح او تعالى ادخل يمين ولا شمال اوك لحد كدة ..؟؟؟
واحنا طبيعى هنمشى زى ما مشى اللى قدامنا
احنا دلوقتى واقفين مش بنتحرك
رقم 1 مشى يمين
زى ما احنا قولنا كل واحد هياخد اتجاة حركته من اللى قدامه علطول اوك ؟؟
حد فاهم حاجة ...؟؟ :-S
هنفرض اننا واقفين على خط واحد بداية من نقطه
x=10 , y=10
لحد نقطه
x=6 , y=10
بالشكل دة
00000
دلوقتى قلت للأولانى اتحرك فوق حركه واحدة
يبقى الأولانى هينقص من محور الصادات نقطه واحدة وهيبقى واقف عند نقطه
x=10 , y=9
واللى بعديه علطول هياخد النقطه اللى كان واقف عليها اللى قدامه ويقف هو فيها يبقى التانى هيبقى عند نقطه
x=10 , y=10
التالت هياخد النقطه اللى كان واقف عليها التانى ويقف هو فيها , هيبقى التالت عن نقطه
x=9 , y=10
وهكذا لحد ما يبقى الخامس واقف عند النقطه بتاعت الرابع عند النقطه
x=7 , y=10
بالشكل دة
0
0000
حاول تتخيله كدة
وانا عملتلك صورة توضحها احسن كمان
SnakeImage
يبقى احنا كدة عرفنا ان كل واحد ياخد البوزيشن بتاع اللى قدامه بدايه من اخر واحد وليس اول واحد
دلوقتى اتفقنا ان كل جزء ليه مكان
x,y
ليه مثلاً لون
ليه مثلاً صورة
انا فى الجيم كنت عامل ستركشر صغير فيه الحاجات دى كلها
This is the Structure Signature
طب دلوقتى واحد هيسألنى هستفاد اية من الستركشر دة لوحدةكود:struct PartialSnake { int xPosition; int yPosition; char imageOfSnake; int colorOfSnake ; PartialSnake(){} PartialSnake( int const & x , int const & y , int const & position , int const & color , char image ); PartialSnake& operator = ( PartialSnake const & ) ; void updateSnake( ); bool intersectedWith( PartialSnake const & ); };
هقوله لأ اكيد مش هسيبه كدة ماهو ما ينفعش اجيب دقيق واقول انا هعمل كيكه
طب كيكه ازاى من غير مكوناتها ( اخواتنا البنات يفيدونا فى الموضوع دة(
دلوقتى احنا عايزين نربط الأجزاء ببعضها
طب ماهو فيه حاجة اسمها
Array
بس دة لو انت هتعمل سناك مش هيطول
طب لو هيطول اممممممممم ...؟؟
Vector , LinkedList , ArralyList ( in Java ).... Whatever you Choose ,The Concept is One.
انا مثلاً استخدمت
Vector
هتقولى ليه هقولك العمليات فيه اسهل ... هتقولى بس الف يكتور لو طول عن حد معين هيبدأ يعمل
Expande
لنفسه هقولك اوك .. بس انا عارف ان عمر السايز بتاعى ما هيكبر فوق19 او20 فطبيعى مش هيعمل
Expantion
ممكن غيرى يفكر بطريقه تانيه ... الإختلاف فى ال ستركشر لا يفسد فى ال سناك قضيه
بس الفيكتور كدة اسرعلى
|-------------------------|
| Set Data : O( 1 ) |
| Retrieve Data : O( 1 ) |
|-------------------------|
انا عن نفسى عملت كلاس صغير يعبرلى عن ال سناك
This is The Signature
دة كان بالنسبه لل سناككود:class SnakeClass { private: int xStartPosition; int yStartPosition; int colorOfSnake ; int playerScore ; bool isSnakeDead ; bool isAteXFood ; int healthOfSnake ; static int MAX_SNAKE_LIFE ; static int MAX_SNAKE_SIZE ; public: vector<PartialSnake>* Snake ; int sizeOfSnake; SnakeClass( ); SnakeClass( int xPosition , int yPosition , int color ); bool intersectedWith( SnakeClass * const & targetSnake , int start = 1 ); void killSnake(); bool isDead()const; void setSnakeDead(); void setSnakeAlive(); int getScore()const ; int getHealth()const ; void setHealth( int ); void moveSnake( int const& x , int const& y , char const& image , bool isEatFood [] , bool & isDie , int& stateOfFinalMaze ); void undoXFoodFlag(); bool getXFoodFlag()const; void resetSnake( int xPosition , int yPosition ); void save( ofstream& ); void load( ifstream& , char image ); };
فاضل اخر حاجة وهو الكلاس اللى ب
Implement 1 Snake || 2 Snakes
SingleSnakeClass and DoubleSnakesClass
ودة فيه ال
Start
اللى ببدأ اللعب منها وفيها شغل ال
Threads
بالنسبه لحاجة مهمه
وهو التحكم فى اللعبه عن طريق الأسهم
لأن ناس كتيـــــــــر سألتنى انت بتتحكم فيها ازاى
الإجابه: انا لما جربت علشان اعرف الأسكى كود بتاع الأسهم
لقيت حاجة غريبه
ان الأسهم وبعض ال
Key Like: Delete , Insert , PrintScreen , Page Up , F1 ,F2 , .... etc
ليهم اتنين اسكى
واحد بعرف منه انه جاى منين
يعنى كى ( زرار ) عادى ولا سهم وزرار من ال
F or Delete , insert.....
بالنسبه للأسهم
اول اسكى هو
-32
ودى صراحه مش عارف ليه سالب بس دة اللى لما كنت بجربها طلعتلى
وال اسكى التانى هو ال
Direction
Arrow_Up 72
Arrow_Down 80
Arrow_Left 75
Arrow_Right 77
اكيد واحد هيسألنى ازاى اعمل الموضوع دة دة ياعم اتنين اسكى مش واحد
هقولك حاجة لزيزة جداً
you know The Header File ( Conio.h ) ??
You Know "getch()" Function ... ??
getch() Get One Character From The Screen and Returns It's as Character Representation ( char )
ازاى اعرف الأسكى بتاع حرف
اخر حاجة انى اظبط موضوع الأسهم بقىكود:char anyChar; anyChar = getch(); cout << (int)anyChar ;// This Prints The ASCII Representation
تقريباً كدة خلصت فكرة ال سناككود:char handleArrows , arrowDirection ; handleArrows = getch(); if( (int)handleArrows == -32 )// This Input From Arrows or [ delete , insert , page up ... ] { arrowDirection = getch();// Get The Direction switch( (int) arrowDirection ) { //Cases of Arrows , Implement it As You Like; } }
فاضل اهم حاجة انى ازاى اتعامل مع الكونسول
Like Axis
دى بقى هسيبكوا انتو تدوروا عليها ... انا مش مكسل والله اكتبها دى صغيرة موت
بس احلى حاجة لما تدور على حاجة عايزها وتلاقيها
لما هتلاقيها عمرك ما هتنساها
انا الحاجات دى ماحدش علمهانى ... الحاجات دى تعليم نفسى
ناهيك عن بدائيات بتاعت السى اللى الناس كلها بتعرفها
اتمنى من الله ان اكون وفقت فى الشرح
واى استفسار انا فى الخدمه
Thanks to All
This Explanation Made By "Mohamed Shabaan"
Copyright © 2008 TopCoder.FCI All rights reserved.
مواقع النشر (المفضلة)