في عالم رسومات السلحفاة، تعمل القدرة على التعامل مع الضغطات المتعددة على المفاتيح في وقت واحد على تعزيز تحكم المستخدم في السلحفاة الافتراضية. تتعمق هذه المقالة في تعقيدات ربط عدة ضغطات على المفاتيح معًا، وبالتالي تمكين أنماط الحركة المعقدة.
إحدى الطرق، كما اقترح المستخدم، هي استخدام وظيفة onkey()، التي تسجل وظيفة رد الاتصال المراد تشغيلها. يتم تنفيذها عند الضغط على مفتاح معين. في حين أن هذه الطريقة توفر تنفيذًا مباشرًا، إلا أنها قد تصبح صعبة عند تنسيق عدة ضغطات على المفاتيح.
يتضمن الحل البديل، الذي يقترحه المستجيب، نهجًا أكثر شمولاً. هنا، يتم تسجيل ضغطات المفاتيح في مجموعة، ويتم استخدام مؤقت لمعالجة هذه الأحداث وتطبيق أوامر الحركة المقابلة على السلحفاة. يسمح هذا الأسلوب بالتعامل مع ضغطات المفاتيح الفردية والمدمجة.
from turtle import Turtle, Screen
win = Screen()
flynn = Turtle('turtle')
def process_events():
events = tuple(sorted(key_events))
if events and events in key_event_handlers:
(key_event_handlers[events])()
key_events.clear()
win.ontimer(process_events, 200)
def add_event(event):
key_events.add(event)
def handle_events():
process_events()
key_event_handlers = {
('UP',): move_up,
('DOWN',): move_down,
('LEFT',): move_left,
('RIGHT',): move_right,
('RIGHT', 'UP'): move_up_right,
('DOWN', 'RIGHT'): move_down_right,
('LEFT', 'UP'): move_up_left,
('DOWN', 'LEFT'): move_down_left,
}
key_events = set()
win.onkeypress(add_event, "Up")
win.onkeypress(add_event, "Down")
win.onkeypress(add_event, "Left")
win.onkeypress(add_event, "Right")
handle_events()
win.mainloop()
عند الضغط على مفاتيح الأسهم، تتحرك السلحفاة في الاتجاه المقابل. يؤدي الضغط على مفتاحي الأسهم للأعلى ولليمين في نفس الوقت إلى تحريك السلحفاة بزاوية 45 درجة شمال شرقًا. يقدم هذا الأسلوب حلاً أكثر قوة لتنسيق الضغطات المتعددة على المفاتيح في رسومات السلحفاة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3