البرمجة

تحسين كود صنع اللعبة باستخدام Pygame

عند النظر إلى الشيفرة التي قدمتها، يظهر أن هناك بعض الأخطاء البرمجية التي قد تكون مسببة لمشكلة عرض الصورة لمدة قصيرة جداً. لنقم أولاً بتصحيح هذه الأخطاء ومن ثم نقدم بعض الإقتراحات لتحسين الكود.

أولًا، في الدالة bathRoom(), يجب استبدال == ب = عند استخدام drag. تكون السطرين:

python
drag == 1

يجب أن يكونوا:

python
drag = 1

ثانيًا، يجب أن تتأكد من أنك تقوم بتحديث الشاشة داخل الحلقة الرئيسية (main_loop()) بعد تغيير الخلفية لضمان أن التغيير يتم رؤيته بشكل صحيح. لذا، يجب نقل pygame.display.update() ليكون خارج حلقة الفحص if، ويجب أيضاً أن يتم التحديث في كل دورة من حلقة اللعب الرئيسية.

الشيفرة المصححة ستكون كالتالي:

python
def bathRoom(): global drag, a, b, c, d, e, f, g, h, i, j bg_bathroom = True bathroom = pygame.image.load("pou_bathroom.jpg") mouse = pygame.mouse.get_pos() click = pygame.mouse.get_pressed() gameDisplay.blit(bathroom, [0, 0]) gameDisplay.blit(pivi, [200, 80]) gameDisplay.blit(soap, (a, b)) gameDisplay.blit(shower, (c, d)) gameDisplay.blit(shop, (e, f)) if click[0] == 1 and a + soapWidth > mouse[0] > a and b + soapHeight > mouse[1] > b: drag = 1 a = mouse[0] - (soapWidth / 2) b = mouse[1] - (soapHeight / 2) if click[0] == 1 and c + showerWidth > mouse[0] > c and d + showerHeight > mouse[1] > d: drag = 1 c = mouse[0] - (showerWidth / 2) d = mouse[1] - (showerHeight / 2) def main_loop(): while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() mainScreen() mouse = pygame.mouse.get_pos() click = pygame.mouse.get_pressed() if click[0] == 1 and x + bathWidth > mouse[0] > x and y + bathHeight > mouse[1] > y: bathRoom() pygame.display.update() # الشيفرة المستمرة...

يرجى التأكد من تحديث الشاشة بشكل صحيح وتصحيح الأخطاء المذكورة أعلاه.

المزيد من المعلومات

لتحسين الكود وجعله أكثر فعالية ووضوحًا، يمكن اعتماد بعض الإجراءات والتعديلات. قد تكون هذه المقترحات مفيدة:

  1. استخدام دوال منفصلة:
    قد تكون مناسبة إنشاء دوال منفصلة للعمليات المختلفة، مما يسهل قراءة الشيفرة وصيانتها. على سبيل المثال، يمكن إنشاء دالة للرسم على الشاشة ودالة للتفاعل مع الفأرة.

  2. استخدام الثوابت:
    قد تسهل استخدام الثوابت في المكان المناسب على فهم الشيفرة. مثلا، يمكن تعريف الأبعاد والمواقع كثوابت.

  3. التفاعل مع الزر بشكل أفضل:
    يمكنك استخدام pygame.MOUSEBUTTONDOWN بدلاً من pygame.mouse.get_pressed() لتفادي مشاكل الاستجابة.

  4. تجنب الاستخدام الزائد للـ Global:
    استخدم الـ parameters في الدوال بدلاً من استخدام الـ global variables قدر الإمكان لتحسين إدارة الحالة.

  5. التحقق من الأحداث داخل دالة الشاشة الرئيسية:
    يمكنك تحريك التحقق من الأحداث إلى داخل الحلقة الرئيسية لتجنب مشاكل في التفاعل.

  6. إضافة تأخير بسيط:
    قد يكون من المفيد إضافة تأخير بسيط بين تغيير الخلفيات لضمان أن يتم رؤية الخلفية الجديدة بوضوح.

الكود المعدل قد يبدو كما يلي:

python
# تعريف الثوابت SOAP_WIDTH = ... SOAP_HEIGHT = ... SHOWER_WIDTH = ... SHOWER_HEIGHT = ... SHOP_WIDTH = ... SHOP_HEIGHT = ... def draw_objects(): # رسم الكائنات على الشاشة هنا def bathroom_interaction(mouse_pos): # تفاعل مع الحمام هنا def main_loop(): while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() # التفاعل مع الفأرة mouse_pos = pygame.mouse.get_pos() click = pygame.mouse.get_pressed() if click[0] == 1 and x + bathWidth > mouse_pos[0] > x and y + bathHeight > mouse_pos[1] > y: bathroom_interaction(mouse_pos) # رسم الشاشة mainScreen() draw_objects() pygame.display.update() # الشيفرة المستمرة...

هذه الإقتراحات يمكن أن تساعد على جعل الشيفرة أكثر قراءةً وصيانة، وتحسين تجربة المطور وتفاعل اللعبة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر