الكود يتحرك حركتين و يقف و النافذة تقفل لوحدها ما المسكلة
واحيان كتير احس الفيجوال بطئ
هناك عدة أشياء قد تسبب هذه المشكلة في الكود، وسأحاول أن أراجع بعض النقاط الأساسية:
-
الحلقة for في السطر 23: أنت تتنقل عبر turtles باستخدام range(len(turtles)-1). المشكلة هنا أن turtles[i+1] في السطر 24 قد يتجاوز عدد عناصر القائمة، مما يتسبب في خطأ خارج النطاق (“IndexError”). لحل هذه المشكلة، يمكن استخدام حلقة مختلفة تضمن ألا يتجاوز العدد الموجود.
-
تحديث الشاشة window.update(): ربما تكون هذه هي السبب في أن الكود يبدو بطيئًا، حيث إن التحديث يتم بشكل مستمر دون تأخير كافٍ. جرب زيادة الوقت في time.sleep(0.1) لتصبح مثلاً time.sleep(0.2) أو أكثر للتحكم في السرعة.
-
إغلاق النافذة المفاجئ: إذا كانت النافذة تغلق من تلقاء نفسها، فقد تكون هناك مشكلة في الطريقة التي يتم بها التعامل مع الحدث window.exitonclick()، حيث يمكن أن تتسبب في إنهاء الكود بسرعة. تأكد من أن game يتم التحكم فيه بشكل صحيح وأن الحلقة تتوقف بشكل صحيح إذا لزم الأمر.
-
تأكد من فحص متغير game لضمان أنه يتم التحكم في التوقف الصحيح للعبة.
اخي المشلكة بسيطة انت اخطات في الكود وادخلت استدارة راس الثعبان وسيره داخل اللوب فهذا سيسبب مشلكة لان الثعبان على كل قطعة سيسير بشكل مزعج ولن يعمل غالبا
فهذا هو للكود معدل الكود
while True:
for i in range(len(turtles)-1):
turtles[i].goto(turtles[i+1].pos())
turtles[-1].forward(20)
turtles[-1].left(random.choice(angles))
window.update()
time.sleep(0.1)
كما تلاحظ فاللوب هو فقط لسير القطع التي غير راس اما الراس فبعد ان تسير كل القطع يتحرك وليس كل قعطة تتحرك تحرك راس الثعبان لان هذا كما ذكرت لك سيسبب مشكلة
لا تدخل اوامر راس الثعبان داخل الفور لوب
امل ان اكون قد وفقت في الشرح واعذرنا على الاستطالة