يتضمن هذا السؤال تنفيذ القدرة على تصوير الرصاص عند الضغط على شريط الفضاء ، مع الحفاظ على حرف لاعب على الشاشة.
كان رمز Asker في البداية يواجه مشكلة حيث اختفت شخصية اللاعب عند التصوير. وذلك لأن حركة الرماية وحركة اللاعبين تم فصلها إلى حلقات مختلفة. لمعالجة هذا ، نحتاج إلى دمجها في حلقة رئيسية واحدة حيث يتم تحديث كلا السلوكيات في وقت واحد.
كانت هناك مشكلة أخرى في كسر حلقة التصوير عندما وصلت الرصاصة إلى أعلى الشاشة. الكود الأصلي يستخدم حلقة الوقت التي استمرت بلا حدود. لإصلاح هذا ، نحتاج إلى استخدام حلقة الوقت مع حالة تتحقق مما إذا كانت الرصاصة قد وصلت إلى الأعلى. &&&]
استيراد Pygame ، OS # تم حذف إعداد Boilerplate للإيجاز لاعب الفصل: def __init __ (الذات ، x ، y ، الارتفاع ، العرض): ... Def Draw (Self): ... DEF MOVE_LEFT (الذات): ... def move_right (الذات): ... رصاصة الطبقة: def __init __ (Self ، X ، Y): ... تحديث DEF (الذات): ... Def Draw (Self): ... # قوائم الرصاص الرصاص = [] # تهيئة اللاعب P = لاعب (600 ، 500 ، 50 ، 30) # حلقة اللعبة الرئيسية تشغيل = صحيح أثناء الركض: clock.tick (100) # التعامل مع الأحداث للحدث في pygame.event.get (): if event.type == pygame.quit: تشغيل = خطأ if event.type == pygame.keydown: if event.key == pygame.k_space: Bullets.Append (Bullet (P.X P.Width // 2 ، P.Y)) # تحديث الكائنات المفاتيح = pygame.key.get_pressed () إذا كانت المفاتيح [pygame.k_left]: p.move_left () إذا كانت المفاتيح [pygame.k_right]: p.move_right () ل B في الرصاص: B.Update () # تحديث موضع وإزالة الرصاصة إذا كان خارج الشاشة إذا 0: Bullets.remove (ب) # تحديث إطار D.Fill ((98 ، 98 ، 98)) ل B في الرصاص: B.Draw () P.Draw () win.update ()يتحقق ما إذا كانت الرصاصة قد خرجت من الشاشة وتزيلها وفقًا لذلك.
الرصاص ، التأكد من وجودهما على الشاشة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3