اذهب إلى المحتوى

Kais Hasan

الأعضاء
  • المساهمات

    2350
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    24

كل منشورات العضو Kais Hasan

  1. يمكننا القيام بذلك عن طريق استعمال الدالة blit مع تمرير الصندوق الخاص بالنص و وضع مركزه في منتصف الشاشة. يمكن كتابة ذلك كما يلي: font = pygame.font.Font(None, 25) text = font.render("You win!", True, BLACK) text_rect = text.get_rect(center=(SCREEN_WIDTH/2, SCREEN_HEIGHT/2)) screen.blit(text, text_rect) في أول سطرين نقوم بكتابة النص و يكون المتغير text يمثل هذا النص. في السطر الثالث قمنا بجلب الصندوق الخاص بالنص عن طريق الدالة get_rect و مررنا لها المركز ليكون منتصف الشاشة، حيث أن منتصف الشاشة يكون لها إحداثيات x تساوي العرض على 2 و إحداثيات y تساوي الارتفاع على 2. ثم نقوم باستعمال الدالة blit لرسم ما سبق.
  2. إن المخططات بشكل عام هدفها تصميمي، و بالتالي سؤال متى يجب عليك استعمالها يعتمد على ما تريد القيام به، هل يحتاج تصميم مسبق أم لا. في بداية تعلم البرمجة من المفيد القيام بمخططات حتى لأبسط البرامج، أي حتى لو أنه لديك برنامج يقوم بطباعة فيما إذا كان العدد فردي أم زوجي، فإنه من المفيد في بداية تعلمك البرمجة أن تقوم برسم المخطط له، هذا يضمن أنك تفهم الأفكار البرمجية و التي هي بشكل عام مشتركة بين كل اللغات. في مراحل لاحقة من رحلتك في تعلم البرمجة فإنه يصبح من غير المنطقي أن تقوم برسم مخططات ﻷمور و برامج بسيطة، لكن أي برنامج معقد عليك رسم مخطط له، فإن هذا يفصل ما بين التصميم العام و بين برمجة الأجزاء، حيث أنه في البرنامج الصغير تكون الأجزاء قريبة من الحجم للبرنامج العام، لكن عند وجود برنامج كبير فإن الأجزاء تكون صغيرة مقارنة بالبرنامج الكلي، و بالتالي عند برمجتك لجزء لن تكون لديك الفكرة الكلية للبرنامج ما لم تقم برسم مخطط له.
  3. نعم يمكنك إضافتها إلى مشروعك، لا داعي لإنشاء مشروع جديد، من السهل جداً إضافتها يمكنك الإطلاع على الرابط الذي أرفقته.
  4. هناك حزمة تدعى chatify تستطيع إضافتها إلى تطبيقك و تتيح لك ميزات كثيرة خاصة بالدردشة، يمكنك الإطلاع عليها من هنا. بعض الميزات التي توفرها هذه الحزمة: نظام دردشة للمستخدمين. لائحة المعارف و لائحة المفضلة. ميزة البحث. إمكانية إضافة ملفات إلى الرسالة. بالإضافة إلى الكثير من الميزات الأخرى.
  5. بالإضافة إلى ما ذكره المدرب أسامة، أود إضافة أنه من الجيد أن تقوم بمحاولة كتابة أمثلة خاصة بك باستعمال التعليمات و المعلومات التي تعلمتها، أي لنفرض أنك تعلمت عن العبارات الشرطية، قم بكتابة مثال ترغب به يستعمل العبارات الشرطية. هذه الطريقة تسمح لك باختبار التعليمات بشكل ممتع كما أنها ستجعلك تحاول التعديل في التعليمات و هذا يؤدي إلى فهم أكبر لغاية كل تعليمة و كيفية استعمالها. أيضاً لا تركز على حفظ التعليمات، فدائماً يمكنك الذهاب و البحث عن تعليمة في حال نسيتها، المهم هو أن تفهم كيفية كتابة البرامج في بايثون و المفاهيم العامة المرتبطة بهذه اللغة، و التعليمات ما هي إلا وسيلة مساعدة لتحقيق ذلك، و بالتالي عليك التركيز على الأفكار بشكل أساسي، و ستتعود على التعليمات بمرور الوقت.
  6. بشكل عام عندما نريد التعامل مع هكذا تطبيقات نقوم باللجوء إلى ال API التي قامت هذه التطبيقات بتوفيرها، يمكنك الإطلاع على ال API الخاصة بالواتساب من هنا، يجب أن تجد أي شيء تريده هناك.
  7. هناك الكثير من الأمور المهمة للتصميم، سأشارك معك بعض مما أجده نافعاً. في البداية من الجيد أن تكوني على إطلاع على المخططات المستعملة لكتابة التصاميم، مثل UML هذه المخططات يتم إعطاءها في مقرر هندسة البرمجيات، في حال لم تكوني على إطلاع عليها يمكنك الإطلاع على مقالات حسوب فهناك بعض المقالات الجيدة. عند معرفة ما سبق يجب أن نقوم في البداية بتحديد المتطلبات التي نريدها، أي ما الذي نريد تقديمه في هذا المشروع و نحاول أن نقوم بعصف ذهني، و يمكن أن يأخذ هذا الأمر أكثر من يوم، لا داعي للعجلة، فالخطأ في هذه المرحلة غير جيد و من الأفضل أخذ وقت كافي لتجنب هكذا أخطاء. بعد تحديد المتطلبات يجب علينا محاولة تجميع المتطلبات المتشابهة معاً، و محاولة تنظيم ما سبق، أي كما نقوم في البرمجة بتقسيم البرنامج الكبير إلى مجموعة من ال modules التي تحتوي على توابع و كلاسات لها صفات عامة مشتركة أو تقوم بأشياء مترابطة. يفضل القيام بالخطوة السابقة بشكل تجريدي، أي بدون كتابة مخطط فعلي، بعد ذلك يمكننا التحول إلى كتابة مخطط فعلي، لقد وجدت أنه في هذه المرحلة من المفيد أن تكوني على دراية ببعض المخططات المشهورة لتصميم الكود يطلق على هكذا شيء اسم design patterns، أجد من المفيد في بعض الأحيان الاستعانة ببعض من التصاميم، كما أنها بشكل عام تعطيك فكرة عن كيفية التفكير عند تصميم كود ما. شخصياً أقوم بكتابة كل شيء على ورقة، أقسم البرنامج إلى مكونات، بحيث أحدد العلاقات بين كل مكون و آخر و ما الذي يجب أن يقوم كل مكون بتقديمه للمكون الآخر، ثم أقوم بمحاولة تصميم كل مكون، ما هي التوابع المطلوبة و هل أحتاج إلى كلاسات أو ما إلى هنالك، و كل تابع ما الذي يقوم بأخذه و ما الذي يقوم بإعادته، كل هذا على الورق. خلال هذه العملية أحاول قدر الإمكان أن تكون الحلول التي أقوم بتصميمها بسيطة و قابلة للتوسع، حيث أن التعديل هو عملية لا مفر منها و بالتالي التصميم الجيد الذي يأخذ بعين الاعتبار قابلية التوسع و التعديل و مرونته هو الأفضل، من أحد الطرق لتحقيق ذلك هو التأكد بأن الخطوات مفصولة بشكل جيد، بحيث أنه يمكن التعديل على خطوة ما بدون النظر حتى إلى الخطوة الأخرى، فقط نريد الإبقاء على ما نعيده للخطوة الأخرى و لكن آلية عملها لا تهمنا، هذا الفصل محبذ. بعد ذلك من الجيد القيام بكتابة كود بسيط جداً لتحقيق التصميم و التأكد أن كل الأمور على ما يرام، ثم نحاول التحسين في حال كان ذلك مطلوب. أيضاً من الجيد كتابة اختبارات، حيث أن الاختبارات تساعد على التأكد من صحة الكود، شخصياً أتبع الطريقة التي تقول بأن نكتب الاختبارات قبل كتابة الكود حتى، و ذلك يعطيني فكرة واضحة عن الكود الذي أريد كتابته، و أتأكد أنه فعلاً ما أريده، حيث أن الاختبارات ستمثل ما الذي أريد لكودي القيام به.
  8. يمكنك توسيط صورة عن طريق كتابة قاعدة css كما يلي: .center { display: block; margin-left: auto; margin-right: auto; width: 50%; } و من ثم علينا وضع الصنف center في مكون ال html الذي يمثل الصورة التي نريد توسيطها، أي كما يلي مثلاً: <img src="..." ... class="center"> السؤال الأول غير مفهوم تماماً، هل تقصد مثلاً أن يكون لديك صورة لقطة في حديقة و تريد تغيير الخلفية التي هي الحديقة أم ماذا؟
  9. في حال كانت هذه أول لغة برمجة لك، فينبغي عليك تعلم أساسيات البرمجة و التفكير البرمجي، كيفية تقسيم البرنامج إلى مهام و تنفيذ كل مهمة كسلسلة من التعليمات، مفهوم البنى الشرطية و الحلقات. بالإضافة إلى ما ذكره زميلي في التعليق السابق، فإنك تحتاج إلى معرفة لا بأس بها بأساسيات الحاسوب، أعتقد أن دورة علوم الحاسوب التي تقدمها أكاديمية حسوب تناسبك، يمكنك الإطلاع عليها من الرابط التالي: كما أنك ذكرت أدوات تخص التواصل الاجتماعي بالإضافة إلى ال crawling و هذا يستلزم معرفة بسيطة بأساسيات الويب و ذلك لتعرف كيفية التخاطب مع البرامج و واجهات التطبيق البرمجية API لما تريد التعامل معه.
  10. لم تقومي باستدعاء التابع، ما زلتي تستعملين strrev، استبدليها بالتابع الذي كتبته
  11. يبدو أن المشكلة من تابع العكس، لقد بحثت قليلاً و تبين أنه لا يدعم ال utf-8، قومي باستبداله بالتابع التالي: function mb_strrev($str){ $r = ''; for ($i = mb_strlen($str); $i >= 0; $i--) { $r .= mb_substr($str, $i, 1); } return $r; } هذا التابع يقوم بعملية العكس و يدعم ال utf-8.
  12. في التاغ meta لقد قمتي بوضع كود خاص بنسخ قديمة من html، هل يمكنك تجربة استبدال السطر 6 بما يلي: <meta charset="UTF-8">
  13. نعم النقطة غير مطلوبة. يبدو أن المتصفح لا يقوم باختيار الترميز المناسب، هل يمكنك مشاركة ملفات المشروع حتى يمكنني مساعدتك بشكل أفضل؟
  14. يبدو أن Autorun غير موجود هنا، من فضلك قومي بالنقر بالزر الأيمن على المجلد الذي قمتي بفتحه، يفترض أن يكون هناك خيار new string و من هنا قومي بإضافة Autorun و قيمته كما ذكرت في الجواب الأول، في حال لم يظهر أرفقي لقطة شاشة لما ظهر.
  15. إن السبب هو أن هذه الأحرف غير معروفة لل cmd لديكي، و بالتالي يتم وضع إشارات استفهام مكانها، سأفترض أنك تستعملين ويندوز، عندها يمكنك تغيير ذلك كما يلي: نذهب إلى البحث و نبحث عن run و نقوم بالضغط على ما يظهر، و نقوم بكتابة regedit. نقوم بالذهاب إلى [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun] نغير القيمة الموجودة إلى @chcp 65001>nul. في حال لم تجدي ما قمت بذكره في الخطوة 2 يمكنك القيام بإضافة خيار، قومي بذلك و ضعي ما مذكور في الخطوة 2 و قيمته تكون ما هو موجود في الخطوة 3. ما سبق و ذكرته من أجل ويندوز، في حال كنتي تستعملين نظام تشغيل آخر لا تترددي بإعادة السؤال. في حال كنت عند أي خطوة مما سبق و لم تعرفي ما الذي يجب فعليه يمكنك أخذ لقطة شاشة و مشاركتها و سنساعدك في إكمال الخطوات.
  16. ما الذي قمت بمحاولة القيام به؟ يجب عليك المحاولة و نحن سنساعدك، و لكن إعطاءك الحل مباشرة لن يساعدك على تطوير مهاراتك البرمجية. إن التحويل هو عملية بسيطة، قم بالأول بمعرفة كم كيلو متر موجود، عن طريق التقسيم على الرقم مليون (حيث أن الكيلو متر هو الف متر و المتر هو الف ميلمتر)، بعدها يمكنك طرح عدد الكيلومترات ضرب ما يمثله الكيلو متر من القيمة الأصلية، ثم تحاول حساب عدد المترات بنفس الطريقة و لكن بالطبع باستعمال التحويل المناسب الخاص بالمتر و هكذا. حاول القيام بذلك و قم بمشاركة محاولاتك في حال الخطأ وسنساعدك بها.
  17. يجب وضع فراغ بين النقطة و add
  18. الخطأ هو أنك لم تقومي بإضافة شيء حتى يتم عمل commit له، لاحظي عندما قمتي بعملية add ظهر خطأ و ذلك ﻷنك كتبتي: git add و لكن هذا لا يحدد أي شيء ليتم إضافته، عندما نريد تحديد كل شيء نكتب نقطة بعد add، أي كما يلي: git add . قومي بكتابة هذه التعليمة ليتم إضافة التغييرات و من ثم commit ليتم تثبيتها.
  19. يمكن حل هذه المشكلة بكثير من الطرق، أسرع طريقة تعتمد على المصفوفات و حساب قوى المصفوفة، و هي طريقة معقدة قليلاً، سأشرح لك طريقة أبسط و تصلح حتى لو أردت إيجاد رقم فيوناتشي المليون. في حال أردنا فقط حساب رقم واحد يمكن الاستغناء عن التخزين، لكن سأفرض أنك تريد برنامج سريع لإيجاد أي رقم فيبوناتشي بين ال 1 و المليون، عندها يمكنك تهيئة مصفوفة طولها مليون (أو مصفوفة فارغة في حال كنت تستعمل مصفوفة ديناميكية). نهيأ المصفوفة عند الدليل 0 بأول عدد فيبوناتشي و هو ال 0، و نهيأ المصفوفة عند الدليل 1 بثاني عدد فيبوناتشي و هو ال 1، ثم نقوم بالمرور بحلقة و في كل مرة يكون العنصر i هو مجموع العنصرين i-1, i-2 و الذين موجودان حتماً. مثال عن طريق البايثون: def f(): a = [0, 1] for i in range(2, 1000000): a.append(a[i-1] + a[i-2]) return a fib = f() # الآن يمكننا الوصول إلى أي عدد كما يلي print(fib[1000])
  20. ضمنها، تذكر في حال أدخل المستخدم حرف A يجب عليك اختبار العدد فيما إذا كان زوجي أو لا، قم بكتابة ال switch و ستدرك ذلك بسهولة.
  21. الشروط الأساسية التي تختبر الحرف المدخل يجب أن تكون باستعمال switch حسب ما تم ذكره في السؤال، و لكن ستحتاج ال if لاختبار فيما إذا كان العدد المدخل زوجي أم فردي.
  22. سأشرح لك الفكرة العامة و من فضلك قم بمحاولة تطبيقها و مشاركة النتائج هنا في حال حدوث خطأ لمساعدتك، إعطاءك الكود مباشرة كما سبق و قلت لك لن يفيدك بشيء. إن تعليمة switch يمكنك معرفة كيف تكتب ببحث صغير على غوغل أو بالرجوع لمقالات حسوب. قبل تعليمة switch علينا أخذ الرقم من المستخدم، ابحث عن تعليمة الإدخال في حال لم تكن تعرف كيفية كتابتها. بعد ذلك قم بإدخال حرف من المستخدم، بنفس الطريقة السابقة و لكن هنا حرف بدل رقم. يمكنك الآن كتابة تعليمة switch للحالات المطلوبة، يمكن اختبار فيما إذا كان عدد زوجي أو فردي باختبار باقي قسمة العدد على 2، فإذا كانت صفر يكون زوجي و إذا كانت 1 يكون فردي. الحالات البقية سهلة فهي مجرد عملية ضرب. يمكنك طباعة النتيجة باستعمال تعليمة الطباعة، يمكنك البحث عن كيفية كتابتها أيضاً كما سبق و ذكرت. قم بمحاولة تطبيق ما شرحته لك و شارك الكود معنا في حال حدوث أخطاء حتى نساعدك في حلها.
  23. سأشرح لك الطريقة الرياضية و بما أنك استطعت رسم الدائرة الكبيرة ستستطيعين رسم الدوائر الصغيرة بعد الشرح. سأشرح على دائرة صغيرة واحدة حالياً و من ثم سأشرح كيفية جعل الأمر على كل الدوائر. كما نلاحظ فإن القطر الخاص بالدائرة الصغيرة هو نصف القطر الخاص بالدائرة الكبيرة، و بالتالي منتصف نصف القطر هو مركز الدائرة الصغيرة، و نصف قطرها هو نصف نصف قطر الدائرة الكبيرة. بوجود المعلومات الخاصة بالمركز و نصف القطر يمكننا رسم الدائرة الصغيرة. لقد شرحت الخطوات من أجل دائرة واحدة، كيفية القيام بذلك من أجل الكثير من الدوائر يمكن القيام به عن طريق اختيار زاوية، أي الزاوية مثلاً بين نصف القطر المختار و المحور y أو x لا فرق، و من أجل كل زاوية سيكون لدينا نصف قطر و بالتالي دائرة صغيرة.
  24. من فضلك قم بمحاولة حل التمرين لوحدك، في حال حدوث أخطاء معك يمكننا مساعدتك، و لكن إعطاءك الحل مباشرة لن يساعدك على تطوير مهاراتك البرمجية و مهارات حل المشكلات لديك.
  25. في حال كان لا يهمك ترتيب الأسطر في هذا الملف، فهناك طريقة سريعة جداً، و هي أسرع ما يمكن القيام به. نقوم في البداية بجلب كافة الأسطر و وضعها في list و نقوم بترتيب ال list. ثم يمكننا المرور على list و مقارنة كل عنصر بالذي يليه، في حال كان لا يساويه نقوم بإضافته إلى list جديدة ستكون هي الإجابة النهائية، ثم يمكن كتابة هذه ال list الجديدة في الملف. هذه الطريقة هي الأفضل في حال كان لديك عدد أسطر كبير، و لكن في حال كان عدد الأسطر صغير لا فرق بين الطرق بشكل عام.
×
×
  • أضف...